What Is Tag Expiration?
Tag expiration is a feature for time-based tags that automatically removes a tag from a job after a specified number of days. This is designed for recruitment scenarios where timing matters — jobs have limited availability, follow-ups have deadlines, and opportunities grow stale if not acted on promptly. When you apply a time-based tag to a job, Recruitier calculates an expiration date by adding the tag’s configured duration (in days) to the current date and time. When that date arrives, the tag no longer appears on the job. This means you do not have to remember to manually clean up your tags. The system handles it for you, keeping your job collection organized and free of outdated labels. Time-based tags effectively create a self-managing to-do list built into your job organization.How Time-Based Tags Work
Time-based tags differ from standard tags in several important ways:| Feature | Standard Tag | Time-Based Tag |
|---|---|---|
| Duration | Permanent until manually removed | Automatically removed after configured days |
| Expiration date | None | Calculated per job when applied |
| Configuration | Name + color | Name + color + days duration |
| Behavior on job | Stays until you remove it | Stays until expiration date, then disappears |
| Re-application | Reapplying has no effect (already present) | Reapplying starts a new expiration period |
Creating a Time-Based Tag
Enable Time-Based Setting
Toggle the “Time-Based” option to on. This reveals the duration field, which is required for time-based tags.
Set the Duration
Enter the number of days the tag should remain active when applied to a job. Choose a duration that matches your actual workflow rhythm:
- 1-3 days for urgent follow-ups that need immediate action
- 5 days for business-week deadlines
- 7 days for weekly review cycles
- 14 days for bi-weekly check-ins
- 30 days for monthly pipeline reviews
- 90 days for quarterly assessments
Name and Color
Give the tag a name that reflects its time-bound nature. Include the duration in the name so you know what to expect without checking settings. Examples: “Follow Up 3 Days,” “Review This Week,” “30-Day Pipeline.” Choose a color that signals urgency — warm colors like orange or red work well for short-duration tags, cooler colors for longer ones.
The
days_duration field is required for time-based tags and is not applicable for standard tags. You cannot create a time-based tag without specifying a duration. Once created, you can edit the duration, but changes only affect future applications — existing job-tag associations retain their original expiration dates.Setting Expiration Dates
When you apply a time-based tag to a job, the expiration is calculated as follows:| Job | Date Applied | Duration | Expiration Date |
|---|---|---|---|
| Senior Developer at Acme | March 1 | 7 days | March 8 |
| Frontend Engineer at Beta | March 3 | 7 days | March 10 |
| DevOps Lead at Gamma | March 5 | 7 days | March 12 |
The expiration is tied to the moment of application, not to the tag’s creation date. This means you can create a time-based tag once and apply it repeatedly, and each application starts its own independent countdown.
The Expiring Tags Dashboard
Recruitier provides visibility into which tags are approaching their expiration date, so you can take action before the deadline passes. The expiring tags view shows:- Job name — which job has an expiring tag
- Tag name and color — which tag is expiring
- Expiration date — when the tag will no longer be visible
- Days remaining — a countdown showing how much time you have left to act
Monitoring Approaching Expirations
You can view tags that are expiring within a specific timeframe using the time period filter. The available periods are:- Within 3 days — requires immediate or near-term action
- Within 7 days — include in your weekly planning session (this is the default view)
- Within 14 days — for bi-weekly planning and review
- Within 30 days — for monthly pipeline oversight
Practical Use Cases
Follow-Up Reminders
Create a “Follow Up in 3 Days” tag with a 3-day duration. Apply it to jobs after sending an initial outreach email. When the tag approaches expiration, it signals that it is time to send a follow-up message. After you follow up, apply a new instance of the tag to track the next follow-up cycle.Time-Limited Job Openings
Some jobs have explicit application deadlines. Create a tag like “Closes in 14 Days” and apply it when you discover a time-limited opportunity. The expiration reminds you to complete your candidate submission before the deadline passes.Candidate Availability Windows
If a candidate is available for the next 30 days, tag relevant jobs with a “Candidate Available 30 Days” tag. As the tag nears expiration, you know the window is closing and it is time to either make placements or have a conversation about extending availability.Weekly Review Cycles
Create a “Review This Week” tag with a 7-day duration. Apply it on Monday to the jobs you plan to work on that week. Any you have not addressed by the following Monday will lose the tag, prompting a re-evaluation of whether those jobs still deserve attention or if your priorities have shifted.Post-Interview Follow-Up
After scheduling an interview for a candidate, tag the job with a “Post-Interview Follow-Up” tag set to expire 2 days after the interview date. This ensures you remember to check in with both the candidate and the client shortly after the interview.New Job Freshness
Tag newly saved jobs with a “New - 7 Days” tag. This gives you a week to review and properly categorize each new job. After a week, the tag expires, and any unreviewed jobs naturally lose their “new” status. You can then filter for untagged jobs to find ones that slipped through your initial review.Urgent Follow-Ups
Use 1-3 day durations for items that need immediate attention. Red or orange colors create visual urgency in your job list.
Weekly Cycles
Use 7-day durations for weekly planning and review cycles. Apply on Monday, let them expire by the following week.
Monthly Reviews
Use 30-day durations for longer-term tracking. Ideal for monitoring opportunities that are developing slowly or have long hiring timelines.
Custom Durations
Set any number of days that fits your workflow. 5 days for a business week, 10 days for a sprint, 90 days for a quarterly review.
What Happens When a Tag Expires
When a tag’s expiration date is reached:- The tag is no longer displayed on the job. It effectively disappears from the job card and detail view.
- The job itself is not affected in any way — only the tag label is removed.
- The tag itself remains in your library and can be applied again to the same or other jobs.
- Re-applying the same tag to the job starts a completely new expiration period from the moment of re-application.
Combining Time-Based and Standard Tags
Most effective tagging systems use both types together:- Standard tags for permanent categorization: client names, role types, industries, skill categories.
- Time-based tags for temporary workflow states: follow-up reminders, review deadlines, availability windows, urgency markers.
Best Practices
- Match duration to workflow. Set durations that align with how you actually work. If you review opportunities weekly, 7-day tags make sense. If you check in every three days, use 3-day tags. Mismatched durations create frustration — either tags expire before you act, or they linger past their usefulness.
- Use visual urgency. Assign warm colors (red, orange) to short-duration tags and cooler colors (blue, green) to longer ones. This creates a visual “heat map” on your job list where hot colors mean approaching deadlines.
- Check expirations daily. A 30-second scan of your expiring tags each morning keeps your pipeline on track. This is more effective than relying on memory alone.
- Do not over-use. Time-based tags are most effective when reserved for genuinely time-sensitive items. If everything is “urgent,” nothing is. Reserve time-based tags for items where the timing truly matters.
- Re-apply when needed. If you did not get to a tagged job before expiration, re-apply the tag to start a new countdown. Do not feel bad about this — it is a normal part of the workflow, not a failure. Sometimes priorities shift and the follow-up needs to wait another week.
- Include duration in the name. Names like “Follow Up 3 Days” or “7-Day Review” make the expected behavior obvious without needing to check the tag settings.
Advanced
Lazy (Passive) Expiration Model
The most important technical detail about tag expiration is that it uses lazy evaluation (also called passive expiration). There is no background process, cron job, or scheduled task that periodically scans for expired tags and removes them. Instead, the expiration check happens at query time — every time tags are loaded for display. When Recruitier loads tags for a job (or for a list of jobs), the query includes a condition that filters out any job-tag associations whereexpires_at is not null and expires_at < current_timestamp. This means:
- No cleanup lag: There is zero delay between a tag’s expiration time and its disappearance. The moment the clock passes the
expires_attimestamp, the tag is excluded from the next query. - Precision to the second: The expiration is not rounded to the nearest day or hour. If a tag was applied at 10:32:15 AM with a 3-day duration, it expires at exactly 10:32:15 AM three days later.
- No database writes on expiration: Expired associations are not deleted from the database when they expire. They are simply filtered out of query results. This means the historical record of “this tag was applied to this job from date A to date B” is preserved in the database, even though it is not visible in the UI.
Re-application Behavior
When you re-apply a time-based tag to a job where it previously existed (and expired), the system creates a new junction record with a newcreated_at and new expires_at. The old expired record may still exist in the database but is invisible due to the expiration filter. The new record starts a completely fresh countdown.
Editing Tag Duration After Creation
If you change thedays_duration of an existing time-based tag, the change only affects future applications. Any jobs that already have the tag retain their original expires_at timestamps. This is because the expiration is stored on the job-tag association, not recalculated from the tag’s current duration.
For example, if you have a 7-day tag and change it to 14 days, jobs tagged before the change still expire after 7 days. Only newly tagged jobs will expire after 14 days.
Interaction with Batch Operations
When batch-applying a time-based tag, each job in the batch receives its own individualexpires_at calculation. Since the batch processes jobs sequentially (though very quickly), each job’s created_at is technically a few milliseconds apart. In practice, this difference is negligible — all jobs in a batch will expire within the same second.
Interaction with Tag Deletion
If you delete a time-based tag, all its associations (including expired ones and still-active ones) are removed through cascading deletion. This means the tag and all its history are permanently removed, regardless of expiration status.Connection to the Expiring Tags Dashboard
The expiring tags dashboard queries all non-expired time-based tag associations and calculates the remaining time for each. It sorts byexpires_at in ascending order (soonest expiration first) and can filter by time horizon (today, 3 days, 7 days). This query is efficient because the expires_at column is indexed.
Edge Cases
- Zero-day duration: Setting a duration of 0 days means the tag expires immediately upon application. This has no practical use and should be avoided.
- Very long durations: Durations of 365+ days are technically valid but defeat the purpose of time-based tags. If you need a tag to last that long, consider using a standard tag instead.
- Timezone handling: Expiration is calculated and evaluated in UTC. The displayed countdown in the UI is converted to your local timezone for readability.
- Clock sync: Since expiration is evaluated at query time against the server clock, client-side clock differences do not affect expiration accuracy. A tag that “should” be expired will be filtered out regardless of what time your browser thinks it is.

