Core concepts
Schedules, shifts, rotations, proposals, approvals, and advisory flags — how the pieces fit.
On this page
OnCallRadar is a roster with a pull-request-style approval workflow — not a paging or alerting tool. These are the concepts everything else builds on.
Schedule
A schedule is one on-call rotation with its own participants, approvers, coverage rules, and an optional escalation chain. Each schedule carries its own access list, independent of the others.
Shift & rotation
A shift is one person on call for a span of time. A rotation is a repeating pattern that generates shifts forward over a horizon. Time is stored in UTC and snapped to the organization’s minimum slot (default 60 minutes); it is displayed in each viewer’s own timezone.
Proposal & approval
The published roster is the only thing viewers read, and unapproved edits never touch it. When you edit a calendar you create a proposal holding your changes. Approvers open it and see a diff: the current published calendar versus the projected result, plus each approver’s decision and any flags on the projected state.
- Quorum — a proposal applies once it has as many approvals as the schedule’s *required approvals*.
- Conflict on apply — if the published schedule changed underneath the proposal, applying fails with “schedule changed — recreate”. There is no auto-merge or rebase.
- Self-approval — your own approval only counts toward quorum if you hold the *Approve own changes* permission.
Rotation top-up (extending an already-approved rotation further into the future) auto-publishes — it’s a continuation, not a change. Changing a rotation’s definition goes through a proposal like any other edit.
Flags (advisory)
Flags surface overlaps (two people at once, if the schedule flags overlaps) and gaps (nobody on call, if the schedule requires 24/7 coverage). Flags are advisory — they never block saving or approving. Overlap is a permitted, intentional state; a gap is a valid state too, rendered explicitly rather than treated as an error.
Daily coverage alert
A schedule marked 24/7 is checked once a day: are the next 7 days filled continuously? Rotations are extended forward first, so shifts that have not been generated yet still count. If any moment in that week has nobody on call, OnCallRadar emails the people who can fix it — once a day, for as long as the gap remains.
- Who gets it — the schedule’s approvers, plus any extra recipients you pick, plus everyone eligible to be on call if you turn that on. Each person is emailed once, however many of those lists they are in.
- What it says — your own message, and the date and time the schedule is filled through (or that coverage ends right now, if nobody is on call).
- How often — at most one email per day per schedule. Fill the gap and the emails stop.
Schedules that are not marked 24/7 are never checked and never trigger these emails. Configure it all under Validation in the schedule’s settings.
Change log
Every applied change and every approval decision is written to an immutable change log — who did what, and when. Because the roster is shared with no single owner, that log is the accountability backbone.