On-Call Rotation: How to Design a Schedule for Small Teams
DevOps Engineering

On-Call Rotation: How to Design a Schedule for Small Teams

Rotation types, team-size math, escalation rules and a schedule template for small engineering teams.

Arthur Azrieli

0 min read

An on-call rotation is a schedule that names one engineer (the primary) to answer production pages for a fixed period, usually one week, with a secondary as backup and a clear escalation path above them. For a small team, the right rotation is weekly primary and secondary, paging only on customer impact, with written handoffs and runbooks.

You do not need a Site Reliability Engineering (SRE) team to run on-call well. You need named owners, a schedule people can actually sustain, alerts that only fire when a human must act, and an escalation policy that gets the right person involved without a debate at 3 a.m. This guide covers each of those for teams of 3 to 15 engineers: rotation types, team-size math, escalation rules, paging hygiene, handoffs, compensation and tooling, plus a schedule template you can copy.

On-call rotation basics: primary, secondary and escalation

Every working rotation has the same three layers, whatever tool you use:

  • Primary on-call: receives every page first, acknowledges it, and owns the first response: triage, mitigation, and calling for help.
  • Secondary on-call: is paged automatically if the primary does not acknowledge in time, and joins any incident that needs a second pair of hands.
  • Escalation contact: usually an engineering lead or CTO, who joins for customer-facing outages, security incidents, and decisions with business risk such as rolling back a migration or putting the product into read-only mode.

A shift is the period one person holds the primary pager. The rotation is the order in which people take shifts. The schedule is the rotation laid out on a calendar with overrides for holidays and sick days. When people search for "on call schedule" they usually want the last one, so there is a template further down.

Rotation types compared

Pick the rotation type from your team size and where your engineers live, not from what a large company does. These are the patterns that work in practice:

Rotation typeHow it worksGood forWatch out for
Weekly primary onlyOne person holds the pager for 7 days, then hands overTeams of 3 to 4 with low page volumeNo backup when the primary is unreachable; burnout if pages are frequent
Weekly primary and secondaryThis week's secondary becomes next week's primaryMost teams of 4 to 10Each person holds a pager 2 weeks out of every N
Business hours plus best effortFormal paging only during working hours; nights are best effort or limited to SEV1Very small teams, B2B products with daytime usageMust be agreed with leadership and reflected in customer commitments
Weekday and weekend splitOne person covers Monday to Friday, another covers the weekendTeams where weekend load is low but non-zeroWeekend shifts feel heavier; rotate them fairly
Follow the sunTwo or three regions each cover their own daytime, 8 to 12 hours eachTeams spread across time zones with at least 2 to 3 people per regionHandoff quality between regions becomes the main failure point
Service-based rotationsEach team carries its own pager for the services it ownsOrganizations with several product teams and clear ownershipNeeds a cross-team escalation path for shared infrastructure

Default recommendation for a startup: weekly primary and secondary, handover on a weekday morning (never Friday evening or Monday 9 a.m.), with paging limited to customer impact. Move to follow the sun only when you genuinely have people awake in another region.

How many engineers you need for a sustainable rotation

Rotation math is simple, and it is the most common thing teams get wrong. With a weekly rotation of N people, each person is primary one week in N. Add a secondary and each person holds a pager 2 weeks in N.

Engineers in rotationPrimary weeks per year (each)Pager weeks per year with secondary (each)Verdict
22652Not sustainable for 24/7. Use business hours only.
3about 17about 35Fragile. One vacation breaks it.
41326Workable if pages are rare.
6about 9about 17Comfortable for most startups.
86.513Healthy for 24/7 from one site.

Google's SRE book gives two reference points that hold up well outside Google: on-call should take no more than 25% of an engineer's time, and a 24/7 rotation from a single site needs at least eight engineers (six per site for a two-site follow-the-sun setup). It also suggests a ceiling of about two incidents per 12-hour shift, because each real incident takes hours once you include the follow-up. See Being On-Call in the Google SRE book.

If you are below those numbers, that is normal for a startup. Compensate by narrowing what pages (customer impact only), shortening the paging window, and widening the rotation: include every engineer who ships to production, not just the "infra person".

Severity levels and paging rules

Paging rules decide whether on-call is tolerable. Agree on severity before the first bad night, then map each level to a response:

SeverityExampleResponse
SEV1Checkout, login or the core API is down for most users; data loss risk; security incidentPage primary immediately, 24/7. Escalate to secondary after 5 minutes without acknowledgement.
SEV2Partial degradation, one region or a subset of customers affected, a critical background job stoppedPage during the agreed coverage window; otherwise notify the on-call channel.
SEV3Elevated errors below customer impact thresholds, a flaky job, a degraded internal toolTicket for the next working day. Never pages at night.
SEV4Noisy alert, cleanup, known bugBacklog.

The 5 minute acknowledgement for user-facing services and around 30 minutes for less time-critical systems match the response targets in the Google SRE book. Pick numbers your team can meet consistently; a promise of 5 minutes that is missed every second weekend is worse than an honest 15.

Every page should pass three tests: it reflects customer impact or imminent risk of it, the on-call engineer can take a concrete action, and the alert carries enough context to start (service, environment, severity, dashboard link, runbook link, recent deploys). "CPU above 80% for 5 minutes" usually fails all three. "Login error rate above 2% for 5 minutes in production" passes. If your team already ignores alerts, fix that before building the rotation; our guide to handling alert fatigue covers how.

The three tests a page must pass: customer impact or imminent risk, a concrete action for on-call, and enough context to start such as runbook link, dashboard link and recent deploys. CPU above 80% for 5 minutes fails all three; login error rate above 2% for 5 minutes in production passes.
An alert that fails any of the three tests belongs in a ticket or the backlog, not on someone's phone at night.

Escalation policy example

An escalation policy is the ordered list of who gets paged, and when, if nobody acknowledges. Write it down in your paging tool and in the runbook. A good default for a small team:

Escalation policy: production-critical
Level 1: current primary on-call
         page by push + SMS + phone call
         escalate if not acknowledged in 5 minutes
Level 2: current secondary on-call
         escalate if not acknowledged in 10 minutes
Level 3: engineering lead (or CTO)
Repeat:  restart at level 1 up to 2 times

Escalation policy: business-hours
Level 1: current primary on-call, push notification only
         Mon to Fri, 09:00 to 18:00 local time
Outside hours: post to #oncall, create a ticket

Also write down when the primary should escalate by choice, not just by timeout: the incident affects paying customers, the failing component is not clear after 15 minutes, a rollback risks data inconsistency, the fix needs access the primary does not have, or the same alert keeps firing after mitigation. Escalating early is a skill, not a failure.

Escalation ladder: level 1 primary on-call paged by push, SMS and phone call, level 2 secondary on-call after 5 minutes without acknowledgement, level 3 engineering lead or CTO after 10 more minutes, repeating from level 1 up to 2 times.
Each level only gets paged when the one before it stays silent, so a missed page never ends with nobody responding.

On-call schedule template

Copy this for a six-person team running weekly primary and secondary, with handover on Wednesday at 10:00. Wednesday handovers keep both people at work for the handoff and avoid starting a shift on a weekend.

Week starting (Wed 10:00)PrimarySecondaryNotes
Week 1Engineer AEngineer B
Week 2Engineer BEngineer C
Week 3Engineer CEngineer DRelease freeze, extra care
Week 4Engineer DEngineer E
Week 5Engineer EEngineer FPublic holiday Thursday: override to Engineer A
Week 6Engineer FEngineer A

Rules that keep it fair: swaps are allowed if both people agree and the tool is updated, holidays are distributed across the year, nobody is primary two weeks in a row, and new joiners shadow one full shift as an extra secondary before taking primary.

Four weeks of a primary and secondary rotation with Wednesday 10:00 handovers: Engineer B is secondary in week 1 and primary in week 2, Engineer C secondary in week 2 and primary in week 3, and so on, so nobody is primary two weeks in a row.
Each engineer spends a week as backup before taking the pager, so they start their primary week already aware of what is going on.

Handoff checklist

A five-minute handoff prevents most "nobody told me" incidents. The outgoing primary posts this in the on-call channel:

  • Incidents and pages from the past shift, and anything still open.
  • Deploys, migrations or config changes that changed production behavior.
  • Known degraded dependencies, temporary alerts, or silenced monitors (with expiry).
  • Upcoming risky work: launches, load tests, database maintenance.
  • Alerts that fired but were not actionable, so they get fixed instead of ignored.

Runbooks and access for the person holding the pager

The on-call engineer should never need to ask "am I allowed to roll this back?" Write runbooks for the incidents you can predict, starting with the top five by frequency: roll back a bad deploy, restart or scale a stuck worker, handle database connection exhaustion, investigate a spike in API errors, rotate a leaked secret. Each runbook needs symptoms, first checks, safe mitigations, risky actions to avoid, and who to call.

Access is the part teams forget. The primary needs enough access to diagnose and mitigate, but standing admin access for everyone is how incidents get worse. The pattern that works: read access to logs, metrics and cluster state for everyone in the rotation, plus time-limited elevated access (just-in-time roles, or an audited break-glass role) that the on-call engineer can grant themselves during an incident. This also answers a common question: you can remove standing production access from the team without breaking on-call, as long as the elevation path is tested before you need it.

Comparison of on-call access models: standing admin for everyone is how incidents get worse, while the pattern that works combines read access to logs, metrics and cluster state for everyone in the rotation with time-limited elevated access during an incident through a just-in-time role or audited break-glass.
Read access lets anyone diagnose, and elevation is granted only for the incident that needs it.

On-call compensation and burnout

On-call is work outside normal hours, and teams that treat it as free eventually lose their most reliable engineers. The common compensation models are:

  • Flat stipend per shift: a fixed amount for each week on primary, regardless of pages. Simple and predictable.
  • Per-incident or hourly pay: paid for time actually spent responding outside hours. Fairer when load is uneven, more admin.
  • Time off in lieu: a late-morning start or a day off after a rough night. Cheap and often the most appreciated.
  • Combination: a small stipend plus time off after any night page.

Labor rules on standby time vary by country, so check local requirements before you set a policy. Beyond money, the strongest burnout controls are operational: track pages per shift, review every night page in a weekly on-call review, and give the on-call engineer explicit permission to spend quiet shift time fixing the alerts that woke them up.

On-call tools: what each is good at

The tool matters less than the policy, but the tool should make schedules, overrides and escalations easy to see and change.

ToolStrengthNote
PagerDutyMature scheduling, escalation policies and integrationsThe reference product; cost grows with team size
incident.ioOn-call plus incident workflow inside SlackStrong if incidents already run in Slack
Grafana Cloud IRMOn-call and incident response next to Grafana dashboards and alertsNatural fit if you already use Grafana
Rootly, FireHydrantIncident management with on-call schedulingCompare their paging reliability and pricing for your size
OpsgenieLong-time PagerDuty alternativeAtlassian ended new sales on June 4, 2025 and shuts it down on April 5, 2027; plan a migration (Atlassian notice)

Whatever you choose, test it: trigger a test page to each person's phone during onboarding, confirm phone-call escalation works with Do Not Disturb on, and review the schedule for gaps every month.

Common on-call mistakes in small teams

  • One hero on permanent call. The person who built the infrastructure answers every page. It feels efficient until they leave or burn out.
  • Paging on symptoms nobody can act on. Resource alerts without user impact train people to ignore the pager.
  • No secondary. A dead phone battery becomes a full outage.
  • Handover on Monday morning. The outgoing person is already in planning meetings and the handoff gets skipped.
  • Runbooks that live in someone's head. The first incident handled by a new engineer becomes a guessing game.
  • No review of pages. The same noisy alert wakes someone every week and nothing changes.

A 30-day plan to launch on-call before you hire SRE

  1. Week 1: list your production services and name an owner for each. Agree severity levels and the paging window with leadership.
  2. Week 2: audit alerts. Delete or downgrade anything that does not pass the three tests. Add the missing customer-impact alerts (error rate, latency, failed critical jobs).
  3. Week 3: set up the schedule and escalation policy in your tool, write the top five runbooks, and set up just-in-time elevated access.
  4. Week 4: run a game day: trigger a realistic failure in staging and have the primary handle it end to end. Fix what was confusing, then go live.
Timeline for launching on-call in 30 days: week 1 name service owners and agree severity levels, week 2 audit alerts and add customer-impact alerts, week 3 set up the schedule, escalation policy and top five runbooks, week 4 run a game day in staging and go live, then review pages per shift and time to acknowledge after month one.
Alerts get fixed before the schedule goes live, so the first real shift starts with pages worth answering.

Plan to revisit after the first month: pages per shift, time to acknowledge, and which alerts woke people for nothing. When the rotation itself becomes the bottleneck, that is the signal to formalize the role; our guide on how to build a DevOps team covers that decision.

On-call rotation FAQ

What is an on-call rotation?

An on-call rotation is a repeating schedule that assigns one engineer at a time to respond to production alerts, usually for a week. A secondary backs up the primary, and an escalation policy defines who gets paged if nobody acknowledges.

How do you set up on-call rotations for a small engineering team?

Start with a weekly primary and secondary rotation that includes every engineer who ships to production, page only on customer impact, and hand over midweek with a short written checklist. With fewer than four people, limit formal paging to business hours plus SEV1 at night.

How does an on-call schedule work?

The schedule assigns shifts on a calendar, the paging tool routes alerts to whoever is on shift, and overrides cover holidays and swaps. If the primary does not acknowledge within the agreed time, the escalation policy pages the secondary, then a lead.

How long should an on-call shift be?

One week is the most common and works well for small teams because it limits handovers. Follow-the-sun teams use 8 to 12 hour shifts per region. Avoid shifts longer than a week unless pages are very rare.

Should engineers be paid for on-call?

Most companies compensate on-call through a stipend per shift, pay for time spent on incidents, time off in lieu, or a mix. Unpaid on-call with frequent night pages is one of the fastest ways to lose senior engineers, and local labor rules may require compensation.

Do I need an SRE team to run on-call?

No. Product engineers can run a healthy rotation if ownership, alerting, runbooks and escalation are in place. An SRE function becomes worth it when reliability work consistently competes with product work and the rotation is large enough to need dedicated ownership.

How many people do you need for 24/7 on-call?

Google's SRE guidance puts the minimum at eight engineers for a single-site 24/7 rotation, or six per site for two sites. Smaller teams can still cover 24/7 by keeping night paging to true emergencies and keeping page volume low.

If you need production covered before your team is big enough to carry a pager sustainably, MeteorOps provides SRE on-call support that plugs into your existing rotation and tooling.