Skip to main content

Setting up on-call schedules

This is done on the web dashboard, not the iOS app. Navigate to Settings → On-call schedules (or from Alert Notifications, click On-call schedules).

Create a schedule

  1. Click New schedule.
  2. Name it (e.g. "Security primary").
  3. Pick a timezone — your browser's timezone is pre-filled. This determines when shifts hand off.
  4. Choose a cadence:
    • Daily — new primary every day.
    • Weekly — new primary each week; choose a hand-off day.
    • Custom (hours) — fixed-length shifts (e.g. 12 h) for 24/7 coverage split between two people.
  5. Set a handoff time of day. Example: weekly + Monday + 09:00 means the new primary picks up at 9 AM local on Monday.
  6. Pick an anchor — the exact instant the rotation begins. The engine counts shifts from here.
  7. Add members in rotation order (top of the list is on call first). Use the up/down buttons to reorder.
  8. Optionally set an escalation target and delay — if the current primary doesn't acknowledge within N minutes of being paged, the escalation target is paged too.
  9. Leave Active checked and save.

Vacation / swap overrides

From the schedule card, overrides can replace the scheduled primary for a time range (e.g. "Carol covers for Alice, Apr 14–18"). The latest accepted override wins if two overlap.

Currently overrides are added via the API — a UI for them is on the roadmap. An admin can script it with:

POST /api/v1/admin/on-call/overrides
{
"scheduleId": "...",
"startAt": "2026-04-14T09:00:00Z",
"endAt": "2026-04-18T09:00:00Z",
"overrideUserId": "carol-uuid",
"reason": "Alice OOO"
}

Making a schedule show up on iOS

Members of an active schedule automatically see it on the iOS On-call tab — both the current on-call row for every schedule and their own upcoming shifts.