Time-off reminder

Sends a heads-up notification to each employee on the last working day before an upcoming time-off period begins.

How it works

The reminder job runs daily and looks two weeks ahead for planned absences:

  1. Finds upcoming absences — every full-day, closed planned period that starts within the next 14 days
  2. Merges adjacent periods — consecutive absences separated only by the employee’s own non-working days (weekends, holidays, custom rest days) are merged into a single block. This avoids sending two reminders for “vacation Friday, then sick day Monday”
  3. Picks the right day — the reminder fires only when the employee’s previous working day equals today. An absence starting on a Monday triggers the reminder on Friday; one starting after a long weekend triggers on the last working day before that weekend
  4. Sends one notification — an in-app notification plus an email, deduplicated so re-running the job on the same day does not produce duplicates

Open-ended periods, partial-day periods, and periods that have already started are not eligible.

When it runs

The job runs automatically and only triggers on workspaces with at least one planned absence in the lookahead window.

Parameters

This job has no parameters. The run date is the day used to evaluate “the last working day before”.

Job results

MetricDescription
reminders_sentNumber of new reminder notifications created
reminders_no_userEmployees without a linked user account (no notification could be sent)
reminders_duplicatesReminders that were already sent for the same absence (dedup hit, expected on re-runs)
reminder_errorsFailures during processing

What the employee sees

A single notification covering the full merged block, with the relevant time-off account name when all parts share the same account, or a generic “time off” label when the block mixes different account types. The message also includes the number of working days in the absence.

Troubleshooting

IssueSolution
Employee did not receive a reminderConfirm the employee has a linked user account and that the absence is closed, full-day, and starts within the next 14 days
Reminder fired on the wrong dayThe job uses the employee’s own schedule to compute the previous working day. Custom non-working days or partial-day schedules can shift the day. Check the employee’s work-time policy and any individual schedule overrides
Two reminders for the same vacationThe merge logic only joins periods separated by non-working days. A gap that includes one working day will produce two reminders. Verify the period boundaries