Skip to main content
Assessment & Diagnostics/campaign-post-mortem

Campaign Post-mortem

You need a structured analysis of campaign performance with actionable next steps.

Use this when a marketing campaign has wrapped and the client needs a structured analysis of what worked, what did not, and what to do differently next time. Works for any campaign type: paid media, organic, email, content launches, events, product launches, or multi-channel efforts.


How it works

  1. You provide the campaign brief, performance data, budget, and any additional context
  2. The skill compares goals to actuals, breaks down channel performance, analyzes spend efficiency, and surfaces what actually happened and why
  3. It returns a post-mortem report with metrics tables, what-worked and what-didn't sections, and actionable recommendations for the next campaign

Prompt

You are building a campaign post-mortem for a Kate Makrigiannis consulting engagement. Kate uses post-mortems to help clients move from "that campaign felt good/bad" to "here is exactly what happened, why, and what we should do next." Before writing, read knowledge/voice-tone-guide.md -- use the client-facing voice.

Inputs I will provide:

  • Campaign brief: {{CAMPAIGN_BRIEF}} (original campaign plan: goals, target audience, channels, messaging, timeline, and success criteria)
  • Performance data: {{PERFORMANCE_DATA}} (actual results by channel: impressions, clicks, conversions, leads, revenue, engagement metrics, email opens/clicks, or whatever the client tracked)
  • Budget: {{BUDGET}} (total spend and breakdown by channel, including any in-kind or time costs)
  • Context (optional): {{CONTEXT}} (market conditions during the campaign, competitive activity, internal issues, what felt off or surprisingly good)

Step 1: Goals vs. actuals summary

Campaign Scorecard

MetricGoalActualVarianceVerdict
[Primary KPI][target][actual][+/- X%][Hit / Missed / Exceeded]
[Secondary KPI 1][target][actual][+/- X%][Hit / Missed / Exceeded]
[Secondary KPI 2][target][actual][+/- X%][Hit / Missed / Exceeded]
[Secondary KPI 3][target][actual][+/- X%][Hit / Missed / Exceeded]

Overall campaign verdict: [One sentence summary -- e.g., "Campaign hit its lead generation target but missed on conversion quality, resulting in lower revenue than projected."]

Show the math: For each calculated metric (conversion rates, CAC, ROAS), show the formula and inputs used.

Step 2: Channel performance breakdown

Channel-by-Channel Analysis

For each channel used in the campaign:

[Channel Name]

MetricResultBenchmarkAssessment
Spend$X----
Impressions / ReachX[benchmark if available][Above / At / Below]
Engagement (clicks, opens, etc.)X (X% rate)[benchmark][Above / At / Below]
ConversionsX[benchmark][Above / At / Below]
Cost per conversion$X[benchmark][Above / At / Below]
Revenue attributed$X----
Channel ROIX%--[Positive / Negative / Break-even]

Channel-specific observations:

  • [What worked in this channel and why]
  • [What underperformed and possible causes]
  • [Notable patterns in timing, creative, or audience response]

Repeat for each channel.

Channel Comparison

ChannelSpendConversionsCPARevenueROIRank
[Channel 1]$XX$X$XX%[1-N]
[Channel 2]$XX$X$XX%[1-N]
Total$XX$X$XX%--

Step 3: Spend efficiency analysis

Cost Metrics

MetricValueAssessment
Total spend$X--
Cost per lead (CPL)$X[formula: total spend / total leads]
Cost per acquisition (CPA)$X[formula: total spend / total customers acquired]
Return on ad spend (ROAS)X:1[formula: revenue / ad spend]
Blended campaign ROIX%[formula: (revenue - total spend) / total spend x 100]
Customer lifetime value ratioX:1[formula: estimated LTV / CPA -- if LTV is available]

Budget utilization:

  • Planned spend: $X
  • Actual spend: $X ([over/under] by X%)
  • Budget efficiency notes: [Did overspend produce proportional returns? Did underspend leave opportunity on the table?]

Step 4: Audience response analysis

Audience Patterns

  • Who responded best: [segment, demographic, or behavioral cohort with strongest engagement/conversion]
  • Who responded worst: [segment with lowest engagement or highest cost]
  • Surprise audiences: [any unexpected segments that showed up -- positive or negative]
  • Audience quality: [Were the leads/conversions the right people? Quality vs. quantity assessment]

Funnel Analysis

Funnel StageVolumeConversion RateDrop-off Cause
Awareness (impressions/reach)X----
Interest (clicks/engagement)XX% from awareness[cause of drop-off]
Consideration (leads/signups)XX% from interest[cause of drop-off]
Conversion (customers/deals)XX% from consideration[cause of drop-off]
Revenue$X$X per conversion--

Biggest funnel leak: [Where did the most people drop off, and what is the best theory for why?]

Step 5: What worked

Wins

List 3-5 things that worked well, with evidence:

  1. [Win]: [What happened, specific data that proves it worked, and why it worked]
  2. [Win]: [Evidence and reasoning]
  3. [Win]: [Evidence and reasoning]

Step 6: What did not work

Misses

List 3-5 things that underperformed or failed, with honest assessment:

  1. [Miss]: [What happened, specific data showing underperformance, root cause analysis (not blame)]
  2. [Miss]: [Evidence and root cause]
  3. [Miss]: [Evidence and root cause]

For each miss, categorize the root cause:

  • Strategy issue: Wrong audience, wrong channel, wrong timing
  • Execution issue: Poor creative, technical problems, insufficient budget
  • External factor: Market shift, competitive move, seasonal pattern
  • Measurement gap: Could not attribute properly, data was incomplete

Step 7: Recommendations for next campaign

Actionable Next Steps

#RecommendationExpected ImpactEffortPriority
1[Specific recommendation][What it should improve and by how much][Low / Medium / High][P1 / P2 / P3]
2[Recommendation][Impact][Effort][Priority]
3[Recommendation][Impact][Effort][Priority]

Budget Reallocation for Next Campaign

ChannelThis CampaignNext CampaignChangeRationale
[Channel 1]$X$X[+/- $X][Based on performance data]
[Channel 2]$X$X[+/- $X][Based on performance data]
Total$X$X----

Tests to Run Next Time

  • Test 1: [What to test, hypothesis, and how to measure]
  • Test 2: [What to test, hypothesis, and how to measure]

Kate's Talking Points

  • The headline: "[One-sentence summary of campaign performance suitable for a stakeholder update]"
  • The biggest learning: "[The single most valuable insight from this campaign]"
  • The next move: "[The highest-priority recommendation for the next campaign]"

Related skills: Uses /marketing-roi-analyzer for deeper channel ROI analysis beyond a single campaign. Pairs with /audience-segmentation for refining audience targeting based on post-mortem learnings. Feeds into /gtm-strategy when post-mortem insights inform the next launch plan.


Example Output

Input

  • Campaign brief: Meridian Health Partners (mid-size regional health system, 12 clinics across the Pacific Northwest) ran a 6-week multi-channel campaign to drive new patient registrations for their expanded primary care services. Goal was 400 new patient signups by end of Q1. Channels: Google Search ads, Meta (Facebook/Instagram), email to lapsed patient list (18,000 contacts), and a local radio buy. Target audience: adults 35–65 within 25 miles of clinic locations, uninsured or privately insured, who had not visited in 18+ months or had no prior relationship. Success criteria: 400 registrations, CPL under $45, email open rate above 22%.
  • Performance data: Google Search — 142,000 impressions, 3,840 clicks (2.7% CTR), 188 form completions; Meta — 610,000 impressions, 4,270 clicks (0.7% CTR), 94 form completions; Email — 18,000 sent, 3,420 opens (19% open rate), 612 clicks (17.9% CTOR), 71 completions; Radio — estimated 290,000 listener impressions, no trackable conversions, anecdotal front-desk mentions (~12 calls referenced the ad); Total registrations confirmed after intake screening: 312 (some form completions did not complete intake). Revenue: average new patient LTV estimated at $1,800 over 24 months; 312 patients × $1,800 = $561,600 projected LTV.
  • Budget: Google Search $14,200; Meta $8,500; Email (platform + creative) $1,800; Radio $9,000; Creative production (shared) $3,400; Total: $36,900
  • Context: Campaign launched Feb 3, overlapping with a severe weather event (ice storms, two clinic closures) during weeks 3–4 that disrupted intake appointments and likely suppressed form-to-registration conversion. A regional competitor, PacificCare Clinics, launched a "no-wait primary care" campaign on Meta during the same window with aggressive creative, increasing CPM costs by an estimated 18–22% on that channel. Internal note: the landing page wasn't mobile-optimized until day 11 of the campaign — the team flagged it late.

Output (abbreviated)

Campaign Post-mortem: Meridian Health Partners — Primary Care Registration Drive

Campaign period: February 3 – March 14 | Prepared by: Kate Makrigiannis Consulting


Campaign Scorecard

MetricGoalActualVarianceVerdict
New patient registrations400312-22%Missed
Cost per lead (CPL)$45.00$66.43+48%Missed
Email open rate22%19.0%-13.6%Missed
Projected LTV generated$720,000$561,600-22%Missed
Total form completions400353-11.75%Missed

Overall campaign verdict: The campaign generated meaningful patient volume and strong projected LTV, but a delayed mobile fix, a competitor surge on Meta, and two weeks of weather-driven clinic disruption combined to push registrations 22% below target and blow the CPL goal by nearly half.

Show the math:

  • CPL: $36,900 total spend ÷ 353 form completions = $104.54 per form completion; $36,900 ÷ 312 confirmed registrations = $118.27 per confirmed registration
  • (Note: $66.43 CPL referenced above uses 353 completions as "leads" — both figures are reported for full transparency)
  • Blended ROAS: $561,600 projected LTV ÷ $36,900 ad spend = 15.2:1 on LTV basis; not a traditional ROAS figure — flagged for client interpretation
  • Blended campaign ROI (LTV-adjusted): ($561,600 − $36,900) ÷ $36,900 × 100 = 1,422% projected over 24 months

Channel-by-Channel Analysis

Google Search

MetricResultBenchmarkAssessment
Spend$14,200----
Impressions142,000----
Clicks3,840 (2.7% CTR)2.1% healthcare avgAbove
Form completions188----
Cost per completion$75.53$80–$120 healthcareAbove (favorable)
Revenue attributed (LTV)$170,640 (est. 94.8 confirmed)----
Channel ROI1,102% (LTV-adj.)--Positive

Channel-specific observations:

  • Search was the strongest performer on conversion volume and cost efficiency — 53% of all form completions from 38% of budget
  • "Primary care near me" and "new patient same week" keywords drove the majority of completions; branded terms underperformed (low search volume in new markets)
  • The landing page mobile issue affected Search disproportionately — mobile accounts for ~61% of healthcare searches; estimated 15–20% conversion suppression during days 1–11

Meta (Facebook/Instagram)

MetricResultBenchmarkAssessment
Spend$8,500----
Impressions610,000 (0.7% CTR)0.9% healthcare avgBelow
Form completions94----
Cost per completion$90.43$75–$100 healthcareAt
Revenue attributed (LTV)$76,680 (est. 42.6 confirmed)----
Channel ROI803% (LTV-adj.)--Positive

Channel-specific observations:

  • PacificCare's concurrent Meta campaign measurably compressed performance — CPM rose from $9.20 (week 1) to $11.40 (week 4), a 23.9% increase consistent with client's competitive intelligence
  • Instagram stories outperformed Facebook feed placements by 2.1× on click-through but had comparable completion rates — creative was not tailored to placement
  • Audience aged 55–65 showed lowest CPL on Meta despite smaller volume; 35–44 segment had highest click volume but worst form completion rate (possible mobile + landing page interaction)

Email (Lapsed Patient List)

MetricResultBenchmarkAssessment
Spend$1,800----
Delivered18,000----
Opens3,420 (19.0%)22% goal / 21.5% healthcare avgBelow
Clicks612 (17.9% CTOR)15–18% healthcare avgAbove
Form completions71----
Cost per completion$25.35----
Channel ROI3,991% (LTV-adj.)--Positive

Channel-specific observations:

  • Email delivered the lowest absolute volume but by far the best cost efficiency — $25.35 per completion vs. $75–$90 across paid channels
  • Open rate missed the 22% goal, likely due to a generic subject line ("We've expanded our primary care services") — no personalization or urgency signal
  • CTOR of 17.9% is strong, meaning people who opened were genuinely interested; the bottleneck was getting the open, not converting interest

Radio

MetricResultBenchmarkAssessment
Spend$9,000----
Est. listener impressions290,000----
Trackable conversions0----
Anecdotal front-desk mentions~12 calls----
Cost per trackable conversionIncalculable----

Channel-specific observations:

  • Radio produced no measurable attribution; 12 anecdotal front-desk references across 6 weeks does not justify $9,000