# Blameless postmortem

From healthcheck.wtf. Free to use, change and share.

> The examples follow one made-up incident. Acme Shop, checkout down for 47 min (made up).

## 01 · Summary

_What happened, in three sentences a new hire would understand._

Hints:

- Who, what, how long, how it was fixed.
- Three sentences.
- No jargon.

Example:

> On 12 March, checkout failed for 47 minutes because the certificate on our payments API expired. We renewed it by hand and checkout came back.

_Write yours here._


## 02 · Impact

_Who was affected, for how long, and how they found out._

Hints:

- Use numbers you can check.
- Say how users found out.

Example:

> About 1,900 checkout attempts failed between 09:12 and 09:59 UTC. Customers saw 'Payment failed'. Support received 64 tickets.

_Write yours here._


## 03 · Timeline

_Times in UTC. What we saw, what we thought, what we did._

Hints:

- UTC times.
- What we saw, thought and did.
- Include wrong guesses.

Example:

> 09:12 first errors · 09:20 alert fires · 09:24 we suspect the database (wrong) · 09:31 on-call finds the expired certificate · 09:52 new certificate deployed · 09:59 errors stop.

_Write yours here._


## 04 · What went well

_Start here. Something always did._

Hints:

- Start here.
- Name tools and habits, not heroes.

Example:

> The alert fired within 8 minutes. Support updated the status page in 10 minutes.

_Write yours here._


## 05 · What was hard

_Missing alerts, confusing dashboards, tired people at 3 a.m._

Hints:

- Confusing signals, missing docs, tiredness.

Example:

> The error said 'connection reset', not 'certificate expired'. The renewal runbook was out of date.

_Write yours here._


## 06 · Contributing factors

_Conditions, not culprits. No names, no “human error”._

Hints:

- Conditions, not culprits.
- Usually more than one.

Example:

> Auto-renewal broke when we changed DNS providers in January. Nothing checked certificate expiry dates.

_Write yours here._


## 07 · 5 Whys

_Ask "why" five times, starting from the impact. Ask why the system allowed it, never why a person did it._

Hints:

- Start from what users felt, not from the bug.
- Each answer should be a fact you can check.
- If an answer names a person, ask why the system let it happen.
- Stop when you reach something you can fix. Two chains are fine.

Example:

1. Why did checkout fail? **The payments API refused connections.**
2. Why? **Its TLS certificate had expired.**
3. Why didn't it renew? **Auto-renewal broke when we moved DNS providers in January.**
4. Why didn't we notice? **Renewal errors went to a log nobody reads.**
5. Why? **The renewal job never had an alert.** → Fix: alert on renewal errors and on certificates expiring within 14 days.

_Write yours here._


## 08 · Action items

_Each with an owner and a date. Small and real beats big and vague._

Hints:

- Owner (a team) and a date for each.
- Small and real beats big and vague.

Example:

> Alert when any certificate expires within 14 days (Platform team, 26 March). Send renewal errors to on-call (Payments team, 19 March).

_Write yours here._


## 09 · Thanks

_Name the help, not the mistakes._

Hints:

- Name the help, not the mistakes.

Example:

> Thanks to Support for the fast status update, and to the on-call engineer who joined from a train.

_Write yours here._
