Incident Response Process: Step-by-Step Guide
Step-by-step incident response process: severity levels, incident commander roles, communication templates, and MTTR reduction for production teams.
Overview
At 3 a.m. an alert fires and three engineers jump on the same problem, each pushing a different fix while the status page stays silent and support tickets pile up. That’s incident response without a process: busy people, unclear decisions, and customers finding out about the outage before you tell them.
Incident response is the structured process of reacting to unplanned service disruptions. A defined process reduces mean time to resolution (MTTR), limits customer impact, and lowers the stress on responders. You’ll get the full lifecycle here — declaring the incident, assigning roles, communicating, mitigating, and closing — with templates you can copy straight into your team’s playbook. The goal isn’t a perfect document; it’s a team that runs through the same disciplined steps every time things go wrong.
When to Use
- Production outages happen without clear ownership of the response.
- Several engineers jump into incidents without coordination.
- Stakeholder communication during outages is inconsistent or missing.
- Your MTTR is trending upward or exceeding your SLO.
- You want to practice and improve response capabilities proactively.
The focus here is the response process itself. If what you need is the on-call side — rotations, paging schedules, and escalation policies — see the On-Call and Incident Response Playbook.
Core Concepts
| Concept | Description |
|---|---|
| Incident | An unplanned disruption or degradation of service |
| Incident Commander (IC) | Single decision-maker who coordinates the response |
| Severity | Impact classification (Sev1 = critical, Sev4 = minor) |
| MTTR | Mean Time To Resolution — average time to restore service |
| Communication Lead | Person responsible for stakeholder updates |
| Postmortem | Blameless review after the incident is resolved |
The structure comes from the Incident Command System used by firefighters and emergency services, adapted for software in the practices documented by the Google SRE book and commercial incident tools. The core idea transfers well: under pressure, a team needs one decision-maker and a shared protocol, not a debate.
Incident Response vs. Problem Management
Two disciplines get confused here. Incident response is about restoring service now: declare, coordinate, mitigate, verify. Problem management is the slower discipline that runs after — the postmortem, the root cause analysis, the systemic fix that prevents recurrence. Mixing them up mid-incident is how teams end up debating architecture in the war room while users are still down.
Keep the boundary explicit. During the incident, the IC’s job is service restoration; anything that smells like a permanent fix — a refactor, a schema change, a “while we’re at it” improvement — goes on the postmortem action list, not into the war room.
Incident Severity Classification
| Severity | Criteria | Response | Communication |
|---|---|---|---|
| Sev1 | Complete outage, revenue stopped, data loss | All hands, war room | Executive notification, status page, customer comms |
| Sev2 | Major degradation, core feature broken | On-call team + backup | Status page, internal channels |
| Sev3 | Partial impact, workaround available | Primary on-call | Internal ticket, no external comms |
| Sev4 | Minor issue, minimal user impact | Best effort | Track in ticket, no urgency |
Pick severity by user impact, not by how the bug looks technically. A one-line misconfiguration that takes checkout down is a Sev1; a memory leak in an internal batch job is probably a Sev3 even if the fix is complex. When the criteria feel ambiguous, rate one level higher — downgrading a Sev2 to a Sev3 costs nothing, and nobody regrets over-responding to a minor incident.
Define these levels in writing before you need them. The Incident Response Plan Template has a ready-made severity matrix you can adapt to your services.
Step-by-Step Incident Response
The full lifecycle, from the first alert to the postmortem:
1. Detect and Declare
An alert is a signal; an incident is a decision. Alerts become incidents when triage confirms real user impact and the standard runbook response isn’t enough:
## Incident Declaration Checklist
- [ ] Alert received and acknowledged
- [ ] Initial triage confirms user impact
- [ ] Severity assessed (Sev1-4)
- [ ] Incident Commander assigned
- [ ] Incident channel created (e.g., #incident-2024-001)
- [ ] Status page updated (Sev1/Sev2)
- [ ] Stakeholders notified (Sev1)
Declaration Principles
- When in doubt, declare. Downgrading is easier than catching up.
- Sev1 incidents get an Incident Commander immediately.
- Create a dedicated channel for every Sev1/Sev2 incident.
- Log start time, trigger, and initial assessment.
Detection quality matters as much as declaration speed. If alerts fire late or for the wrong reasons, declaration gets noisy and engineers learn to ignore pages. The Alert Management Guide covers how to tune that signal.
2. Assign Roles
Clear roles prevent chaos:
| Role | Responsibilities | Required For |
|---|---|---|
| Incident Commander | Makes all decisions, assigns tasks, controls scope | Sev1, Sev2 |
| Technical Lead | Investigates root cause, proposes fixes | Sev1, Sev2 |
| Communication Lead | Writes status updates, manages stakeholder comms | Sev1 |
| Scribe | Documents timeline, actions, and decisions | Sev1 |
| Responder | Executes tasks assigned by the IC | All |
What Works for Roles
- The IC doesn’t investigate directly; they coordinate.
- Only the IC speaks for the incident team to stakeholders.
- Rotate the IC if the current person has been on for more than 2 hours.
- The scribe timestamps every major action and decision.
- On small teams one person can hold two roles — usually Technical Lead plus Responder — but never combine IC with investigation.
3. Communicate Well
Communication is as important as technical response — maybe more, because stakeholders who hear nothing assume the worst:
| Audience | Channel | Frequency | Content |
|---|---|---|---|
| Response team | Incident channel | Continuous | Status, hypotheses, actions |
| Internal stakeholders | #incidents or Slack | Every 15-30 min (Sev1) | Impact, ETA, what we know |
| Executives | Email/Slack DM | Every 30-60 min (Sev1) | Business impact, recovery plan |
| Customers | Status page | Every 15-30 min (Sev1/2) | What is affected, ETA, workarounds |
## Status Update Template
**Incident:** #incident-2024-001
**Severity:** Sev1
**Started:** 14:30 UTC
**Status:** [Investigating / Identified / Monitoring / Resolved]
**Impact:** [What is broken and who is affected]
**What we know:** [Current understanding of root cause]
**What we are doing:** [Active remediation steps]
**ETA:** [Estimated time to resolution or next update]
**Workaround:** [Any available workaround for users]
Next update: 15:00 UTC
Communication Principles
- Under-promise and over-deliver on ETAs.
- Don’t speculate on root cause until you’re confident.
- Update even if nothing has changed (“still investigating”).
- Close the loop: notify when resolved, then follow up with the postmortem timeline.
For Sev1 incidents in regulated environments — fintech, health, anything handling personal data — customer communication can carry legal obligations beyond the status page. Breach notification rules (the GDPR’s 72-hour window is the best known) mean the Communication Lead should loop in legal or compliance early rather than drafting external language alone.
The Incident Communication Template gives you ready-made variants of this template for customers, executives, and support teams.
4. Investigate and Mitigate
While the IC keeps the room coordinated, the Technical Lead drives the investigation:
## Investigation Steps
1. **Confirm scope:** What is broken? For whom? Since when?
2. **Identify changes:** What deployed recently? Any config changes?
3. **Check dependencies:** Are downstream services healthy?
4. **Review logs and metrics:** Find the first error, the spike, the divergence
5. **Form hypothesis:** What is the most likely cause?
6. **Test hypothesis:** Can you reproduce or validate the theory?
7. **Implement fix:** Rollback, config change, scale up, patch
8. **Verify recovery:** Confirm metrics return to normal, user reports resolved
This split is deliberate. The IC tracks the global picture — scope, stakeholders, the next update — while the Technical Lead goes deep on hypotheses. If the IC starts debugging, nobody watches the clock or the channel; if the Technical Lead starts briefing executives, the investigation stalls. Keep the lanes separate.
Mitigation Strategies
| Strategy | When to Use | Risk |
|---|---|---|
| Rollback | Recent deployment caused the issue | Low, if tested |
| Feature flag disable | Specific feature is broken | Very low |
| Scale up | Capacity exhaustion | Low, but may mask root cause |
| Circuit breaker | Dependency is failing | Low, degrades functionality |
| Traffic shift | Regional or deployment issue | Medium, requires prep |
| Manual intervention | Data corruption, complex state | High, requires expertise |
Mitigate first, diagnose second. If a rollback restores service in five minutes, take it — the forensic investigation can run on the broken version in staging while users are happy.
5. Resolve and Close
An incident isn’t over when the fix ships. It’s over when you can prove it:
## Resolution Checklist
- [ ] Service fully restored and verified
- [ ] Monitoring shows green for 15+ minutes
- [ ] Status page updated to "Resolved"
- [ ] Final communication sent to stakeholders
- [ ] Scribe has complete timeline documented
- [ ] Postmortem scheduled within 48 hours
- [ ] Incident formally closed in tracking system
Resolution Principles
- Don’t close until monitoring confirms the recovery — reopening a resolved incident destroys credibility faster than the outage did.
- Keep the incident channel open for 24 hours for follow-up questions.
- Schedule the postmortem before memory fades; details decay within days.
- Track MTTR and incident frequency as operational metrics.
6. Hand Off in Long Incidents
Incidents that run past two hours need a rotation plan, not heroes. A tired IC makes bad calls, and an investigation that survives a sloppy handoff loses hours re-explaining context.
Run the handoff like this:
- Outgoing IC writes a state summary: current severity, what’s known, what’s ruled out, actions in flight, and when the next stakeholder update is due.
- Incoming IC reads it back and asks questions until they can retell the story. Only then does command transfer — announce it in the incident channel, not in DM.
- Scribe and Communication Lead rotate on the same boundary so the timeline and external comms stay coherent.
- For follow-the-sun coverage, hand off at region boundaries with a short overlap window (15-30 minutes) instead of a hard cutover.
Write the handoff summary in the incident channel, not in a DM or a doc nobody can find. Six months later, when the postmortem review asks why a decision was made, the channel log is the only source of truth you’ve got.
Rotations, paging schedules, and escalation policies live in the On-Call and Incident Response Playbook.
Incident Response Tooling
The process works with a shared doc and a chat channel, but dedicated tooling removes friction where it hurts most: paging, coordination, and customer communication.
| Category | What it does | Common tools |
|---|---|---|
| Paging / on-call | Escalates alerts to the right human, manages rotations | PagerDuty, Opsgenie, Splunk On-Call |
| Incident management | Channels, roles, timelines, and tasks in one place | incident.io, FireHydrant, Rootly |
| Status page | Public communication to customers | Atlassian Statuspage, Better Stack, Instatus |
| Feature flags | Instant mitigation without deploys | LaunchDarkly, Flagsmith, Unleash |
| Chat / bridge | Real-time coordination | Slack, Microsoft Teams, Zoom bridge |
Two rules of thumb for tooling choices:
- Automate the boring parts first: channel creation, role assignment, timeline capture, and status-page drafts. Every manual step is a step someone forgets at 3 a.m.
- Don’t let the tool become the process. A team that can’t run a Sev1 with a chat channel and a shared doc won’t be saved by more tooling.
Measuring Incident Response
What you don’t measure, you can’t improve. Track four operational metrics per incident:
| Metric | Definition | Target direction |
|---|---|---|
| MTTA | Mean time to acknowledge the alert | Down (minutes) |
| MTTD | Mean time to detect — user report vs monitoring | Down; monitoring should win |
| MTTR | Mean time to resolution — declaration to verified recovery | Down |
| Action completion | Share of postmortem action items shipped on time | Up toward 100% |
A worked example. Last quarter your team had six user-impacting incidents with resolution times of 18, 45, 27, 92, 33, and 61 minutes:
MTTR = (18 + 45 + 27 + 92 + 33 + 61) / 6 = 276 / 6 = 46 minutes
Now slice it. The 92-minute outlier was a Sev2 with no declared IC for the first 40 minutes — that single data point tells you more than the average. Review MTTR by severity, by service, and by whether a postmortem action item would have prevented the incident. Teams that track action-item completion rigorously tend to see repeat incidents drop within two quarters.
Put the numbers somewhere they get read. A monthly ops review that walks through the recent incidents — MTTR, whether declared severity matched actual impact, which action items slipped — does more for the process than any dashboard nobody opens.
Worked Example: A Sev-1 Timeline
Theory is easier to absorb as a story. This is what a well-run Sev1 looks like, minute by minute, on a SaaS platform whose API goes down:
Incident: API down, 100% of requests failing
Severity: Sev-1 (critical)
Start: 03:15 UTC
On-call: Ana (primary), Luis (secondary)
Response timeline:
03:15 - Alert fires: APIErrorRate 100% on api-gateway
03:16 - Ana receives page (PagerDuty)
03:17 - Ana opens Slack #incident-sev1, declares Sev-1
03:18 - Ana takes IC, assigns Luis as Technical Lead
03:19 - Opens bridge (Zoom), invites team lead, DBA, infra
03:21 - Luis verifies: 503 on all endpoints
03:23 - Luis checks recent deploys:
kubectl rollout history deploy/api-gateway
-> Deploy v3.2 rolled out 12 min ago
03:26 - Carlos (DBA) checks DB: connection pool 200/200
with requests queuing -> saturation
03:28 - Ana decides: rollback to v3.1 while Luis
keeps investigating in parallel
03:30 - Rollback executed: kubectl rollout undo
03:33 - API restored, errors at 0%
03:38 - Ana confirms stability for 5 min, resolves bridge
03:42 - Final status update sent; postmortem scheduled (48h)
03:45 - Scribe bot exports the channel timeline
Roles during the incident:
| Role | Person | Responsibility |
|------|--------|----------------|
| Incident Commander | Ana | Coordinate, decide |
| Technical Lead | Luis | Investigate, propose fixes |
| Communications | Luis (until 03:40, then team lead) | Update stakeholders |
| SME DB | Carlos (DBA) | Investigate database |
| SME Infra | Pedro | Verify infrastructure |
| Scribe | Bot | Timeline in Slack |
Communications:
03:19 - #status: "Investigating Sev1 API down"
03:26 - #status: "Identified: deploy v3.2 correlated with failure"
03:28 - #status: "Executing rollback to v3.1"
03:33 - #status: "API restored, monitoring"
03:42 - #status: "Incident resolved. Postmortem in 48h"
Postmortem (48h):
- Summary: API down 18 min due to defective deploy
- Impact: 50K users affected, ~$15K revenue lost
- Root cause: a migration in v3.2 introduced a query that
scanned a large table without LIMIT. Under production
load it held connections long enough to saturate the
200-connection pool and queue all other requests.
- 5 Whys:
1. Why did it go down? Connection pool saturated
2. Why saturated? A slow query held connections open
3. Why not detected? Tests didn't cover production-scale load
4. Why no load test? CI pipeline had no performance stage
5. Why? Load testing was never prioritized for this service
- Actions:
1. Require LIMIT or pagination in queries (owner: team, 1 week)
2. Add a k6 load test stage in CI (owner: platform, 2 weeks)
3. Lower max pool connections per instance to 100 (owner: SRE, 3 days)
4. Add pool saturation alert at 80% (owner: SRE, 3 days)
5. Migration review checklist for risky queries (owner: team lead, 1 week)
Lessons:
- The IC coordinates; the Technical Lead investigates
- Communicate before you have answers, not after
- Rollback is the first option, not the last
- Blameless postmortem: fix the system, not the person
- Every action item needs an owner and a date
Notice the roles: Ana never touches kubectl or the database herself. She assigns, decides, and communicates while Luis investigates. That separation is what keeps a 27-minute Sev1 from becoming a two-hour Sev1.
Runbook Skeleton
Every critical service deserves a runbook the on-call can execute half-asleep. This skeleton covers the essentials — adapt the checks to your stack:
## Service Runbook: api-gateway
### Symptoms that trigger this runbook
- Alert: error rate > 5% for 5 min, or p99 latency > 2s
- User reports of failed requests
### First 5 minutes
1. Confirm scope: which endpoints, which regions, since when?
2. Check the last deploy: `kubectl rollout history deploy/api-gateway`
3. Check dependencies: database pool, auth service, upstreams
4. Check dashboards: error rate, latency, saturation
### Mitigation ladder (try in order)
1. Rollback the last deploy if it correlates: `kubectl rollout undo`
2. Disable the suspect feature flag
3. Scale replicas if capacity-bound: `kubectl scale --replicas=N`
4. Fail over to the secondary region (requires IC approval)
### Escalation
- Sev1/Sev2: declare incident, page secondary + team lead
- No progress in 30 min: escalate to service owner
- Data corruption suspected: freeze writes, escalate to DBA on-call
### After resolution
- Paste the timeline into the incident ticket
- Schedule postmortem (Sev1/Sev2) within 48h
- Update this runbook with anything you had to discover by hand
Two rules make runbooks actually work: they’re tested in game days, and they’re updated after every incident that exposed a gap. A stale runbook is worse than none — it sends responders down wrong paths with confidence.
Keep the runbook where the incident happens: linked from the alert itself, pinned in the service channel, or next to the dashboards the on-call already watches. If reaching it takes more than thirty seconds at 3 a.m., it might as well not exist. The same goes for the status page and the escalation list — whatever the responder needs should be one click away, bookmarked inside the incident template itself.
What Works
- Practice before you need it: run game days and chaos engineering exercises so the first real Sev1 isn’t the first rehearsal.
- Mitigate before you diagnose. Restoring service buys you all the time you need to find the root cause calmly.
- One Incident Commander. Decision authority must be singular and explicit.
- Communicate on a schedule, not when there’s news. A “still investigating” update every 30 minutes keeps stakeholders out of your channel.
- The scribe’s notes are the foundation of the postmortem — write them for the person who wasn’t there.
- If the same incident happens twice, the process failed, not the people. Treat repeats as action-item debt.
Common Mistakes
- No clear IC. Several engineers giving orders creates confusion and delay.
- The IC debugging. The moment the coordinator starts investigating, the incident loses its coordinator.
- Skipping communication. Stakeholders write their own (usually wrong) story when you stay silent.
- Chasing root cause before mitigating. Users don’t care why it broke; they care that it works.
- Marking resolved too early. Closing without monitoring confirmation leads to reopened incidents.
- Postmortems that never happen. An incident without a postmortem is a lesson you paid for and threw away.
- Incident channels that grow to 40 people. Curate membership; observers can read the status page.
Variants
- Automated incident response: auto-remediation runbooks triggered by alerts — restart a hung worker, scale on saturation, trip a circuit breaker. Keep humans in the loop for anything irreversible.
- Follow-the-sun response: regional teams hand off incidents across time zones. It works only with disciplined handoffs and shared tooling.
- External dependency incidents: the outage lives at your payment provider or cloud region. Your playbook is escalation plus graceful degradation — vendor contact templates and pre-approved fallback modes.
- Security incident response: breaches and data exposure follow a different playbook — containment before communication, legal and compliance involvement, evidence preservation. See the Security Incident Response Template.
Troubleshooting
Problems that show up in the response process itself:
- Stakeholders bypass the IC and ping engineers directly. Redirect every “any update?” DM to the incident channel and answer it there once. Enforcing the single comms path is the IC’s job.
- The incident channel is too crowded to work in. Move observers to a read-only updates channel; keep the working channel to assigned roles plus SMEs the IC invites.
- Status updates keep slipping. Assign a Communication Lead, or set a repeating 30-minute reminder in the channel. Silence is itself a message — the wrong one.
- The incident outlasts the responders. Rotate at the 2-hour mark with a written handoff. A fatigued IC making decisions is an incident multiplier.
- MTTR isn’t improving quarter over quarter. Check whether postmortem action items actually ship. Recurrence, not MTTR, is the first symptom of a broken learning loop.
- Postmortems get scheduled and quietly dropped. Track them like incidents: owner, date, and a review that closes the loop.
See Also
- Companion resources — declaration and resolution checklists, the status update template, the runbook skeleton, and the full Sev-1 timeline as reusable files.
- NIST SP 800-61 Rev. 2 — Computer Security Incident Handling Guide — the canonical framework for incident handling phases.
- Managing Incidents — Google SRE Book — how Google’s incident command works in practice.
- PagerDuty Incident Response Documentation — the open-source playbook behind PagerDuty’s own process.
Conclusion
A good incident process isn’t a document — it’s a habit. Start small: pick a severity matrix, write one status update template, and run the next real incident with a declared IC and a scribe. When the postmortem lands, fold what you learned back into the runbook. Teams that iterate on this loop stop having the same incident twice — and that’s the entire point of having a process.
Frequently Asked Questions
When should I declare an incident vs. handle it as a normal alert?
Declare when user-impacting symptoms are confirmed and the standard alert response is insufficient. When in doubt, declare — downgrading is cheap, catching up is expensive.
Who should be Incident Commander?
The most available senior engineer who isn't actively debugging. The IC coordinates; they don't investigate.
How do I run a useful postmortem?
Schedule within 48 hours, focus on process and system improvements rather than blame, and give every action item an owner and a date. The Postmortem Guide covers the meeting format, and the Incident Postmortem Template gives you the document structure.
What if we cannot find the root cause?
That happens more often than teams admit. Document what you know, what you ruled out, and what you'll monitor. Some incidents stay partially unexplained — the monitoring improvements still count as progress.
How do I prepare a new team for on-call?
Start with shadowing: the new engineer shadows the rotation for two weeks without responding to pages. Then they take low-severity pages with a senior as backup, and full rotations after about a month. Provide a runbook per service and run game days in staging to practice. The On-Call Runbook Template helps structure the rotation.
Related Resources
Incident Response Plan Template
A template for incident response covering severity classification, roles, detection, containment, eradication, recovery, and post-incident review procedures.
GuideAlert Management: On-Call Alerting That Works
A practical guide to alert management: cut alert fatigue, set severity levels, design escalation policies and sustainable on-call rotations.
GuideBlameless Postmortems: Learning from Incidents Without Blame
A practical guide to blameless postmortems: timelines, root causes, follow-ups, and building a learning culture from outages.
DocIncident Communication Template
A template for notifying stakeholders during production outages with pre-drafted messages for each incident severity level and audience type.
GuideSite Reliability Engineering
A practical guide to SRE: defining SLIs, SLOs, and SLAs, managing error budgets, toil reduction, on-call rotations, and building a culture of reliability.
GuideChaos Engineering — Principles, Tools, and Safe Experiments
A practical guide to chaos engineering: build resilient systems by intentionally injecting failures. Learn the five principles, Litmus, Gremlin, and Chaos Mesh.