A schedule defines who is on call and when. Schedules use rotating layers so coverage cycles through a list of users automatically — daily, weekly, or on a custom interval. Each schedule has its own timezone, and you can stack multiple layers for primary/secondary coverage or different rotation cadences.
Schedules are used by team leads to set up coverage windows, and by technicians to see when their shifts are.
Creating a Schedule
- Go to OnCall and open Schedules.
- Click Create Schedule.
- Enter a name (e.g., "After-Hours NOC") and optionally a description.
- Select the timezone that applies to this schedule. All shift times are interpreted in this timezone.
- Optionally link the schedule to a team.
- Set a start date if you don't want the schedule to go live immediately.
- Click Save — the schedule exists but has no layers yet. Add at least one layer before it will produce coverage.
Adding a Layer
A layer is a rotation within the schedule. One schedule can have multiple layers (for example, a primary and a backup).
- Open the schedule and click Add Layer.
- Add the users in the order they should rotate. The first user in the list takes the first shift.
- Set the rotation type:
- Daily — each user is on call for one day, then it rotates.
- Weekly — each user is on call for one week.
- Custom — you set the rotation length in hours or days.
- For custom rotations, enter the rotation length. For example, 12 hours gives each user a half-day shift.
- Set the layer's start date (required for custom rotations; optional for daily/weekly).
- Save. The layer begins rotating from the start date.
If you add a second layer, its coverage sits alongside the first. Both layers produce an on-call user simultaneously — useful for primary + secondary patterns.
Rotation Types
| Type | When to use |
|---|---|
| Daily | High-traffic teams where each person takes one night at a time |
| Weekly | Smaller teams where each person takes a full week |
| Custom | Non-standard cadences (12-hour shifts, 4-day rotations, etc.) |
Viewing the Current On-Call User
The On-Call Now panel on the OnCall dashboard shows who is currently on call across all active schedules. You can also open a specific schedule to see the upcoming rotation in the calendar view, which shows 7 days of scheduled coverage.
Overriding a Shift
For one-time coverage changes (PTO, last-minute swaps), use an override rather than editing the schedule itself. Overrides replace the rotation for a specific time window without changing the underlying rotation order. See ./overrides.md for steps.
FAQ
What if no one is on the schedule at a given time? If a layer has a gap (for example, it ends at midnight but restarts at 6 AM), there is no on-call user during that window. The escalation policy will still fire, but if no schedule-based target is configured, the policy's explicit user or team targets will be paged instead.
Can I have the same person in two layers on the same schedule? Yes. They will be on call as both primary and secondary during overlapping windows. Pages will reach them once (deduplication prevents double-paging).
Can I set a schedule to expire? Yes. Set an end date on the schedule. After that date the schedule becomes inactive and produces no coverage. Use this for temporary project-based rotations.
Related
- ./overrides.md — Covering a specific shift without editing the rotation
- ./escalation-policies.md — What happens when an alert fires
- ./alert-routing.md — How alerts get matched to a schedule