All tools › Closeout & Learning › Post-Mortem Template
High-Stakes

Post-Mortem Template

A post-mortem that produces decisions, not blame. Excel facilitation worksheet plus the cheat sheet to run the retrospective and convert insights into the next program's operating model.

$39 one-time, instant download
✓ Excel retro worksheet · ✓ Blameless facilitation guide · ✓ PDF cheat sheet
Buy Now, $39
Secure checkout via Gumroad · 30-day refund
Or get all 17 PM tools for $99 ($533 value). The full toolkit ships every template in the catalog: status reports, RAID logs, charters, OKRs, and more. See what's in the bundle ›
Premium · Includes the playbook
★★★★★ The Director's Playbook is rated 5.0 on Gumroad.
Already buying the bundle? Add the book for $30 more. The Director's Library bundles The Director's Playbook (the book) with the full 17-tool toolkit for $129. Same tools, plus the operating manual that ties them together. View the Library, $129 ›

What's in the download

Post-mortem worksheet (Excel)

What happened, what worked, what didn't, what we'd change. Structured to produce decisions, not narratives. Each finding maps to an owner and an action, not a recommendation.

Blameless facilitation guide

How to run the session so people are honest about what went wrong without performative self-flagellation or finger-pointing. The hardest skill in retrospectives is creating the conditions for truth-telling.

Action conversion template

A retro that produces 'we should communicate better next time' is theater. This template forces every finding to convert into a specific change: process, role, artifact, or cadence.

Use forever, no subscription

One purchase, yours to keep. Use it on every program, customize for your team. Works in Excel and Google Sheets.

Why most post-mortems produce nothing

Most retros run hot for an hour, generate a long list of "learnings", get summarized into a deck nobody reopens, and the next program repeats the same mistakes. The pattern isn't because PMs are lazy. It's because the format invites narrative instead of decision.

A post-mortem is only useful if it changes the next program. That means the output isn't "what we learned", it's "what we'll do differently, who owns it, when it lands." Anything less is a writing exercise.

"A retro that doesn't change the operating model is theater. The artifact is the change, not the document."

This template structures the retro to produce ownership and changes, not narrative. The facilitation guide covers how to run the session so the team is honest without descending into blame.

Blameless ≠ consequence-free

The phrase "blameless post-mortem" gets misused. People hear it as "we don't talk about who did what." That's not the discipline. The discipline is:

Pair the post-mortem with the pre-mortem template on your next program, comparing what you predicted vs. what actually happened is one of the highest-leverage learning loops in program management.

A worked example: findings that became changes

The difference between a retro that produces "learnings" and one that changes the next program is visible in the output format. Three rows from a real closeout:

Finding Root cause The change Owner Due
UAT found 40% of all defects in the final two weeksTest environment wasn't production-like until week 10Environment parity becomes a phase-gate criterion before UAT entryR. Vance, QA leadNext kickoff
Two workstreams built the same reconciliation logicNo cross-workstream design review existedDesign review added at the 30% build mark, both leads requiredD. Silva, Eng leadOct 1
The vendor escalation took nine days to reach a decisionNo escalation path was named in the SOWEscalation path, with names and response times, required in every SOWM. Grant, PMOImmediate

Notice what's absent: no "improve communication," no "align earlier." Every row converts a finding into a specific change with a named owner and a date. That conversion is what the worksheet's action template forces.

Building a post-mortem worksheet in Excel

Most post-mortem files are one long sheet of prose sitting in cells. It reads like minutes, it gets exported into a deck, and the deck is the last time anyone opens it. The fix is structural, and the structure is three tables in a deliberate order. Here is how the post-mortem template Excel worksheet is built, and why the order is not the obvious one.

The decisions table goes first, on sheet one, above everything else. The obvious order is timeline, then discussion, then actions, because that is the order the meeting runs in. It is the wrong order for the file. Whoever opens this in four months is looking for exactly one thing: what changed. Timeline goes on sheet two. The narrative goes wherever narrative goes. Sheet one, row 4, is the first decision.

The decisions table. Five columns: the finding, the change, the owner, the due date, and a status dropdown (Data › Data Validation › Allow: List, Source: Open,Done,Dropped). Then a sixth column, F, holding the only formula on the sheet that matters:

=IF($B4="","",IF(OR($C4="",$D4=""),"No owner or no date",""))

Read what that is testing. It does not check whether the change is a good one, because a spreadsheet cannot do that. It checks whether the change is a decision at all. "Improve handoffs between QA and release" with no name and no date is a sentence. The same words with a name and a Friday are a commitment. The formula cannot tell a good change from a bad one, but it can tell a change from a wish, and in a retro that is the distinction that goes missing.

Back it with formatting. Select A4:F30, Home › Conditional Formatting › New Rule › Use a formula, amber fill:

=AND($B4<>"",OR($C4="",$D4=""))

Then put the count somewhere the facilitator can see it without scrolling:

=COUNTIF($F$4:$F$30,"No owner or no date")

That cell reads zero before the meeting ends. Cap the table while you are at it. Thirty rows is generous. I have never seen a retro produce more than about seven changes that anyone actually made. A post-mortem that generates nineteen actions has generated zero.

The timeline, on sheet two. Four columns: timestamp, what happened, who observed it, and the source (a ticket number, a chat message, a dashboard panel). The source column is what keeps the timeline factual, because a row with no source is somebody's memory of the incident, and memory is the thing the timeline exists to replace.

Format column A as Date-Time before anyone types into it. A timestamp entered as text sorts alphabetically, which files 10:04 ahead of 9:15 and produces a timeline that is quietly, confidently wrong. Ctrl and semicolon enters a static date, Ctrl and Shift and semicolon enters a static time, and neither one moves afterward.

Sorting is the part people get wrong. Because the range is a Table, use the header dropdown on the timestamp column and sort oldest to newest, which carries whole rows and keeps every event attached to its source. Selecting only column A and hitting sort is how you end up with a timeline where the times are in order and the events are not. Once it is sorted, add an elapsed column so the gaps are visible:

=IF($A5="","",ROUND(($A5-$A$4)*24,1))

Hours since the first event, one decimal. The number that decides most post-mortems is not when something broke. It is how long it sat between the first person noticing and the first person deciding. That gap should be a column, not an opinion.

The what-worked and what-did-not split. One table, not two lists, with a dropdown column holding Worked,Did not work and a count above it:

=COUNTIF($C$4:$C$40,"Did not work")

One table instead of two, for a specific reason. Two side-by-side lists invite the team to fill both to the same length, and the "what worked" list quietly becomes a politeness column. One table with a dropdown lets the split land wherever it honestly lands, including badly. The other half of the discipline is that a Worked row is not free: if something worked and nobody can say what made it repeatable, it was luck, and luck does not carry to the next program. Every Worked row the team wants to keep earns its own change row back on sheet one, naming the thing that made it work.

Excel and Google Sheets. The .xlsx opens in both, and IF, OR, AND, COUNTIF, INDEX, MATCH, IFERROR, and ROUND behave identically. Ctrl and semicolon and Ctrl and Shift and semicolon insert a static date and time in Sheets too, so the habit survives the move. Two differences worth knowing. On import the Excel Table becomes a plain range, so use Data › Sort range › Advanced range options and tick "Data has header row" before sorting the timeline, because the default will happily file your header row somewhere in the middle of the incident. And Sheets has no "Stop If True," so if you layer a second formatting rule onto the decisions table, remember that the higher rule wins on any property both rules set.

Matching the post-mortem back to the pre-mortem

Run a pre-mortem and a post-mortem on the same program and you have held two meetings. Connect them and you have a way to find out whether your team's judgment is any good, which is a different thing and a much more useful one.

The mechanics are small. Paste the pre-mortem rows into a sheet inside the post-mortem file. Name that sheet Premortem, one word, no hyphen, so formulas never need quotes around the sheet name. Keep the original IDs in column A, the imagined failure text in B, and the score in F. Then add one column to the findings table, headed "Predicted," where you type the pre-mortem ID whenever a finding is something you called in advance. The lookup fills in the rest:

=IFERROR(INDEX(Premortem!$B$4:$B$60,MATCH($G4,Premortem!$A$4:$A$60,0)),"Not predicted")

Column G holds the ID you typed. Anything left blank, or any ID that does not match, comes back "Not predicted." That is the answer you want it to give, because the surprises are the interesting half.

Now run it the other direction, on the Premortem sheet, so every predicted failure gets a verdict:

=IF(COUNTIF(Postmortem!$G$4:$G$60,$A4)>0,"Happened","Did not happen")

Put that in column K and the pre-mortem sheet has just become a scorecard for your own foresight. Three counts fall out of it.

  1. What you predicted and got right. The count of "Happened." Useful, and the number everyone expects to care about.
  2. What you predicted and prevented. The "Did not happen" rows that had an owner and a mitigation that landed. This is the number that justifies the sixty minutes, and it is the only evidence you will ever have for it, because a prevented failure leaves no trace anywhere else in the program.
  3. What nobody saw coming. =COUNTIF($H$4:$H$60,"Not predicted") against the findings table, where H holds the lookup result. If that number is most of your findings, the pre-mortem framing was too polite. It does not mean the team was dim.

The sharpest use is a fourth number, and it takes one more formula. On the Premortem sheet, compare the average score of the failures that happened against the average score of the ones that did not:

=AVERAGEIF($K$4:$K$40,"Happened",$F$4:$F$40)

Copy it into a second cell and swap "Happened" for "Did not happen." If the first number comes out meaningfully higher, your team's likelihood-times-severity scoring has real predictive value, and you should be spending mitigation money strictly by rank. If the two come out close, the scoring is noise wearing the costume of arithmetic, and the honest response is to stop ranking and start asking a different question in the session. I have seen it land both ways. Knowing which one you are looking at is worth more than either answer.

Two meetings and one lookup. That is the whole difference between a program that learns and a program that holds retrospectives.

Free guide
Not sure this is the right tool for the job? Read Pre-mortem vs post-mortem: predicting failure and auditing it. It covers where each one earns its place, and where reaching for the wrong one costs you a quarter.

Questions PMs ask

How long does a post-mortem session take?

90 minutes for a single-program retro. 2-3 hours if you're running it across multiple workstreams or with a large team. The template's facilitation guide covers both formats.

How is this different from an agile retro?

Agile retros are sprint-cycle, team-level, recurring. This template is for program-level post-mortems at major milestones or program closure: bigger scope, executive participation, decisions that change the operating model. The two are complements, not competitors.

Can the team run this without a facilitator?

It works better with a neutral facilitator. The cheat sheet is structured so any senior PM can run the session, but if you're the program lead and your own program is the subject, find someone neutral. Self-facilitated retros tend to over-credit successes and under-examine failures.

Free download

Try the free one first

The lite version is the timeline, what worked, what didn't, and the changes with owners and dates. Free, no card.

Get the free post-mortem template ›