Roster — recurring templates vs week-specific overrides
Set a default working pattern that repeats forever, then override individual weeks for leave or one-off shifts.
The roster has two layers. The recurring template is "this is what every week looks like by default". A week-specific override is "this one week is different". The slot grid combines them every time it's rendered — override beats template.
This split saves you from re-entering the same shifts every week, while still letting you handle real life (sick days, leave, public holidays).
The recurring template
Each staff member has one row per day-of-week in their template. Default behaviour: 9–5 Mon–Fri, off Sat–Sun. Set under Team → Roster → {Staff member}.
Each row has:
- Working toggle — off means they don't work that day at all.
- Start / end times — when they're available for bookings.
- Location — for multi-location tenants, which location this row applies to. A staff member can have different rows for different locations.
The template applies to every future week unless an override exists.
Week-specific overrides
To change just one week — leave, training, a one-off Saturday shift — open Team → Roster → {Staff} → Week and pick the Monday of the week you want to override.
The week shows the same 7 rows but with a "Override" toggle on each. Toggle on, edit start/end/working, save. The template is preserved; the override is added as a separate row tagged with that week's start date.
When the slot grid renders for any day in that week, it picks the override row first. The template only kicks in for days the override doesn't touch.
Common patterns
Christmas leave (2 weeks off)
- Open the Monday of the first week. Toggle override on every day, set Working = off.
- Repeat for the Monday of the second week.
- The template (their normal Mon–Fri) stays unchanged. After the leave they're back to normal automatically.
One-off Saturday for a wedding
Their template has Saturday Off. Open that specific week's roster, toggle the Saturday override on, mark Working with the right hours. The other days of that week follow the template untouched.
Permanent schedule change
Don't use overrides — update the template directly. The change applies to every future week. (Past weeks keep their override-or-template snapshot intact, so reports stay accurate.)
Late shift one day a week
Their template has Friday 9–5. Add a override for one specific Friday with hours 13–21 and they appear in late-evening slot grids only for that week.
Editing past weeks
Past-week edits are blocked by default — you can't retroactively change a roster row that's already been used to generate bookings. If you need to fix a historical record, open the Audit Log under Reports and contact platform support for a manual edit.
Bulk operations
The roster page has a bulk mode for multi-staff editing — useful for shop-wide closures (full-team training day) or seasonal openings (everyone-on-Saturday in December). Tick multiple staff, click Apply override, set the values, save.
What this does for slot generation
The availability pipeline (the engine behind /booking and the calendar) reads roster rows for each booking attempt:
- Look up the override row for that staff + day + location + week
- If an override exists with
is_working = true, use those hours - If an override exists with
is_working = false, that staff is OFF this day (template ignored) - If no override, fall back to the template row
- If no template row, the staff is unavailable
There's also a tenant-wide setting (Settings → Booking → "Allow Bookings on Days With No Roster") that tells the system to fall back to business hours for unrostered staff. Useful for solo / casual shops; off for everyone else.