River
Y CombinatorBacked by Y Combinator

Free template

Monthly Marketing Report Template

A monthly marketing report for leadership, with channel and funnel tables, plus sheets that date every number so each month compares fairly with the last.

Free download · No account needed

What you get

Pack of 10 files: 5 documents, 5 spreadsheets

Monthly Marketing Report Template
  • Methodology NoteDocument
  • Metric DefinitionsDocument
  • Monthly Assembly ChecklistDocument
  • Channel PerformanceSpreadsheet
  • Funnel ConversionSpreadsheet
  • Pipeline ContributionSpreadsheet
  • Metric MaturationSpreadsheet
  • Restatement LogSpreadsheet
  • Report NarrativeDocument
  • Leadership ReadoutDocument
RiverMonthly Marketing Report Template

Report Narrative

Marketing performance, period ending

Report date  ·  Data age of this period  ·  System of record

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.

MetricPeriodAs publishedAs nowCause

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.

MetricThis periodAgePrior, age-matchedChange

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.

Page 1 of 2640 words

How to write a monthly marketing report

A monthly marketing report tells leadership what marketing spent and produced last month, by channel, and what the team will do next. A good one is built around five to eight defined numbers. Each is set against its target and against last month as it looked the same number of days after it closed. The report explains what moved and why, flags any past figure that has changed, and ends with two or three decisions, each with an owner and a date.

The comparison with last month is the part to get right. Conversions, lead sources and pipeline keep filling in for weeks after a month closes, so on those numbers a newly closed month reads low beside an older one.

A hand holding a stylus over a tablet and printed charts, beside a calculator and a laptop on a desk
Know where each number came from, and when, before you compare months. Photo: Jakub Żerdzicki on Unsplash

What goes in a monthly marketing report

Start with who reads the report and what they decide with it: where next month's budget goes, which campaigns continue, whether the quarter's target is still in reach. Pick five to eight numbers that bear on those decisions, and give each a target, usually from your annual marketing plan and budget.

Analytics author Avinash Kaushik defines targets as numbers you set in advance to judge success or failure1. His example is a YouTube campaign with 1.2 million views. Is that great or awful? Without a target, nobody can say.

The parts of a monthly marketing report, in reading order

PartWhat goes in itLength
RestatementsPast figures that changed since you reported them, each with its causeA line each
HeadlineThe number leadership acts on, its target, and its change on last month at the same age2 or 3 sentences
ChannelsSpend, sessions, leads, cost per lead and pipeline for each channelOne table
The comparisonWhy the change is what it is, and which numbers are still settlingOne paragraph
PipelinePipeline by channel, plus records with no marketing sourceOne table
DecisionsTwo or three, each with its figure, an owner and a dateA short table

Define every number before you pull it

Write one definition for each number: the system and field it comes from, the arithmetic, and the similar metric it gets confused with. Sessions are not people. Pipeline is not revenue or a forecast. A cost per lead that divides paid spend by every lead, organic included, is blended, so label it that way.

Then name a system of record for leads and one for pipeline, usually your CRM, so the report already says which tool wins when two disagree. Note the time zone each tool reports in, since a mismatch shifts hours of activity across the month boundary.

Record the settings that change what a number means, and the date of any change. In Google Ads, a new conversion window applies only to conversions going forward2, so a month that straddles the change counts conversions two ways. In GA4, changing the reporting attribution model applies to historical and future data3. Last quarter's conversions by channel can shift with no new data at all.

Compare months at the same age

Your newest month is still filling in when you report it. Google says GA4 data processing can take 24-48 hours4, and reports may change meanwhile. Google Ads' main conversion columns are calculated based on the time of the click, not the time of the conversion5. With a 30-day default window2 for Search and Display, a late-March click that converts after your report goes out still adds to March.

Your CRM adds its own lag. A lead's source may be filled in after the record is created, and an opportunity exists only once sales qualifies the lead, which can be weeks later. So a report sent six days after month end sets a six-day-old month beside a 37-day-old one, and the slow numbers look worse than they are.

The fix is to compare like with like: this month against last month as it stood at the same age. If you report on the same day each month, that is simply the figure last month's report published. Put a pull date and a data age (the days between month end and the pull) on every number, so anyone can check that the ages match.

ExampleThe same March, compared two waysAn illustrative example written for this guide. The company is made up; its figures match the template's sample sheets.

Demo requests in March, pulled April 6, six days after the month ended: 431.

Against February as it stands today, 37 days old: 484. Reported change: down 11.0%.

Against February as its own report published it, six days old: 445. Age-matched change: down 3.1%.

Pipeline from the same pull: $1,196,000. Against February today ($1,742,000): down 31.3%. Against February as first published ($1,284,000): down 6.9%.

  • The calendar, not marketing. Nearly 8 of the 11 points in the reported fall came from February's 31 extra days of late data, not from March.
  • Slow numbers mislead most. Pipeline settles more slowly than demo requests, so its reported fall was more than four times the age-matched one.

Say which figures are still settling, the way official statistics do. The US Bureau of Labor Statistics marks its latest two months of payroll jobs estimates preliminary and revises each one twice before treating it as final6.

Keep every report you publish, since its figures become next month's baseline. Each month, pull the last six months again, compare each figure with what its own report said, and log every change with its cause. Six months of that log shows how long each of your numbers takes to settle.

Report each channel without double counting

Give each channel one row: spend, sessions, leads from your system of record, cost per lead where there is spend, and pipeline. Put the pull date and data age on every row. Don't add up the conversions each ad platform reports. Each platform credits its own ads, so one buyer who clicked ads on two platforms can be counted by both.

Show records with no marketing source as a line of their own instead of spreading them across channels. In the template's sample data, 83 of March's 552 new records had no source, so every channel's share is a share of the other 469.

When one channel moves sharply, dig in before the meeting. A Google Ads account audit shows where paid search spend went. Events need care too, since their leads often arrive only when someone uploads the attendee list. A trade show planning checklist that sets a meeting target in advance gives that row a fair benchmark.

Write it around decisions

Open with any past figure that changed, and its cause. A reader who finds a revised number on their own starts doubting the rest, while the same revision named up front builds trust.

Kaushik says a dashboard for executives needs some data, but what it really needs is insights, actions and business impact7. An insight explains why a number moved, not just that it did. Wherever an adjective is doing a number's job, use the number.

End with two or three decisions, each with the figure behind it, an owner and a date. If a decision rests on a number that is still settling, say so. Then cut a one-page summary for leadership from the full report rather than writing it fresh, so the two never disagree.

Before you send

  • Every number has a written definition and a named source system
  • Every row shows when it was pulled and how old its month was
  • Month-over-month changes compare both months at the same age
  • Past figures that changed are listed first, each with a cause
  • No total adds up figures that were counted different ways
  • Each decision has its figure, an owner and a date

The template on this page sets this up in five Word documents and five CSV sheets, date columns included. Edit with AI opens it in River, which dates your exports and does the age-matching for you.

How to use this template

Use the files as they are, or open them in River. The sheets come filled in with a made-up company's figures, so you can see how the date columns and the restatement log work before you clear them.

Edit with AI opens the template in River, which asks for the exports you already pull, your last few reports and roughly when each file was pulled. River then confirms with you which system wins when two disagree, dates every row, logs past figures that have moved, and drafts the report with months compared at the same age.

  1. Download it or open it in River

    Download the five Word documents and five CSV sheets free, with no signup, or open them in River to work with AI.

  2. Send what you already pull

    Share your analytics, ad platform and CRM exports and your last few reports. Partial files and mismatched dates are fine.

  3. Let River date and compare

    River records when each file was pulled, logs past figures that moved, and compares months at the same age.

  4. Edit it and present it

    Edit the Report Narrative and the one-page Leadership Readout yourself, or ask River for changes before the meeting.

What's in the template

The sheets that date every number, filled in for one monthThe Channel Performance table, the Metric Maturation curves, and the Restatement Log.
Monthly Marketing Report Template
RiverChannel Performance

Channel Performance

March and February rows for a fictional company, Brantham.

PeriodChannelAgeSpendSessionsDemo req.Cost per req.Attr. pipeline
MarOrganic search6d74,200118342,000
MarPaid search6d68,40021,48096712.50268,000
MarPaid social6d31,20018,64047663.8396,000
MarEmail6d9,31062174,000
MarReferral and partner6d6,05038148,000
MarDirect6d22,7604198,000
MarEvents6d42,0001,240291,448.2870,000
MarTotal6d141,600153,680431328.541,196,000
FebTotal37d163,300160,410484337.401,742,000

The two total rows are 31 days apart in age, not in quality. March closed six days before the pull and February closed 37 days before it. Reading 431 against 484 and calling it an 11.0% fall is the mistake this whole pack exists to stop.

Paid search is the clean illustration. Cost per demo request reads 712.50 in March against 665.74 in February, up 7.0%. Age-matched, the March figure is 657.69, which is 1.2% cheaper than February rather than dearer.

Cost per demo request divides paid spend by demand from every source, so the total row is blended by construction and says so.

RiverMetric Maturation

Metric Maturation

How far short of its settled figure each metric comes in, by the age of the pull. Measured over six months, not assumed.

MetricDay 6Day 13Day 37Day 68SettlesAt day 6
Sessions+0.1%+0.0%+0.0%+0.0%day 6as stated
Demo requests+9.4%+4.8%+0.6%+0.0%day 37age-matched
Paid conversions+13.2%+5.1%+0.3%+0.0%day 37age-matched
Qualified+22.6%+11.0%+2.1%+0.2%day 68age-matched
Opportunities+33.9%+20.4%+6.2%+0.8%day 68age-matched
Attributed pipeline+44.9%+31.1%+6.8%+0.9%day 68age-matched
Closed won+209.1%+112.0%+31.4%+6.2%after 157not at all

One of the four headline metrics is settled on the day the report goes out. Sessions. The other three come in short by 9.4%, 13.2% and 44.9%, in the same direction, every period.

Drift rises at every step down the funnel. The figures a budget decision actually rests on are the least settled ones in the report, which is the opposite of how the page gets read.

Settled means drift under one percentage point. Closed won does not get there inside a quarter, so it is reported as a direction.

RiverRestatement Log

Restatement Log

One row per metric per period: what was published, what it says now, and the mechanism in between.

MetricPeriodPublishedNowDriftNamed causeStatus
SessionsFeb160,250160,410+0.1%Processing settled inside 48 hourssettled
Demo requestsFeb445484+8.8%Source field populated after the recordopen
Paid conversionsFeb180203+12.8%Credited back to clicks inside the periodopen
Attributed pipelineFeb1,284,0001,742,000+35.7%Opportunities created weeks after the inquiryopen
Paid conversionsDec142144+1.4%Seven-day windows for the holiday promotionsettled
Attributed pipelineDec831,0001,193,000+43.6%Opportunities created weeks after the inquirysettled
Totals6 periods14 of 20Published and re-pulled, moved over 2%70.0%

December’s paid conversions are the exception that proves the mechanism. Seven-day conversion windows were in force for the holiday promotion, so almost nothing could credit back, and that month drifted 1.4% against 12.8% in February.

Sessions never move. Which is worth knowing precisely, because it is the one figure in the report that can be quoted at any age without a caveat attached to it.

A definition or window change is logged here too, marked as a restatement rather than as drift, so nobody hunts for a data cause.

  • Report NarrativeThe report itself: restatements first, then the headline number, channels, the comparison, pipeline and decisions.
  • Leadership ReadoutA one-page version for the meeting: the number, what moved, what is being decided and what is still settling.
  • Methodology NoteThe system of record, period boundary, time zones, pull dates, conversion windows and attribution settings.
  • Metric DefinitionsEach metric's source, arithmetic, what it is not, and the data age at which it can be reported.
  • Monthly Assembly ChecklistSeven steps in order, from settling the method and re-pulling past months to writing the report.
  • Channel Performance sheetSpend, sessions, demo requests, cost per request and pipeline by channel, each row with its pull date and data age.
  • Funnel Conversion sheetEach funnel stage's count and conversion rate, with how far it is still expected to move.
  • Pipeline Contribution sheetRecords and pipeline by channel, with the records that have no marketing source counted on their own line.
  • Metric Maturation sheetHow far short each metric reads at 6, 13, 37 and 68 days, and when it settles.
  • Restatement Log sheetEvery past figure as first published and as it stands now, with the drift and its cause.

Common questions

What should a monthly marketing report include?

A monthly marketing report should include five to eight numbers with targets, a channel table, a short explanation of what moved and why, and two or three decisions with owners and dates. It should also list any past figure that has changed since you reported it, with its cause, and show when each number was pulled.

Why did last month's marketing numbers change?

Last month's numbers usually change because the month was still filling in when you reported it. Analytics data can take a day or two to process, Google Ads credits late conversions back to the click date, and CRM records gain sources and opportunities later. None of that is a tracking error. Log each change with its cause, and compare months at the same age.

Should I compare month over month or year over year?

Use month over month for the recent direction, and add year over year if your business is seasonal, since it compares the same season. Either way, compare at the same age: set this month beside last month, or last year's month, as its own report published it, not as it stands today.

How long should a monthly marketing report be?

Short enough that leadership reads all of it. Lead with a one-page summary; the template's Leadership Readout is meant to be read aloud in under two minutes. Put the channel tables and method notes behind it for anyone who wants detail, and link to your dashboard instead of pasting in its charts.

What's the difference between a marketing report and a dashboard?

A dashboard shows what is happening now and changes as data arrives. A report is a dated statement people quote back weeks later, so it needs pull dates, written definitions and a log of any figure that changes afterward. Use both: the dashboard for day-to-day work, the report for decisions.

Is this monthly marketing report template free?

Yes. Download the five Word documents and five CSV sheets with no signup. They open in Word, Excel, Google Docs or Google Sheets, and the sample figures in the sheets are made up, so clear them before adding yours. Edit with AI opens the same template in a free River workspace.

What does Edit with AI do?

It opens the template in a free River workspace and asks for your analytics, ad platform and CRM exports, plus your last few reports. If you don't know when each file was pulled, River works it out from the files. Then it dates every row, logs past figures that have moved, and drafts this month's report.

Sources

  1. Occam's Razor by Avinash Kaushik. “Digital Marketing and Measurement Model.” kaushik.net (opens in a new tab)

  2. Google Help. “About conversion windows.” support.google.com (opens in a new tab)

  3. Google Help. “Select attribution settings.” support.google.com (opens in a new tab)

  4. Google Help. “Data freshness.” support.google.com (opens in a new tab)

  5. Google Help. “Understand your conversion tracking data.” support.google.com (opens in a new tab)

  6. U.S. Bureau of Labor Statistics. “Employment Situation Technical Note.” bls.gov (opens in a new tab)

  7. Occam's Razor by Avinash Kaushik. “Digital Dashboards: Strategic & Tactical: Best Practices, Tips, Examples.” kaushik.net (opens in a new tab)

Written 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