Engineering Atlas › Problem Solving & Incidents (AI era)

Communicating During an Incident

12 min read · last reviewed 2026-10-17

Open in the interactive app: practice, quiz, mock interview →

In one minute

How it works

Audiences

An incident has several audiences with different needs. Responders in the incident channel need the current hypothesis, who is doing what, and decisions. Internal stakeholders (support, sales, account managers, other engineering teams) need to know what customers see and what to tell them. Executives need business impact, risk of escalation, and whether they must act, for example calling a major customer or a regulator. Customers need to know whether it is them or you, what is affected, and whether there is a workaround. Mixing these in one channel serves nobody.

The update template

A good update is short and structured:

Leave out speculation about cause, internal system names that mean nothing to the reader, and blame. "Some customers in Europe cannot complete payments. We have identified a faulty configuration change and are reverting it. Next update at 14:30 UTC." is enough.

Cadence

Severity sets the rhythm. A common scheme: SEV1 every 30 minutes internally and on the status page, SEV2 every hour, SEV3 at start and end. The cadence is a promise. Missing it signals chaos, and people start pinging responders directly. Putting the next update time in every message turns "is there news?" into "the next update is at 14:30".

Honesty and precision

Say what you know and how sure you are. "We believe" and "we have confirmed" are different statements; use them carefully. Do not promise an ETA you do not have; give the next checkpoint instead. When you get something wrong in an update, correct it explicitly in the next one. Apologise once, plainly, without hedging.

The status page

Post early. Customers are usually already seeing the failure; a status page that stays green while social media fills with reports destroys trust faster than the outage. Cloudflare's 2019 postmortem lists "We didn't update our status page quickly enough" among what went wrong (Cloudflare), and AWS's 2017 S3 summary explains that it could not update the individual service statuses on its Service Health Dashboard until 11:37 PST, two hours after the 9:37 trigger, because the dashboard's admin console depended on S3. AWS fell back on its Twitter feed and a dashboard banner, and afterwards made the console run across multiple regions (AWS).

Closing the loop

When the incident is resolved, send a final update with the duration, the impact, a one-line cause if known, and a promise of a postmortem by a date. For significant customer impact, publish the postmortem publicly.

Down the stack

Layer 1The contract

The comms process promises that each audience gets an update at least every cadence interval for the incident's severity, that the first external acknowledgement appears within a set time of declaration (often 15 to 30 minutes for customer-visible impact), that every update names a next-update time, and that statements of cause are marked as confirmed or suspected. This is measurable from timestamps: gaps between consecutive updates, time from declaration to first public post, and corrections issued.

Layer 2The mechanism

Status pages model the service as components (API, dashboard, payments, each region) with states such as operational, degraded performance, partial outage and major outage (Atlassian Statuspage), and an incident object that moves through investigating, identified, monitoring and resolved. Each state change can notify subscribers by email, SMS, webhook or RSS. Incident bots post templates into chat and remind the comms lead when an update is due. Internally, many teams use a separate stakeholder channel that only comms posts in, so executives can follow without joining the responder channel. Customer support links the status incident to tickets so agents can reply with a link instead of guesses.

Layer 3The machine

A status page sees sudden load: when a large service fails, traffic to its status page can jump by two or three orders of magnitude within minutes, so it is served as static content from a CDN with short cache TTLs rather than rendered from a database per request. It must run on separate infrastructure, in a separate provider or region, with separate DNS and authentication, so it shares no fate with the product. Email notifications pass through SMTP relays and the receiver's checks: SPF verifies the sending IP, DKIM verifies a signature over the headers and body, and DMARC tells receivers what to do when both fail. GitLab's 2017 postmortem describes the failure emails from its daily database backup job being rejected because DMARC was not enabled for them, so nobody noticed in time that the backups were failing (GitLab). SMS has per-sender throughput limits that vary by number type and carrier, so a large subscriber list can take many minutes to drain; webhooks retry with backoff when the receiver is slow.

Why it's built this way

People fill an information vacuum with guesses and direct messages, which interrupt responders, so a scheduled update is cheaper than ad-hoc answers. Different audiences need different detail, so separate channels and templates avoid both leaks of internal noise and executive confusion. Status infrastructure is needed most exactly when production is broken, so it is deliberately built on different foundations. Trust depends on candour over time, so precise, corrected and timely updates matter more than polished prose.

Diagram

flowchart LR
  IC["Incident commander"] --> CL["Comms lead"]
  R["Responder channel"] --> CL
  CL --> S["Stakeholder channel"]
  CL --> E["Exec brief"]
  CL --> SP["Status page"]
  CL --> SU["Support macros"]
  SP --> SUB["Email, SMS, webhooks"]
  SU --> T["Customer tickets"]

Worked example

An outage starts at 10:00 when 18 percent of API calls to the eu-west region fail. The incident is declared at 10:06 as SEV1 with a 30-minute update cadence.

The comms lead's tool computes compliance: with a 30-minute cadence from 10:00, updates were due by 10:30, but the first came at 10:12, so the next was due 10:42, then 11:10 after the 10:40 update, then 11:35 after 11:05, met by the 11:30 resolution. All deadlines met. A team that posted at 10:12 and then went quiet until 11:20 would have missed deadlines at 10:42 and 11:12, and support would have spent that hour answering tickets with "we're looking into it".

In the wild

Trade-offs

OptionStrengthsWeaknessesChoose when
Post publicly early, before cause is knownTrust, fewer ticketsMay turn out to be minor or wrong scopeCustomer-visible symptoms
Wait for confirmationFewer false alarmsCustomers learn from social media firstImpact is uncertain and internal
Single channel for allSimpleNoise for responders, leaks to execsVery small incidents
Separate responder and stakeholder channelsFocus and clarityComms lead must bridge themAny SEV1 or SEV2
Automated status from monitoringInstantFalse positives, no contextComponent-level health on large platforms

Pitfalls in production

Leadership lens

Check yourself

  1. Why include the next update time in every message?

    Show answer

    It sets expectations and stops people from interrupting responders to ask for news, because they know when news will arrive.

  2. Why should the status page not share infrastructure with the product?

    Show answer

    It is needed precisely when the product is failing; shared hosting, DNS or authentication would take it down at the same moment, as happened to AWS's dashboard admin console in 2017.

  3. What is wrong with "Root cause: database failure, fixed by 3pm" in a first update?

    Show answer

    It states an unconfirmed cause as fact and promises an ETA that probably is not known; both are likely to need retraction and damage trust.

  4. What does an executive update need that the responder channel does not?

    Show answer

    Business impact in money, customers or contracts, the risk of escalation, and any decision the executive must make, without the debugging detail.

Sources and further study

Primary

Systems docs

Books

Other curricula

Watch

Free resources

Open in the interactive app: practice, quiz, mock interview →