Guide

How to build a weekly marketing report your clients actually read

A practical, no-fluff guide for performance teams and agencies.

Most weekly marketing reports are written for the author: every metric they track, in the order the pulls happened. The reports clients actually read are designed backwards from a Monday-morning skim — headline, deltas, exceptions, one risk — with the detail behind it for whoever wants to dig. This guide is that design, section by section, plus the discipline that keeps it automatable.

Design principle: the 15-second read

A client gives the weekly report fifteen seconds before deciding whether to read on. Those seconds must answer: are we on track, what changed, what needs my attention? Everything else is appendix. Structure the report so the skim is a designed path, not an accident.

The five sections, in order

1. The summary block (top of the sheet, and the Slack message). Headline numbers with WoW deltas, three callouts, one risk. Written by a human — this is the analysis the rest of the report exists to enable.

2. The weekly rollup. One row per channel: Spend · Results · CAC · ROAS · WoW Δ · a ✓/⚠ flag against per-channel targets. One block per week, stacked under monthly section headers — append, never overwrite.

3. Channel detail. Campaign-level rows per platform, prefix-scoped, for the "why" questions the rollup raises.

4. Reconciliation. Platform-claimed vs MMP-attributed per channel with variance — the trust section. (Why they differ.)

5. Definitions. Events, prefixes, geos, timezone, formulas — the contract. Boring, and the reason week 37 is comparable to week 12.

Targets make the report self-triaging

Per-channel CAC/ROAS targets drive the flags, and the flags drive the meeting. A report without targets makes every number a judgment call in real time; a report with them walks in pre-triaged. Set targets in the definitions section; revise them as announced changes, never silently.

What to leave out

Vanity rows (impressions without a decision attached), per-platform tabs that duplicate the rollup, screenshots, and any metric nobody has acted on in a quarter. Every row is a maintenance cost and a skim tax — the template earns trust by what it omits.

The discipline that keeps it automatable

Stable column order across weeks (and across clients, if you're an agency), monthly section headers added on the 1st, date-stamped blocks, ISO weeks in a stated timezone, formulas in dedicated columns that get extended rather than retyped. This structure is exactly what schema-aware automation can maintain; a report that mutates weekly can only ever be hand-fed. (Grab the pre-built version.)

Example rollup block

Channel Spend Results CAC ROAS WoW
Meta $13,900 1,012 $13.74 1.9 −3%
Google $17,800 998 $17.84 1.6 +1%
TikTok $9,400 571 $16.46 1.7 −6%
Snap $7,100 376 $18.88 1.4 +9%

QA checklist

  • ✓ The Slack summary readable in 15 seconds by someone who skipped last week
  • ✓ Every flagged cell traceable to a target in the definitions section
  • ✓ Column order identical to last week (diff the headers)
  • ✓ Reconciliation variance within each channel's baseline

How Opera runs it

Once the structure holds, the Monday build is mechanical — which is the layer weekly report automation removes: filtered pulls, the appended block, computed deltas and flags, the summary posted. The human keeps section 1.

"Every Monday, update the weekly report and post the summary with anything off-target flagged."

See this running on your own reports.A 45-minute workflow audit maps your current process and shows exactly what Opera automates — step by step.

Frequently asked questions

Should the weekly report be a Sheet or a deck?
A Sheet with a designed summary block. Decks fork the truth into a second artifact that drifts; the Sheet plus a 15-second Slack summary covers both audiences.
How many metrics is too many?
If a metric hasn't changed a decision in a quarter, it's appendix or gone. Most strong weeklies run 5–7 columns in the rollup.
Same template for every client?
Same *skeleton* (sections, column order, discipline), client-specific definitions and targets. That combination is what makes a roster automatable without flattening clients into a portal.

Start from a proven weekly report structure.

Grab the free template, then let Opera keep it updated automatically — append-only, formulas preserved.