Software & TechnicalFree tool
Postmortem Report From Incident Data
An incident postmortem written from your alerts, chat and logs, with a sourced timeline, the impact, the causes and an owner on every action item.
Free to start · Opens in your River workspace, ready to edit and share
How to write an incident postmortem
An incident postmortem is a written record of what went wrong, how it was fixed, why it happened and what will change so it doesn't happen again. A good one opens with a short summary and states the impact in numbers. It rebuilds the timeline from alerts, chat and logs, separates the trigger from the deeper causes, and ends with a few action items, each with one owner. It describes what people did and knew, not who to blame.
The rule that matters most: write it from the record, not from memory. Timestamps in alerts, chat and deploy logs settle what happened, so the review can focus on why.
Decide which incidents need one
Set the rule before the next incident, so everyone knows when a postmortem is due. Google's SRE book lets anyone with a stake in an event ask for one, and lists these common postmortem triggers1:
- Downtime or slowdowns users could see, past a set threshold
- Data loss of any kind
- An on-call engineer had to step in, for example with a rollback
- Resolution took longer than a set threshold
- Monitoring failed, which usually means a person found the problem, not an alert
Tie the rule to your severity levels. PagerDuty, which sells incident response software, writes a postmortem for every SEV-1 and SEV-2 incident2. If yours are vague, an incident escalation matrix defines each level and who gets called.
Name one owner as soon as the incident closes. Google's SRE Workbook advises a single owner with several collaborators3.
Build the timeline from the record
Start with the timeline; everything else rests on it. PagerDuty's process makes it the main focus at the start2 and wants every entry linked to its data, such as a graph or log search.
Collect every record
Export the incident tool's log, alert history, chat channel, deploy and config changes, status page posts and support tickets.
Put it on one clock
Convert every timestamp to one zone, usually UTC, and say which. Keep each original time beside its converted one.
Note what each time measures
Alerts usually fire after a problem starts. In one published Google postmortem3, machines were pulled from service at 16:38, but pages began only around 17:10.
Source every row
Link each entry to the alert, message or log line it came from, so anyone can settle a disputed minute.
Mark the gaps
Where the record goes quiet, say for how long and what would fill it. Never bridge it with a guess.
Time each key moment separately
Don't reduce the incident to one duration. The sample postmortem in Google's SRE book4 labels when the outage began, was mitigated and ended, and when the incident was declared and closed. Add the first alert, and each span measures one stage of the response.
Six moments from Google's sample (UTC), with the spans worked out
| Moment | Time | What it tells you |
|---|---|---|
| Impact began | 14:54 | Time zero: the outage starts |
| First alert | 14:55 | Time to notice: 1 minute |
| Incident declared | 15:01 | Time to declare: 7 minutes |
| Mitigated | 15:36 | Time to mitigate: 42 minutes |
| Impact ended | 16:00 | Total impact: 66 minutes |
| Incident closed | 16:30 | Closed after 30 minutes of normal running: 89 minutes after declaration |
Mark what made things worse. In the same sample, a responder shifted traffic back toward the other clusters at 15:32, and they began failing again a minute later. At 15:34 the team found an order-of-magnitude error in its whiteboard math for adding capacity.
Put numbers on the impact: failed requests, affected users, revenue, support tickets. Google's sample does it in one line: an estimated 1.21 billion queries lost, no revenue impact. The SRE Workbook faults a deliberately bad example whose only number was the duration3, adding that "a well-informed estimate is better than no data at all."
Find the causes, not someone to blame
Separate the trigger, the event that set the failure off, from the causes that let it happen and spread. In Google's sample, the trigger was an 88-fold jump in traffic after a new sonnet was discovered. Its root cause: a resource leak on failed searches that, under that load, set off a cascading failure.
Atlassian, which sells incident management software, separates proximate causes from root causes5. Proximate causes directly led to the incident; root causes sit where "making a change will prevent this entire class of incident." Expect more than one. Richard Cook, a physician who researched patient safety, argued there is no isolated cause of an accident6, only contributors that cause it together.
Describe each action as the person saw it then. Google's SRE book says a blameless postmortem1 assumes everyone involved "had good intentions and did the right thing with the information they had." Hindsight makes warning signs look clearer than they were, as Cook warned, so record what each responder knew and name roles, not people.
Bad postmortem: "dylanfour@ ignored the automation setup and ran the cluster turnup logic manually, which triggered an existing bug."
Good postmortem: "A longstanding input validation bug in the Traffic Admin server was triggered by the manual reexecution of a workflow to decommission the a12bcd34 satellite."
- The system is the subject. The bug does the damage, not a named engineer.
- Nothing is hidden. The manual rerun is still stated as fact.
- It points to a fix. A validation bug suggests the action: reject bad input.
Write action items that get done
The Workbook's bad example shows how action items fail: every item had the same priority, two said "Improve" or "Make better," and only one had a tracking bug3. Without tracking, it warns, action items "are often forgotten, resulting in outages."
Give each item one owner, a priority, a ticket and an end state you can check. Prefer fixes to systems over reminders to people; as the Workbook puts it, "trying to change human behavior is less reliable than changing automated systems and processes."
Atlassian asks for at least one action that mitigates or prevents future incidents5, worded to pass three tests from Google's Sue Lueder and Betsy Beyer:
Three tests for an action item
| Test | Instead of | Write |
|---|---|---|
| Actionable: a verb and an outcome | Investigate monitoring for this scenario. | Add alerting for all cases where this service returns >1% errors. |
| Specific: a narrow scope | Fix the issue that caused the outage. | Handle invalid postal code in user address form input safely. |
| Bounded: a clear finish | Make sure engineer checks that database schema can be parsed before updating. | Add automated pre-submit check for schema changes. |
Examples from Atlassian's handbook.
Then make sure they close. Atlassian gives each "priority action" a target of 4 or 8 weeks5, depending on the service, with reminders and reports. If a restore ran slower than planned, update your IT disaster recovery plan too.
How it works
Start with whatever the incident left behind: the export from your incident tool, alert emails, the chat channel, log excerpts or deploy records. River reads all of it, puts every event on one clock with its source, keeps the key moments apart and marks where the record goes quiet. Then it writes the postmortem in your workspace, with the action items in a sheet.
It never invents a time, a metric or an impact figure. Inferred rows and causal links are marked, totals show their arithmetic, and the gaps it couldn't fill are listed with what would fill them.
Paste the record
Paste or attach the chat, alerts, logs and deploy records, and pick who will read it first.
River builds the timeline
Every event goes on one clock with its source, and the record's quiet stretches are marked as gaps.
Get the postmortem
A summary, impact with its math, the timeline, causes and what made it worse, plus an action item sheet.
Close the gaps
Answer its open questions, add missing records, ask for a customer summary, and share it with your team.
What you get
- A timeline with a source on every row, and the quiet stretches in the record marked as gaps
- Six key moments timed separately, from first impact to close, with the time to notice, declare and mitigate
- Impact worked out from your alert and log data, with the arithmetic shown and estimates labeled
- The trigger, underlying cause and contributing factors kept apart, and any link it inferred marked as such
- What made the incident worse, listed apart from what ended it, and described by event, not person
- An action item sheet: one owner per row, a type, a priority and the timeline row behind it
Common questions
What is an incident postmortem?
An incident postmortem is a written account of an incident, produced once service is back to normal. It covers what users experienced, how long it lasted, how responders fixed it, why it happened and what will change. Teams also call it a post-incident review. It is a learning document, so it explains decisions in context rather than assigning fault.
How do I write a postmortem with River?
Paste or attach what you have in the box at the top of this page: the incident export, alert emails, the chat channel, log excerpts or deploy records. River puts every event on one clock with its source. Then it writes the postmortem and an action item sheet into your free River workspace, where you can edit and share them.
What if all I have is the chat transcript?
A chat transcript alone is enough to start. The chat usually holds the decisions, so River builds the timeline from it and says which rows still need a source. Add the other records later and ask River to update it. It only asks a question first if nothing you send has a timestamp.
How soon should a postmortem be written?
Aim to publish within a week, while responders still remember why they made each call. PagerDuty's process sets the review meeting within 3 calendar days of a SEV-1 and 5 business days of a SEV-2. Google's SRE Workbook faults a sample postmortem published 4 months after the incident, warning that by then the team would likely have forgotten key details.
What makes a postmortem blameless?
A blameless postmortem explains what each person did and what they knew at the time, and asks why the system allowed a mistake rather than who made it. It refers to people by role, and its action items change tools and processes instead of asking people to be more careful. River writes this way and never says someone forgot or should have known.
Is a postmortem the same as a root cause analysis?
No. Root cause analysis is one part of an incident postmortem: the work of finding why it happened. The postmortem also covers the impact, the timeline, the response and the follow-up actions. If several causes are tangled together, a root cause analysis template with a fishbone table and 5 whys helps you lay them out first.
Is the postmortem tool free?
Yes, it is free to start. Your postmortem and its action item sheet open in a River workspace, where you can edit them, share them with your team or ask River to change them. Paid plans add more AI use and access to the most advanced models.
Sources
Google SRE. “Blameless Postmortem for System Resilience.” sre.google (opens in a new tab)
PagerDuty. “Postmortem Process.” response.pagerduty.com (opens in a new tab)
Google SRE. “Postmortem Practices for Incident Management.” sre.google (opens in a new tab)
Google SRE. “Incident Postmortem Example for Outage Resolution.” sre.google (opens in a new tab)
Atlassian. “Postmortems: Enhance Incident Management Processes.” atlassian.com (opens in a new tab)
Richard I. Cook. “How Complex Systems Fail.” how.complexsystems.fail (opens in a new tab)
Built by
Chandler Supple
Co-founder & CEO, River
Chandler has spent the last six years working in AI, building tools for millions of users and Fortune 100 companies. In 2025, he co-founded River to build a new kind of operating system for AI agents.