A Playbook for the On-Call Handoff in Slack

On-call handoffs are where incidents quietly get worse. Here is a concrete Slack playbook - fields, timing, ownership - for the shift change that most teams still do from memory.

Cover art for A Playbook for the On-Call Handoff in Slack

One team logged three dropped incidents in a single quarter, traced every one back to a bad handoff, then fixed the problem with a 15-minute structured meeting. Six months later: zero dropped incidents. That is not a hard problem. It is an unformatted one.

Handoffs fail when they rely on memory. And in most Slack-based on-call rotations, memory is exactly what they rely on. The outgoing engineer posts something like "quiet night, nothing open" and goes offline. The incoming engineer reads it at 6:08am, has no idea three alerts are silenced, and finds out at 8:30am when one of them fires.

This is a field playbook for fixing that - specific fields, a timing model, and the one structural change that eliminates most dropped context.

What belongs in an on-call handoff in Slack

The handoff post is not a summary of your shift. It is a briefing document for someone who knows nothing about the last eight hours. Five fields cover almost every case:

A complete handoff must cover: active incidents with current status and severity; silenced alerts - what is muted, why, and when it expires; upcoming deploys or risky changes the incoming engineer should know about; and relevant runbooks and dashboards as specific URLs, not "check Datadog."

The fifth field most templates omit: your working theory. Document your mental model about any ongoing problem. "I suspect the memory leak correlates with the new caching layer deployed yesterday" gives the incoming engineer a starting point rather than forcing them to build their own hypothesis from scratch. That one sentence can save 20 minutes of re-investigation at 3am.

Field What to write What not to write
Active incidents SEV level, current status, next action, DRI "working on it"
Silenced alerts Alert name, reason muted, expiry time "a few things muted"
Upcoming risk Deploy window, service name, rollback plan "some deploys today"
Runbooks Direct URL per relevant alert "in Confluence somewhere"
Working theory One sentence on what you think is happening nothing

Create a shift report at the end of every rotation, even quiet ones. A blank report is a valid report. It tells the incoming engineer the system is clean and their attention is not split.

Timing: the 15-minute window that prevents most drops

Target 15-30 minutes for the handoff. This is enough time to cover the checklist without being a burden. The dangerous assumption is that an async Slack post is sufficient. It usually is - until it is not.

A synchronous handoff call or Slack huddle catches gaps that async documentation misses. The practical compromise: post the structured Slack update 20 minutes before your shift ends. If there are active incidents or silenced alerts with reasons that are hard to type, jump on a five-minute huddle. If everything is clean, the post stands alone.

What if there is no overlap between shifts? Build it artificially. A 15-minute paid overlap where both engineers are available prevents dropped context

  • and it costs less than one dropped incident that stretches resolution time by an hour.

The "coordination tax" - time lost to logistics before actual troubleshooting begins - includes assembling the team, creating channels, finding context, and updating stakeholders. Most teams instrument the incident itself obsessively (alerts, dashboards, runbooks) but collect no data on the handoff. They have no timestamp for when context transferred, no field tracking whether the working theory was passed on, no accountability measure for handoff quality. The gap between "we had an incident" and "we had a bad handoff that extended the incident" is invisible until it costs you.

The Slack channel structure that makes handoffs findable

When an incident occurs, create a dedicated channel with a consistent naming convention - like #inc-240109-site-outage. Handoff posts belong in that same channel, not in a side thread, not in DMs, not in a generic #ops channel. Every handoff that happens inside the incident channel becomes part of the permanent record. Every message and action in Slack creates an automatic timeline of events - a chronological record that is invaluable for understanding incident progression, tracking decision points, and creating accurate post-mortem reports.

When active incidents are handed off, it is difficult to skim 3+ threads spread across several different channels. One channel per incident, one pinned handoff post per shift change, one owner named explicitly. That structure means anyone joining the channel mid-incident - a senior engineer pulled in, a manager checking status - can read from the top and understand where things stand in two minutes.

Beagle in action#inc-aug28-payment-latency, 6:55am
The ask
outgoing engineer posts the structured handoff; incoming engineer is not yet online
Beagle drafts
reads the handoff fields, checks the linked runbook and the silenced alert, drafts a brief acknowledgment with a summary of what it sees as the active risk
You approve
incoming engineer hits approve at 7:03am, the acknowledgment posts, and the handoff is timestamped and logged - no verbal confirmation needed
Do this in your workspace

Confirm that the incoming engineer has all necessary information from you before stepping away, and post a clear update in the channel when your shift ends, noting who the new point of contact is. This sounds obvious. It is skipped constantly.

Follow-the-sun handoffs need one extra field

A Follow-the-Sun model has each regional team cover their daylight hours and hand off to the next time zone, providing 24/7 coverage without overnight shifts for any single team. The handoff post that works inside one timezone often fails across them.

Engineers in different regions may have different communication styles. Write clearly and explicitly, avoiding idioms or colloquialisms. Use simple, direct language and include visual aids - screenshots, diagrams - to supplement text.

The extra field for cross-timezone handoffs: timezone-dependent behavior. Outgoing regions should flag daily patterns likely to appear during the incoming shift

  • traffic spikes, batch job windows, deployment freezes that are standard in one region and unknown in another. A European engineer handing to an Americas team should note that the payment batch runs at 14:00 UTC, which is 10:00 Eastern - not mid-afternoon, as someone might assume.

For three-region follow-the-sun coverage, each region needs visibility into what all regions documented, not just their immediate predecessor. Centralized documentation ensures incoming engineers see the full 24-hour operational picture. A single pinned Slack post per rotation that accumulates each region's update as a reply thread achieves this without extra tooling.

Handing off an active SEV-2 across timezones
Without Beagle
outgoing engineer posts "should be fine, watching latency" and goes offline; incoming engineer rediscovers the same hypothesis 40 minutes later after checking three dashboards
With Beagle
structured handoff post covers status, silenced alerts, the working theory, and the specific Datadog dashboard URL; incoming engineer is briefed before they read a single log line
3 incidentsdropped in one quarteron a team that used verbal-only handoffs
15 minenough overlap timeto transfer context without extending anyone's shift
5-10 minsaved per incidentby cutting one unnecessary coordination step
$100k+cost of most outagesper Uptime Institute's 2025 analysis

On-call handoff in Slack: common questions

What fields should an on-call handoff Slack post include?

Five fields cover most cases: active incidents with severity and next action, silenced alerts with expiry times and reasons, upcoming deploys or risk windows, relevant runbook URLs, and one sentence describing your working theory about any unresolved issue. A blank post on a clean shift is also valid - it confirms context, not just silence.

How long should an on-call handoff take?

Target 15-30 minutes. This is enough time to cover the checklist without being a burden. For busy weeks, extend to 45 minutes if needed. If shifts have no built-in overlap, engineer a 15-minute window anyway - it is cheaper than one dropped incident.

Should on-call handoffs be async or synchronous?

Async-first with a synchronous escape valve. Post the structured Slack update before your shift ends. If anything is ambiguous - a silenced alert with a complicated reason, a degraded service you are still watching - open a five-minute Slack huddle. Do not default to the call, but do not skip it when the situation calls for it.

What is the biggest mistake teams make in on-call handoffs?

Shifting without a structured transfer process. Incoming engineers then face confusion about system state, unfamiliarity with recent changes, and lack of awareness about lurking problems that need attention. The second biggest mistake: posting the handoff in the wrong channel, where it gets buried. Every handoff belongs in the incident channel it references.

How does a follow-the-sun handoff differ from a standard shift handoff?

It needs one extra field: timezone-dependent system behavior. Traffic patterns, batch windows, and deployment freezes that are second nature to the outgoing region are invisible to the incoming one. Each region's update should also accumulate in a single thread so the Americas engineer can see what APAC documented, not just what Europe wrote.

Or just watch me work

Point me at your website.

I will read up on your business and come back with what I would run for you. No account, no card, about a minute.

I only read what is public. Nothing is saved to your name until you say so.

Keep reading

Beagle does this work for you, in your Slack.1,000 free credits. No card.Hire Beagle