Monthly Marketing Report Template
Five documents and five sheets that carry a pull date and a data age on every row, so two periods can be compared honestly.
Free download · No account needed
Report Narrative
Marketing performance, period ending
1. Restatements in this report
What changed in the numbers you were already given, before any new ones. One row per figure that moved since it was published, with the cause.
| Metric | Period | As published | As now | Cause |
|---|---|---|---|---|
2. The number
One figure, with its data age beside it, the prior period measured at that same age, and the change between those two.
| Metric | This period | Age | Prior, age-matched | Change |
|---|---|---|---|---|
3. By channel
Spend, sessions, demand and attributed pipeline per channel, every row carrying the date it was pulled. No column totalled across rows measured differently.
4. Why the comparison is what it is
The section that stops the numbers being re-litigated. Three ages, two comparisons, and the difference between them:
The load-bearing sentence
Demand reads down ______ against the prior period as it stands today, and down ______ against the prior period as it stood at this age. The difference is ______ points and it belongs to the calendar.
5. Pipeline contribution
The attributable ceiling first, then the shares. Records with no marketing source are reported as a figure and never folded into a channel.
6. What this means
Two or three decisions, each with the figure behind it, that figure’s age, an owner and a date.
Appendix A: what this report cannot see. Appendix B: pull dates.
Brantham's March report said demo requests were down 11.0%, and the meeting spent forty minutes on it. March had closed six days before the pull and held 431 requests. February, sitting in the next column, held 484. February's own report had published 445, because by March's report date February had had five more weeks to finish arriving. Compare the two periods at the same age and March was down 3.1%. When March itself settled, five weeks later, it was down 3.1%. Nothing in either export was wrong.
The gap is not a tracking fault. Google's own documentation says analytics data processing can take 24 to 48 hours, and that reports may change while it runs. An ad platform records a conversion against the interaction that earned it, inside a window that defaults to thirty days, so a late-March click converting in April still counts for March. And sales attaches a source to a record days after that record exists. Three mechanisms, all working correctly, all pushing the newest period down.
So every row here carries a pull date and a data age, and the previous six periods get pulled again in the same pass. On Brantham's history, 14 of the 20 metric-months that had been published and re-pulled had moved by more than 2%, and not one had been written down. Statistical agencies assume this: the BEA publishes a second estimate of GDP and keeps the vintage history. The pack installs into the marketing workspace, next to the channel mix and CAC review, the funnel and conversion analysis and the template library.
What's in the pack
Report Narrative
Six sections in the order the questions arrive, restatements first, and every figure carrying the age of the pull behind it.
Methodology Note
System of record, period boundary and time zone, pull dates, the windows in force, and the maturation table, so a challenge is answered by pointing at a section.
Metric Definitions
Every metric in four parts: the source field, the arithmetic, what it is not, and the data age at which it can be reported. The third part settles the arguments.
Monthly Assembly Checklist
Seven steps in the order that stops a rebuild, including the re-pull most people skip. Pairs with the UTM taxonomy and tracking pack upstream.
Leadership Readout
One page cut from the narrative rather than rewritten, so the two documents cannot drift: the number, what moved, what is being decided, what is being waited on.
Channel Performance
One row per period per channel with a Pull Date and a Data Age column, and no total across rows that were measured differently. Paid-only detail lives in the multi-channel paid media report.
Funnel Conversion
Every stage carries the drift remaining at this age, which is what tells a reader that the bottom of the funnel is the least finished part of the report.
Pipeline Contribution
Reports an attributable ceiling, not a total. Records with no marketing source are counted and priced, and never split across channels to make the shares tidy.
Metric Maturation
The measured drift curve per metric at day 6, 13, 37 and 68, and the age each one settles at. Built from your own re-pulls rather than from an assumption.
Restatement Log
As first published against as it stands now, with the mechanism named, so a reader who says that is not the number you gave me gets a row instead of an argument.
How to use it
- 1
Open in River, or take it blank
Open the pack in River and send the exports you already pull, or download the Word documents and CSV sheets and fill them in yourself.
- 2
Name the system of record, and the pull dates
Two answers decide the rest: which system wins when two of them disagree, and when each file was pulled. Until the first is answered every efficiency figure in the space is undefined.
- 3
Send this period, and the last six
The current period, then the previous six pulled again in the same pass. That second half costs almost nothing extra and it is what produces the maturation curves and the restatements.
- 4
Read the age-matched comparison first
This period against the prior one measured at the same age, and the difference between that and the raw comparison. On the worked example the difference was 7.8 points on demand and 24.5 on pipeline.
Frequently asked questions
Is this template free?
Yes, and the download is not a cut-down version. The zip holds all ten template files in Word and CSV, with no signup and no card. Edit with AI is the other branch: send the exports you already pull and the agent dates every row, re-pulls the prior periods, and writes the restatements. More packs in the template library.
What format are the downloaded files?
Word (.docx) for the five documents and CSV (.csv) for the five sheets, in one zip. The sheets open in Excel, Numbers or Google Sheets and the documents open in Word or Pages, so nothing needs converting. Add ?format=pdf to the download if you want to read them rather than fill them in.
Why does last month's number keep changing?
Because last month was not finished when you published it. Records get a source attached after they are created, conversions credit back to clicks inside the period, and opportunities appear weeks after the inquiry. On the worked example, 14 of 20 published metric-months had moved by more than 2% by the time anybody looked again.
Can I just wait until the data settles instead?
For one metric, yes. Sessions settle inside two days and demo requests inside five weeks. Attributed pipeline takes about ten, which is past the next two reports, so waiting means never reporting it. Age-matching gets a defensible comparison on day six, and on the worked example it landed 0.05 points from the settled answer.
Which exports do I need?
Whatever you already pull. Analytics sessions and channel data, one report per ad platform, a CRM list of records created in the period with their source, and email and social numbers if you report them. The one thing worth adding is last month's report, because it is the baseline every restatement is measured against.
Does this replace a reporting dashboard?
No, and the two want opposite things. A dashboard changes under the reader, which is what makes it current. A report is a dated statement quoted back weeks later, so it needs a pull date, a stated method, and a written restatement when a figure moves. Run both. These same trailing rates are also what next year's marketing plan and budget works backward from.
What does Edit with AI actually do?
It creates a free account, installs these ten files as a private workspace, and opens by asking which system is authoritative and when each file was pulled. Then send whatever you have: mismatched date ranges, a partial export, last quarter's deck. It re-pulls the prior periods itself.
Find out what your last six months actually say now
Download the ten files and date the rows yourself, or install the pack and let River re-pull the last six periods for you.
Edit with AI