Skip to main content
Fill in each section below. Examples use Doughnut Labs, a SaaS company that sells disruptive Doughnut Technology, modelled here as its direct-to-consumer arm so the numbers have orders and revenue behind them. Replace the grayed E.g. lines with your own numbers.
This is not a new report. Before filling it in, sum the raw numbers (spend, revenue, orders, and so on) from the flat file across every week in this month, then recalculate every ratio, ROAS, conversion rate, contribution margin, from those summed totals. Never average the four weekly ratios directly; see data quality and rollup concepts for why that produces the wrong number. Once the month’s totals are correct, this report is mostly analysis and writing.

Setup

Executive summary

Five sentences, written last, after the rest of the report is done.
Write this last, since it’s hard to summarize an analysis you haven’t done yet. A useful test: swap in a different month’s numbers and see if the prose still holds up. If it does, it’s too generic to be worth reading. “Performance was strong with continued improvements across key channels” passes that test and says nothing; naming the actual mechanism, a bundle lifting average order value while quietly compressing margin, is what makes a summary worth reading on its own.

Budget

Month end spend against budgeted spend.

Performance against target

Rolled up from the flat file: sum the month’s weekly inputs, then recalculate each ratio. Verdict: E.g. Hit, on the north star and counter-metric both. In one sentence, why: E.g. Volume ran slightly over plan and margin held, so the extra spend was efficient rather than wasteful.

What drove the result

Two or three paragraphs, working down the KPI tiers: the tier 2 drivers explaining the tier 1 outcome. E.g. Contribution margin held at target despite the bundle launch pulling average margin per order down 4 points, because average order value rose 12% and more than offset it. Blended acquisition cost was flat month over month, so the margin story is a product-mix effect, not an efficiency change. This section is what justifies the report existing rather than the table above speaking for itself.
Work down the tiers rather than stopping at the first level. “Margin held because average order value rose” is one step; naming why average order value rose, a bundle launch, a price change, a shift toward higher-ticket products, is the actual explanation a reader can act on. “Margin held” restates the table above it and adds nothing.

Channel performance

One line of commentary per channel that moved meaningfully. Say nothing about channels that didn’t. Ecommerce shape. Use this where revenue lands in the same period as the spend. Sales-led shape. Use this where deals close months after the spend. Two tables, because the two answer different questions and merging them produces a number that is wrong in both directions. This month’s activity: what the spend bought, in the period it was spent. Deals that closed this month, credited to the cohort that generated them.
Closed-won counts are fractional where an attribution model splits a deal across channels, which is why the example shows 4.6 rather than 5. See fractional credit. The cohort columns come from attributed_week, not from the close date, so this month’s spend is never credited with deals that pipeline built two quarters ago.
Pick one shape and use it consistently. A subscription business usually wants the ecommerce shape plus a payback column; a business running both motions reports them as two sections rather than one blended table, since blending them hides which motion is working.

Tests

Include tests that failed, not only the ones that won.

What changed

Pulled from the data dictionary change log for this month.

Next month

Actions

Every action needs an owner and a date.
Data through: E.g. 2026-06-30 · Attribution: E.g. 7-day click, multi-touch · Definitions: Data dictionary · If sent before finance close: cost figures are estimated and will be reconciled next month.
Last modified on August 12, 2026