Blog

On-call rotation for small teams: models for 2 to 8 people, handovers, overrides and what pages at night

Rotation models for teams of 2 to 8, a handover checklist, holiday overrides, do-not-disturb hours and a simple rule for which alerts wake someone up at night.

A workable on-call rotation for small teams is a weekly primary shift with a named secondary, handed over at a fixed time on a weekday, with overrides for holidays and sick days. The schedule only stays sustainable if a strict rule decides what may page at night: customer-facing, ongoing and actionable problems page, everything else waits for a channel someone reads in the morning. The rest of this guide covers which model fits 2 to 8 people, how to run handovers and overrides, and how to sort alerts into night and morning.

Why on-call is different with only a few people

In a large organization, each engineer is on call a few weeks per year. In a team of three, you are on call every third week. In a team of two, every other week. That frequency is the defining constraint, and it changes what matters.

With a small team, the schedule itself is rarely the problem. The problem is alert volume. If a rotation of four people gets woken up twice a week by alerts that turn out to be noise, the team burns out regardless of how cleverly the rotation is designed. So treat the rotation and the paging rules as one system: the fewer people you have, the stricter the rules for night pages must be.

Which rotation model fits 2 to 8 people

2 people: alternating weeks, with a narrow night scope

Two people can alternate weekly, but only if night pages are rare. If both live in the same time zone, keep after-hours paging limited to full outages and data-loss risks. If you are in time zones roughly eight hours or more apart, a follow-the-sun split works better: each person covers their own daytime and the late evening of the other, so nobody is woken up for most incidents.

Also agree on what happens when one of the two is on holiday. With two people, a holiday means the other is on call for the whole period, so reduce the scope further during that time, for example by accepting that warnings wait until the next business day.

3 to 4 people: weekly primary plus secondary

This is the most common setup. One person is primary for a week, and the previous week's primary acts as secondary. The secondary already knows what happened recently and only gets paged when the primary does not acknowledge in time.

Week   Primary   Secondary
W1     Ana       Dana
W2     Ben       Ana
W3     Chris     Ben
W4     Dana      Chris

Everyone is primary one week in four and secondary one week in four, which leaves two quiet weeks per cycle.

5 to 8 people: split weekdays and weekends, or business hours and nights

With more people, a full week of primary duty becomes unnecessary. Two options work well:

  • Weekday and weekend shifts: one person covers Monday to Friday, another covers the weekend. Weekends are spread more evenly, and nobody has a seven-day stretch.
  • Business hours and after-hours: during working hours, whoever is on the daytime shift handles alerts while working normally. After-hours is a separate rotation, which keeps night duty rare per person.

At eight people, consider whether everyone should be in the rotation at all. Engineers who never touch production may add more escalation delay than coverage. Include people who can actually act on the services that page.

How to set up an on-call rotation for small teams, step by step

  1. Define coverage hours. Decide whether you need 24/7 coverage for critical alerts or only extended business hours. Many small SaaS products need 24/7 only for full outages, not for warnings.
  2. Pick the shift length and handover time. Weekly shifts are easiest to remember. Hand over on a Tuesday or Wednesday at a fixed time, for example 10:00, so handovers never fall on a Monday morning backlog or a Friday afternoon deploy.
  3. Name a primary and a secondary. Configure escalation: if the primary does not acknowledge within a fixed time, for example 10 to 15 minutes, the alert goes to the secondary.
  4. Route alerts to the role, not the person. Alerts should go to whoever is on call according to the schedule, never to a hardcoded phone number that someone forgets to change.
  5. Separate critical and non-critical channels. Critical alerts go to push and SMS. Warnings go to a team chat channel that is read during business hours.
  6. Set do-not-disturb hours for everything that is not critical. More on that below.
  7. Test at every handover. Trigger a test alert to the incoming primary and confirm it arrives on their phone with sound. This catches muted apps, expired tokens and wrong numbers before a real incident does.

Handover: what to pass on in 15 minutes

A handover should be short and written. Post it in the team channel so anyone can read it later. A template keeps it consistent:

On-call handover - week 23
Outgoing: Ana        Incoming: Ben

Open incidents:        none
Pages this week:       3 (2 actionable, 1 noise, ticket created)
Alerts to watch:       DB disk usage on replica, growing slowly
Risky changes ahead:   schema migration Thursday 14:00
Silenced monitors:     staging API, until Friday
Maintenance windows:   payment provider, Saturday 02:00-03:00
Upcoming overrides:    Chris covers Ben on Sunday

The most valuable line is usually "silenced monitors". A monitor muted during an incident and never unmuted is a common way to miss the next outage.

Overrides for holidays, sick days and swaps

An override temporarily replaces one person with another for a defined time window without changing the underlying rotation. Use overrides instead of editing the schedule, otherwise the rotation drifts and someone ends up on call twice in a row.

  • Holidays: enter them as soon as they are booked. Whoever covers gets the matching shift back later, recorded as a second override.
  • Swaps: two people trade shifts directly and both enter the override. No approval process needed, just visibility.
  • Sick days: the secondary takes over as primary by default, so nobody has to organize a replacement while sick. The team finds a new secondary during business hours.
  • Public holidays: treat them like weekend days. If your team spans countries, check whose holidays fall on the rotation.

Review the next four weeks of the schedule once a week, ideally during handover. Gaps are easy to fix two weeks in advance and painful to fix at 23:00.

What should page at night and what can wait until morning

The question for every alert is simple. An alert may wake someone up only if customers are affected right now, the problem will not resolve itself or will get worse by morning, and the person paged can actually do something about it. If any of the three is missing, it goes to the morning queue.

Applied to typical monitors, the split looks like this:

# Example severity rules

critical:   # pages 24/7
  - website or API down, confirmed from 2+ regions on consecutive checks
  - login or checkout check failing
  - primary database unreachable
  - disk above 90% and still growing
  - SSL certificate expires within 24 hours
  route: on-call primary via push and SMS
  escalate: secondary after 15 minutes without acknowledgement

warning:    # business hours only
  - failure from a single region
  - response time above threshold
  - SSL certificate expires within 14 days
  - non-critical cron job missed one run
  - disk above 80%
  route: team channel, reviewed at 09:00

Two details make this work. First, critical alerts need to be confirmed before they page. A single failed check from one location is not an outage; the techniques in reducing false positive alerts with multi-region checks and retries are the precondition for a calm night rotation.

Second, decide case by case for scheduled jobs. A missed nightly report can wait. A backup job that has silently stopped for days is a different story, but even then the fix rarely has to happen at 03:00. Use heartbeat monitoring for cron jobs so a missed run surfaces in the morning queue instead of weeks later.

Do-not-disturb hours without missing real outages

Do-not-disturb hours suppress notifications during defined times, typically the night and weekends. Used correctly, they protect sleep. Used carelessly, they hide outages.

The rule: do-not-disturb applies to warnings, never to critical alerts for the person on call. In practice that means:

  • Warnings are held during do-not-disturb hours and delivered in the morning.
  • Critical alerts bypass do-not-disturb for the on-call primary and, after escalation, the secondary.
  • Everyone who is not on call has full do-not-disturb, including for critical alerts. Being off rotation should mean being off.

On the phone side, check that the paging app is allowed to bypass the operating system's own focus or silent mode. This is the most common reason a correctly routed alert still goes unnoticed.

Keeping a small rotation sustainable

A rotation is healthy if night pages are rare and every one of them was worth it. A few habits keep it that way:

  • Every night page gets a follow-up. Either the root cause is fixed, or the alert is tuned, or it is downgraded to a warning.
  • Count pages per shift in the handover note. A rising number is an early sign that something needs attention before it becomes a burnout problem.
  • Same alert twice, same decision. If an alert pages twice without anyone needing to act, it is demoted.
  • Recovery time after rough nights. If someone handled an incident at night, they start late the next day. Agree on this upfront instead of negotiating at 04:00.

Setting it up with m0nitor

If you use m0nitor for monitoring, on-call schedules cover the pieces described above: team rotations, temporary overrides for holidays and swaps, and do-not-disturb hours, with alerts routed to whoever is currently on call. Alert workflows follow an if-this-then-that pattern on monitor events, so you can notify a channel, open an incident or call a webhook depending on what happened. Supported alert channels include email, Slack, Discord, Microsoft Teams, Mattermost, Telegram, Pushover, SMS, PagerDuty and ilert, which lets you send critical alerts to SMS or push and warnings to a team chat. The same principles apply with any other tool that supports rotations, overrides and severity-based routing.

FAQ

How many people do you need for a sustainable on-call rotation?

Two people can run a rotation if night pages are rare and limited to full outages. Three to four people allow a weekly primary and secondary with quiet weeks in between, which is the most comfortable setup for most small teams. Beyond that, split weekday and weekend or business-hours and after-hours shifts.

How long should an on-call shift be?

One week is the most common length for small teams because it is easy to remember and limits the number of handovers. Hand over mid-week at a fixed time. Shorter shifts, such as weekday and weekend splits, make sense once you have five or more people.

What happens if the on-call person does not acknowledge an alert?

The alert should escalate automatically to a secondary after a fixed time, for example 10 to 15 minutes. Without escalation, a single dead phone battery or muted app means nobody responds to a real outage.

Should every alert page the on-call engineer?

No. Only alerts that affect customers now, will not resolve themselves and can be acted on should page, especially at night. Warnings such as slow responses, single-region failures or certificates expiring in two weeks belong in a channel reviewed during business hours.

Product

  • Pricing
  • Features
  • Integrations
  • Security
  • Free network check

Features

  • Uptime monitoring
  • Status pages
  • Alert workflows
  • Incident management
  • Dependencies
  • AI assistant
  • Global infrastructure
  • On-call schedules
  • Enterprise SSO

Use cases

  • Websites for free
  • Cron jobs
  • SSL certificates
  • Databases
  • IP blacklists
  • GDPR compliance

Resources

  • What is a status page?
  • Documentation
  • API
  • MCP server
  • Monitoring glossary
  • Free tools
  • SLA calculator
  • SSL checker
  • DNS lookup
  • Blog
  • Changelog
  • About
  • Contact

Compare

  • Free uptime monitoring
  • UptimeRobot
  • Better Stack
  • Pingdom
  • StatusCake
  • Uptime Kuma
  • Hyperping
  • Atlassian Statuspage
  • Instatus
  • Cachet
  • Freshping