River
Y CombinatorBacked by Y Combinator

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.

Helpful to include

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.

Two men at a desk, one seated and pointing at code on a laptop while the other leans in to look
Build the timeline from what your systems logged, not from what people recall. Photo: Shamin Haky on Unsplash

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.

  1. Collect every record

    Export the incident tool's log, alert history, chat channel, deploy and config changes, status page posts and support tickets.

  2. Put it on one clock

    Convert every timestamp to one zone, usually UTC, and say which. Keep each original time beside its converted one.

  3. 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.

  4. Source every row

    Link each entry to the alert, message or log line it came from, so anyone can settle a disputed minute.

  5. 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

MomentTimeWhat it tells you
Impact began14:54Time zero: the outage starts
First alert14:55Time to notice: 1 minute
Incident declared15:01Time to declare: 7 minutes
Mitigated15:36Time to mitigate: 42 minutes
Impact ended16:00Total impact: 66 minutes
Incident closed16:30Closed 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.

ExampleThe same root cause, written two waysGoogle, The Site Reliability Workbook (2018), chapter 10; names fictionalized · Read the full case study

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

TestInstead ofWrite
Actionable: a verb and an outcomeInvestigate monitoring for this scenario.Add alerting for all cases where this service returns >1% errors.
Specific: a narrow scopeFix the issue that caused the outage.Handle invalid postal code in user address form input safely.
Bounded: a clear finishMake 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.

Review and share the postmortem

Hold the review within days. PagerDuty's postmortem meetings usually last 15 to 30 minutes2: agree on the timeline, then discuss how the problem could have been caught, the customer impact and the action items.

Invite the incident commander, responders and service owners, then publish the postmortem widely. Google's SRE Workbook praises one circulated less than a week after the incident closed3.

Customers need a shorter note: when the problem started and ended, who was affected and whether they need to act. Save the word "outage" for a full outage; PagerDuty notes customers generally see it and assume the worst. The incident status page update template includes a resolution note for this.

Before you publish the postmortem

  • A summary an outsider can read in 30 seconds
  • Impact in numbers, with how each figure was reached
  • One time zone, and a source on every timeline row
  • Each key moment timed separately
  • Trigger and causes kept apart, with no one blamed
  • Every action item has one owner, a priority and a ticket
  • Nothing that could identify a customer

Short on time? The tool at the top of this page puts your alerts, chat and logs on one clock and drafts the postmortem for you to check.

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.

  1. Paste the record

    Paste or attach the chat, alerts, logs and deploy records, and pick who will read it first.

  2. River builds the timeline

    Every event goes on one clock with its source, and the record's quiet stretches are marked as gaps.

  3. Get the postmortem

    A summary, impact with its math, the timeline, causes and what made it worse, plus an action item sheet.

  4. 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

  1. Google SRE. “Blameless Postmortem for System Resilience.” sre.google (opens in a new tab)

  2. PagerDuty. “Postmortem Process.” response.pagerduty.com (opens in a new tab)

  3. Google SRE. “Postmortem Practices for Incident Management.” sre.google (opens in a new tab)

  4. Google SRE. “Incident Postmortem Example for Outage Resolution.” sre.google (opens in a new tab)

  5. Atlassian. “Postmortems: Enhance Incident Management Processes.” atlassian.com (opens in a new tab)

  6. 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.

Reviewed by

Brian Joseff, Co-founder, River