On-call & escalation
How to Build an Effective On-Call Rotation
A practical guide to designing fair on-call rotations — coverage math, handoffs, secondary responders, escalation policies, and mistakes that cause missed pages.
On this page
On-call is how your team turns monitoring signals into human response. A good rotation is fair, visible, and paired with escalation — so alerts do not die in one person’s inbox at 3 a.m.
This guide walks through designing a rotation that works in practice, not just on paper.
What is an on-call rotation?
An on-call rotation is a repeating schedule that assigns one or more engineers as the first responder for production issues during defined time windows.
Each rotation period (often a day or week), the primary on-call is responsible for:
- Acknowledging pages within your team’s SLA
- Triage and coordination during incidents
- Escalating when they need help
- Handing off context to the next shift
On-call is not “being available forever.” It is a bounded duty with clear start, end, and backup.
Why teams use rotations
| Goal | What a rotation provides |
|---|---|
| Reliability | Someone is always designated — not “whoever sees Slack first” |
| Response time | Pages route to the current on-call, not the whole team |
| Ownership | Services have named coverage; gaps become visible |
| Fairness | Load is shared predictably across the team |
| Sleep | Only the on-call (and escalation chain) get woken up |
Without a rotation, you get hero culture, burnout, and slower response when the usual person is offline.
How much on-call is fair?
A useful target: each engineer on primary rotation no more than 25–33% of the time.
| Team size | Typical primary rotation | Approx. on-call load |
|---|---|---|
| 4 engineers | 1 week | ~25% |
| 6 engineers | 1 week | ~17% |
| 8 engineers | 1 week | ~12% |
| 3 engineers | 2 weeks | ~33% (stretch) |
If everyone is above one week in four, you are understaffed for the incident volume — fix hiring, reduce alert noise, or split schedules by domain before burning people out.
Rotation models
Weekly rotation (most common)
Everyone takes one week primary, then hands off. Simple to remember and document.
Best for: Single timezone, 4–10 engineers, moderate alert volume.
Daily rotation
Handoff every day at a fixed time (e.g. 09:00 local).
Best for: Larger teams, high volume, or when a week feels too long.
Follow-the-sun
Pass primary on-call across regions (e.g. APAC → EMEA → Americas) so no single timezone carries nights every week.
Best for: Global products with 24/7 customer impact.
Mon 09:00 APAC on-call
↓ handoff
Mon 17:00 EMEA on-call
↓ handoff
Mon 01:00 Americas on-call
↓ handoff (next day)Primary + secondary
Primary responds first. Secondary is the backup if primary is stuck, on vacation without override, or needs a second pair of eyes.
Secondary can be:
- A parallel rotation (smaller senior pool)
- The next person in the primary queue
- A separate schedule with its own rotation
Example schedule (8-person platform team)
Timezone: Europe/Zurich · Handoff: Monday 09:00 · Length: 1 week
| Week starting | Primary | Secondary |
|---|---|---|
| Jul 14 | Alex | Sam |
| Jul 21 | Blake | Casey |
| Jul 28 | Dana | Ellis |
| Aug 4 | Finn | Alex |
| Aug 11 | Sam | Blake |
| Aug 18 | Casey | Dana |
| Aug 25 | Ellis | Finn |
| Sep 1 | Alex | Sam |
Secondary rotates on the same cadence but offset — so the same person is never primary and secondary in the same week.
Handoff checklist (5 minutes)
Handoffs are where context gets lost. Do this at every rotation boundary.
Outgoing on-call
- Open incidents summarized (stage, severity, next steps)
- Scheduled maintenance in the next shift noted
- Anything flaky but not yet an incident flagged
- Contact methods still valid
Incoming on-call
- Acknowledge shift (verification ping if enabled)
- Test push / SMS / email notifications
- Know escalation policy name for your schedule
- Know where runbooks live
Escalation: rotations are not enough
A rotation tells you who is first. An escalation policy tells you what happens if they do not answer.
Minimum viable policy for production:
| Step | Target | Wait after step |
|---|---|---|
| 1 | Primary on-call schedule | 5 min |
| 2 | Secondary on-call schedule | 5 min |
| 3 | Team (notify all) | 10 min |
Acknowledgement on the incident should stop the chain. Without timeouts, a missed phone call becomes a silent outage.
See our escalation policy template for a full design worksheet.
Pair rotations with severity
Not every alert deserves the same path.
| Severity | Paging behavior |
|---|---|
| Critical / High | Page primary immediately; short escalation waits |
| Medium | Business-hours primary; optional off-hours |
| Low | No page; ticket or next-day review |
Align this with your severity matrix so on-call load matches real impact.
Common mistakes
One engineer always on call
The “person who knows everything” becomes a bottleneck and burns out. Document runbooks and spread rotation until everyone can handle tier-1 response.
No secondary responder
Primary gets sick mid-week with no backup. Always define secondary — schedule or team step.
No handoff
Incoming on-call learns about a Critical incident from the page, not the outgoing engineer. Five minutes of handoff saves thirty minutes of confusion.
Rotation without escalation
Single step, no timeout — unanswered pages never advance.
Alerts without ownership
Every monitor pages the whole team. Route through schedules and policies; use severity to filter noise.
Ignoring overrides
Vacation swaps hidden in DMs. Overrides should be visible on the schedule so coverage is auditable.
Shift verification
Shift verification pings the incoming on-call before or at shift start to confirm they are reachable.
It catches:
- Wrong phone number
- Push notifications disabled
- Engineer on PTO who forgot to set an override
Enable it for production schedules — especially after someone changes contact methods.
Overrides and vacations
Plan overrides when the rotation is published, not the hour before handoff.
| Dates | Covering | Reason |
|---|---|---|
| Aug 4 – Aug 11 | Casey (covers Alex) | Vacation |
| Aug 15 – Aug 16 | Sam (swap) | Conference |
In Incido, overrides layer on top of the rotation without rewriting the whole roster — the base rotation stays intact for when people return.
What to document per schedule
| Field | Example |
|---|---|
| Schedule name | Platform primary |
| Timezone | Europe/Zurich |
| Escalation policy | Platform production critical |
| Components covered | API, workers, dashboard |
| Out of scope | Mobile app (see Mobile schedule) |
| Runbook index | Link to wiki / repo |
Use our on-call schedule template or download the full Engineering Incident Toolkit.
Example: alert to acknowledgement flow
14:02 Monitor fires → incident created (dedup key: checkout-errors)
14:02 Escalation policy matches severity: High
14:02 Step 1: page primary on-call (Alex)
14:04 Alex acknowledges on incident timeline
14:04 Escalation stops — no step 2If Alex had not acked by 14:07, step 2 would page secondary automatically.
How software helps
Spreadsheets work until handoffs, overrides, and paging diverge. Incido materializes shifts from rotation layers, supports overrides and shift verification, links schedules to escalation policies, and records pages and acknowledgements on the incident timeline — so coverage and response stay in one system.
Start with a fair rotation and a two-step escalation policy. Improve from real incident data, not assumptions.
FAQs
How many schedules should we have?
Start with one per team or domain (platform, data, mobile). Split when alert types, timezones, or skill sets differ — not before.
Should managers be on-call?
Many teams keep managers as optional escalation steps, not primary rotation. Commanders during SEV-1 can be brought in via Bring in without changing the standing schedule.
Can on-call be business-hours only?
Yes for internal or Medium-severity paths. Customer-facing production usually needs 24/7 primary or follow-the-sun.
How do we reduce pages?
Fix noisy monitors, use severity, deduplicate incidents, and suppress auto-incidents during planned maintenance — not by removing escalation.
Use the template
Who is on call, when handoffs happen, and how overrides work — in one spec.