Skip to main content
itzseo
HRMS · Phase 31.6

Configure shifts once.
Workspace runs itself.

Shift CRUD. Per-employee overrides. Grace period for late marking. Auto-close cron at shift end. Late/early flag computation on every session.

What's in a shift

5 fields. That's it.

Manage at /settings/hr/shifts.

Name

"Day Shift", "Night Shift", "Weekend Crew" — labels you pick.

Start time → End time

"09:00 → 18:00" in workspace timezone. Crosses midnight if needed.

Working days

Mon-Fri / Mon-Sat / custom (e.g., Tue-Sat for a media schedule).

Grace period

Minutes after start before a clock-in counts as late. Default 15. Configurable per shift.

Break minutes

Allowed break per session. Used to validate session lengths + paid-hours math.

Is default

One shift per workspace can be the default. Used when no per-employee override is set.

Per-employee override

Not everyone works 9-6.

Default shift covers 90% of your team. For the night-shift designer or the part-time content writer, override at /settings/team.

Workspace default

Set in the HR wizard. Applies to every employee unless overridden.

Per-employee

Override at /settings/team → click employee → assign shift. Takes effect on next clock-in.

Late/early flags

Computed on every session via lib/attendance/shift-resolver. Flag visible on personal calendar + HR overview.

Auto-close cron

For when people forget.

/api/cron/attendance-auto-close fires at shift end + grace period. Closes any still-open sessions. Marks them AUTO_CLOSED so the audit distinguishes a real clock-out from a system one. Idempotent — running twice in the same window doesn't double-close.

FAQ

Shifts questions.

Can a shift cross midnight?
Yes. Night Shift = 22:00 → 06:00 works. The shift resolver handles wrap-around — a clock-in at 22:30 counts as late by 30 min, and a clock-out at 06:15 the next morning counts as the same session.
What about flexible / no-shift teams?
Don't assign a shift. Auto-close won't fire. Late/early flags won't compute. Attendance still tracks hours, just without shift comparison. Useful for senior IC roles or async-only teams.
Does grace period count as paid time?
Yes — anyone clocking in within the grace period is considered on-time, full session length. Late flag fires only after the grace period. So 9:00 shift with 15-min grace means 9:14 clock-in = on time, 9:16 = flagged late.
Can shifts vary day-by-day?
Not in v1. A shift has one start/end time across all its working days. Variable-by-day shifts are on the roadmap if multiple agencies ask. Workaround today: create multiple shifts and rotate per-employee assignment weekly.
What if I change a shift mid-month?
The new shift applies to sessions starting after the change. Past sessions keep their original shift assignment (immutable history). Late-flag math doesn't retroactively re-compute.

Shifts. Configured.

14-day trial of the Agency tier.