There are two ways to put a shift on the calendar, and they both feed the same underlying schedule entry.
One-off (manual) shifts
Pick a date, a location, and one or more workers, each with their own start and end time. Requirements:
- At least one worker is required.
- A location is required.
- A dismissed worker can't be added — you'll see "EMPLOYEE_DISMISSED".
- A worker who marked themselves unavailable for that date can't be added either — "EMPLOYEE_UNAVAILABLE_FOR_DATE". If you need to schedule them anyway, talk to them first and have them update their availability.
One schedule per location per day
However you build it — manually or from a pattern — there is exactly one schedule entry per location per day, even if a morning and an evening rotation both land on the same point. What you see as the schedule's overall start/end time is just the envelope (earliest start to latest end) across everyone assigned that day — each worker's own actual time lives on their individual assignment, not the schedule header.
Recurring shift patterns
For repeating rotations (like a 5-days-on/2-days-off cycle), use a shift pattern instead of building days one by one — see the dedicated article on shift patterns for how they generate schedules automatically, how editing one behaves, and the protection that stops the system from overwriting a day you've hand-edited.
Cancelling vs. deleting
Removing a generated shift from the calendar is a soft cancel, not a hard delete — a cancelled shift shows struck-through rather than disappearing, so nobody mistakes an intentionally cancelled shift for one that was simply never scheduled.
One more thing worth knowing
Past schedule entries are cleaned up automatically a few minutes after they pass — this is routine housekeeping, not something you need to manage, but it explains why an old schedule row won't be sitting there indefinitely after the fact.