Agency Report Template: Free 21-Item Monthly Client Report
One rule shapes this template: nothing goes on the report that the client cannot interrogate. Every metric gets a footnoted or linked methodology, and anything that cannot survive a CFO asking what it means is cut.

This agency report template is a monthly client report in 21 items: six required panels that go in every report and three diagnostics that appear only when the problem is present. It is built for a DTC client running paid media on Meta, Google and TikTok (or some subset) plus Klaviyo for email and SMS, and it opens with a panel none of the six top-ranking templates we read includes: platform-reported revenue reconciled against Shopify.
Get the free Google Sheets template: no email gate, it opens a copy in your own Drive with the reconciliation, CAC, contribution-margin and tracking-health formulas already built.
Key takeaways
- 21 items total: 12 required across 6 panels, 9 conditional across 3 diagnostic panels.
- The report opens with reconciliation: Shopify net revenue, the raw sum of platform claims, and deduplicated platform revenue, side by side.
- The template removes 8 metrics that look like results but can't be defended (impression vanity, blended ROAS without methodology, last-click revenue summed across platforms, and five more).
- We read six of the top-ranking report templates (Oct 2026): none reconciles revenue against the store, deduplicates platform claims, or reports margin per channel.
- Free Google Sheets version with example numbers and formulas: make a copy. It pairs with our why most agency reports lie article, which explains the failure patterns this template defends against.
How to use this client reporting template
In agency reporting, the monthly client report is the one document the client reads end to end. A client reporting template fixes its structure: every client gets the same panels in the same order, so a missing number shows up as a gap instead of quietly dropping out of the deck.
The template is structured as nine panels in a single dashboard or six-page deck. Panels 1-6 are required for every client. Panels 7-9 appear only when the underlying issue is present (audience saturation, creative fatigue, promotional period).
The implicit rule: nothing goes on the report that the client cannot interrogate. If a metric appears, the methodology behind it must be footnoted or linked. Vanity metrics get cut because they cannot be defended in a meeting when a CFO asks "what does this number mean."
What should a monthly client report include?
A monthly client report should include six required panels: revenue reconciliation against Shopify, a 13-week marginal CAC trend, contribution margin per channel, channel mix with saturation, cohort revenue at 90 and 365 days, and tracking health. Three diagnostics are added only when the problem is present. All 21 items at a glance:
| # | Panel | Item | When |
|---|---|---|---|
| 1 | Revenue reconciliation | Shopify net revenue | Every month |
| 2 | Revenue reconciliation | Sum of platform-reported revenue | Every month |
| 3 | Revenue reconciliation | Deduplicated platform revenue | Every month |
| 4 | Marginal CAC | New-customer CAC, 13-week trend | Every month |
| 5 | Contribution margin | Revenue − COGS − spend − fulfillment, per channel | Every month |
| 6 | Channel mix | Spend allocation by channel | Every month |
| 7 | Channel mix | Marginal return at current spend | Every month |
| 8 | Cohorts | Revenue per customer at 90 and 365 days | Every month |
| 9 | Tracking health | Meta Event Match Quality on Purchase | Every month |
| 10 | Tracking health | GA4-to-Shopify order match % | Every month |
| 11 | Tracking health | CAPI event volume gap % | Every month |
| 12 | Tracking health | Server-side tagging status | Every month |
| 13–15 | Audience saturation | Frequency, CPM trend, new-audience reach % | When a channel saturates |
| 16–18 | Creative fatigue | Top-5 creative CTR trend, creative age, refresh rate | When CTR drops or frequency climbs |
| 19–21 | Promotional flags | Event, dates, estimated lift vs baseline | When the period had a promo |
No top-ranking report template checks platform claims against store revenue
Google's US desktop results for "agency report template" (2026-10-24) and "client reporting template" (2026-10-26), as captured by DataForSEO, hold 8 organic results each, 16 in total. Ten come from reporting or analytics software vendors (AgencyAnalytics appears twice), four from design-template galleries (Visme, Template.net, Pinterest twice), one from an agency and one generic Word/Excel template. Both queries showed an AI Overview with no cited sources returned.
We then read six of them in full (Oct 2026) and checked what a DTC client would need:
| Page | Format | Store revenue reconciliation | Platform dedup | Margin / COGS per channel | Tracking health (EMQ, CAPI) |
|---|---|---|---|---|---|
| DashThis | DashThis account | No | No | No | No |
| AgencyAnalytics | Preview in the app | No | No | No | No |
| Databox | Databox account (free plan) | No | No | No | No |
| Xtensio | Xtensio account | No | No | No | No |
| Semrush | Google Sheets | No | No | No | No |
| Promodo | Google Sheets | No | No | No | No |
The pages cover channel KPIs well: revenue, transactions, AOV, ROAS, cost per conversion. What none of the six covers is the step that decides whether those numbers can be trusted: comparing what the platforms claim with what the store booked. That gap is why this template starts where it does.
Panel 1: Net revenue reconciliation (required)
Three numbers side by side:
- Shopify net revenue for the period (the source of truth)
- Sum of platform-reported revenue across Meta + Klaviyo + Google + TikTok (raw, before dedup)
- Deduplicated platform-attributed revenue (each order counted once)
The gap between #2 and #3 is the platform double-count. Show it. The gap between #1 and #3 is the organic + direct + returning + email-flow revenue not attributed to paid. Show that too.
Here is how it reads on the template's example brand (fictional numbers, one month):
| Line | Value |
|---|---|
| Shopify net revenue | $250,000 |
| Sum of platform-reported revenue (Meta $142K + Google $88K + TikTok $21K + Klaviyo $74K) | $325,000 |
| Deduplicated platform revenue | $168,000 |
| Platform double-count (#2 − #3) | $157,000, 48% of the platform sum |
| Revenue not attributed to paid (#1 − #3) | $82,000, 33% of Shopify |

Summed platform claims exceed the whole Shopify ledger; deduplicated paid revenue is a third lower than Shopify. Source: Level free monthly client reporting template, tab 1 Reconciliation (example numbers).
The platforms together claim 30% more revenue than the store booked. A report that opens with platform ROAS hides that; a report that opens with reconciliation shows it before any other number is read. The same Shopify-anchored logic, extended to the metrics that decide profitability once reconciliation is in place, is what we walk through in our ecommerce analytics breakdown.
Panel 2: Marginal CAC, 13-week trend (required)
New-customer acquisition spend divided by new customers acquired, weekly. Trend line. Marked with promotional events.
Do not include blended CAC (which includes returning customers in the denominator): it makes the agency's spend look more efficient than it is. Marginal CAC is the number that tells the founder if the new-customer economics are improving or eroding. In the template's example, weekly new-customer spend rises from $9,000 to $12,000 while new customers fall from 180 to 144, so CAC climbs from $50 to $83 over 13 weeks. Spend went up 33%; the cost of a new customer went up 67%.
Panel 3: Contribution margin per channel (required)
For each major paid channel: revenue (deduplicated) minus COGS minus channel spend minus fulfillment cost. Negative values shown in red.
This panel requires knowing the client's COGS, and none of the six templates we read asks for it. If the agency doesn't know COGS, it cannot show contribution margin, and the client cannot tell whether a channel is profitable. The template's example:
| Channel | Dedup revenue | COGS (32%) | Spend | Fulfillment | Contribution margin | CM % |
|---|---|---|---|---|---|---|
| Meta | $92,000 | $29,440 | $38,000 | $9,200 | $15,360 | 17% |
| $51,000 | $16,320 | $17,000 | $5,100 | $12,580 | 25% | |
| TikTok | $9,000 | $2,880 | $6,500 | $900 | −$1,280 | −14% |
| Klaviyo (email/SMS) | $16,000 | $5,120 | $1,800 | $1,600 | $7,480 | 47% |
| Total | $168,000 | $53,760 | $63,300 | $16,800 | $34,140 | 20% |
For multi-product brands, weight COGS by product mix per channel if the data exists. If not, use blended COGS and footnote the limitation. If every channel shows a positive margin every month, check the inputs before celebrating: platform-reported revenue instead of deduplicated, or a channel left off the table, are the usual reasons.
Panel 4: Channel mix and saturation curves (required)
Two halves to this panel:
- Spend allocation (where the money actually went, percentage by channel)
- Marginal return curve (for each channel, marginal revenue per dollar at the current spend level)
The saturation curve is what tells the founder whether to keep scaling a channel or to redeploy spend. If Meta's next $10K returns $4K of revenue, Meta is at saturation. The deck should say so. In the template, a channel whose next $1 returns less than $1 gets the verdict "Saturated: hold or cut"; above $1 it reads "Room to scale".
Panel 5: Cohort revenue (90/365) (required)
New-customer cohorts plotted against their 90-day and 365-day revenue. Acquisition month on the X-axis, cumulative revenue per customer on the Y-axis.
This is where retention quality shows up. If the agency drove a 4.0x acquisition ROAS but the 90-day cohort spent half as much as last quarter's, the LTV trajectory is broken and the agency-blamed channel mix shift might actually be a product or retention issue. The cohort panel surfaces it. For the 30/60/90/180/365-day table structure and the three mistakes that most inflate this number, see our LTV by cohort breakdown. If you want an outside reference point, Common Thread Collective's DTC Index tracks store CAC, MER and AOV weekly (a paid product, $99/month, checked Oct 2026), and Klaviyo's ecommerce benchmarks give email revenue share by store size, from Q4 2016 data, so treat them as dated.
Panel 6: Tracking health (required)
Four indicators, with the template's working thresholds:
| Indicator | Green | Amber | Red |
|---|---|---|---|
| Meta Event Match Quality on Purchase (0–10) | ≥ 8 | 6–8 | < 6 |
| GA4-to-Shopify order match (GA4 purchases ÷ Shopify orders) | ≥ 90% | 80–90% | < 80% |
| CAPI purchase volume gap (1 − CAPI purchases ÷ Shopify orders) | ≤ 10% | 10–20% | > 20% |
| Server-side tagging: Meta CAPI, Google Enhanced Conversions, Klaviyo events | Live | Partial | Off |
The thresholds are our working defaults, not platform rules; Meta reports EMQ per event in Events Manager on a 0–10 scale. If any tracking indicator is red, every revenue number above it is suspect. The tracking health panel is the report's audit trail.
Panel 7: Audience saturation diagnostic (conditional)
Appears only when a channel is at or near saturation. Shows:
- Frequency by audience segment for the last 14 days
- CPM trend week over week
- New-audience-reach percentage of total spend
Skip this panel when channels are healthy. It's a diagnostic, not a vanity slide.
Panel 8: Creative fatigue indicators (conditional)
Appears when CTR is dropping or frequency is climbing on top creatives. Shows:
- Top 5 creative units by spend with their CTR trend over 28 days
- Days since each top creative was first published
- Creative refresh rate (new variants tested per week)
Use it to inform the next creative sprint decision, not to fill space.
Panel 9: Promotional period flags (conditional)
Appears when the period covered includes a sale, launch, or other non-evergreen event. Flags:
- What promotional event ran (sale, launch, sweepstakes, influencer campaign)
- Dates of the event
- Estimated revenue lift attributable to the event vs. baseline
This panel prevents the YoY comparison error where last year's sale week is compared against this year's evergreen week as if they were equivalent.
Reporting cadence vs depth: what goes in each report
Reports get worse when cadence and depth are traded in the wrong direction: weekly reports grow to monthly-report depth, monthly reports grow to quarterly-business-review depth, and nobody reads any of them closely.
The depth of a report should be capped by the decisions it drives. The cadence should be capped by the speed those decisions can move at.
- Weekly report → tactical layer only. Pacing against monthly budget, account-health flags (tracking degradation, policy enforcement, audience saturation triggers), top-3 changes shipped this week, top-3 changes planned next week. No reconciliation, no contribution margin, no cohort math. Level covers the pacing piece with targets and pacing. Our rule of thumb: if the weekly takes more than 30-45 minutes to assemble, it has grown into a monthly.
- Monthly report → strategy + reconciliation layer. The full 21-item template above. This is the cadence at which big spend-shift decisions and channel-mix arguments should be settled against reconciled data. If the paid-channel panels live in Level, scheduled reports can send them on this cadence.
- Quarterly business review → policy + bet layer. What the brand commits to over the next 90 days, what is being retired, what new channels or programs are being tested, and the success criteria set in advance. The QBR is where the brand revisits its CAC ceiling, channel-saturation thresholds and retention investment. Monthly reports answer "what happened"; QBRs answer "what are we going to commit to."
- Hot-incident report → triggered, not scheduled. When tracking breaks, when a platform enforces against the account, or when CPM on a primary channel stays more than ~50% above its trailing average for over a week (our trigger, adjust to the account), a same-day or next-day incident note goes to the founder. Don't hold these for the next monthly. Automating that trigger is part of the reporting and alert work a marketing automation agency builds for DTC brands.
- The depth ratchet. Panels get added in response to founder questions ("can we also see X?") and rarely get removed. The discipline: at every QBR, prune at least one panel from the monthly. If a panel has not driven a documented decision in two quarters, drop it.
What this template removes from typical agency reports
The 21 items above are the structure. The template also explicitly removes:
- Impression count as a headline metric. Cost-free to inflate, weak link to revenue.
- Engagement rate as a business KPI. Platform-internal score, not a business outcome.
- Blended ROAS without methodology. Meaningless without attribution-window and channel-pool disclosure.
- Last-click revenue summed across platforms. Inflated by the dedup gap: $157,000 in the example above.
- "Top performing ad" callouts without spend context. A $50/day ad with 12x ROAS is not the same business event as a $5K/day ad with 4x.
- YoY comparisons without promotional event flags. Calendar artifacts framed as performance changes.
- "Industry benchmark" comparisons without source citations. Benchmarks are often compiled by a company selling the data or a tool (the DTC Index above is a subscription product). If you cite one, link the source and state its date and sample so the client can interrogate the methodology.
- Agency self-promotion slides. A monthly deck is the client's data, not the agency's trophy case.
Download the free client reporting template (Google Sheets)
Make a copy of the template. No form and no email: the link opens a copy in your own Google Drive (you need to be signed in to Google). It has nine tabs:
| Tab | What it does |
|---|---|
| Start here | How to use the template and the one rule behind it |
| Report checklist | All 21 items in deck order, with data source, method, this month, last month |
| 1 Reconciliation | Shopify net revenue vs platform sum vs deduplicated revenue; double-count and unattributed share computed |
| 2 Marginal CAC | 13 weeks of new-customer spend and new customers; CAC per week, promo weeks flagged |
| 3 Contribution margin | Revenue − COGS − spend − fulfillment per channel; negative channels turn red |
| 4 Channel mix | Spend share and revenue from the next $1, with a scale / hold verdict |
| 5 Cohorts | Revenue per customer at 90 and 365 days by acquisition month |
| 6 Tracking health | EMQ, GA4-to-Shopify match, CAPI gap with green / amber / red thresholds |
| Cut list | The 8 metrics to keep off the report, and why |
Green cells hold example numbers from a fictional DTC brand. Replace them and the formulas update. The Looker Studio version with dedup logic in calculated fields is shared on request through our custom reporting service, because it needs your data sources connected.
A fictional brand's numbers and six vendor templates, read October 2026
The reconciliation, CAC trend, contribution margin, channel verdicts and tracking thresholds in this article are the template's own example data, a fictional DTC brand. They illustrate the math and are not a benchmark. The six-page comparison draws on two DataForSEO snapshots of Google organic results (US, desktop): "agency report template" on 2026-10-24 and "client reporting template" on 2026-10-26, 8 organic results each. We read six of the 16 pages on 2026-10-26 and checked them for store reconciliation, deduplication, margin/COGS and tracking-health items; "No" means the page does not mention it. Vendor pages change, so recheck before you quote them.
Where this template fits in the broader Marketing Bar approach
The template is the artifact. The deeper article is why most agency reports lie, which explains the five failure patterns this template is built to defend against. The product version of paid-channel reporting is Level: it connects Meta Ads and Google Ads (its docs also list Microsoft Ads) and syncs hourly on paid plans, daily on Free. Shopify and Klaviyo deduplication stays in the template's Sheets/Looker layer. If you'd rather buy the assembly automation than build it, our automated reporting tools comparison ranks six options by how much of the manual work they actually remove.
If you'd rather run the paid-channel panels yourself, book a Level demo and see them on your own Google Ads and Meta accounts. If you're building your own version of this template and want help customizing it for your specific channel mix, our custom reporting service covers scoped implementations.
How long it takes to migrate to this template
For an in-house team or agency adopting the template against an existing reporting setup, a four-week plan:
Week 1 — Data layer review
Confirm Shopify net revenue is accessible, COGS data is current, channel-level spend feeds are working.
Week 2 — Build the trust panels first
Panel 1 (reconciliation) and Panel 6 (tracking health) built first. Everything else gets read with skepticism until these work.
Week 3 — Build on the reconciled foundation
Panels 2-5 (marginal CAC, contribution margin, channel mix, cohort revenue) built on top.
Week 4 — Ship the first monthly
First full monthly report ships against the template, with the prior format archived for comparison.
Copying the template without the data work in weeks 1-3 gives you a cleaner layout over the same unreconciled numbers.
FAQ
Yes. This one is free with no email gate. It covers all 21 items, with formulas for revenue reconciliation, marginal CAC, contribution margin per channel, channel saturation, cohorts and tracking health.
Fix the structure once, then fill it every month: reconcile platform revenue against Shopify first, check tracking health, then build CAC, margin, channel mix and cohort panels on the reconciled numbers. Add diagnostics only when the problem is present.
Revenue reconciled against Shopify, a 13-week marginal CAC trend, contribution margin per channel, channel mix with saturation, 90/365-day cohort revenue and tracking health. Add audience saturation, creative fatigue and promotional flags only when they apply.
Impressions as a headline, engagement rate as a KPI, blended ROAS without methodology, last-click revenue summed across platforms, top-ad callouts without spend, unflagged YoY comparisons, unsourced benchmarks and agency self-promotion.
Weekly for pacing and account-health flags only, monthly for the full 21-item report, quarterly for budget and channel decisions. Tracking breaks and account enforcement get a same-day incident note instead of waiting for the next report.
Show three numbers side by side: Shopify net revenue, the raw sum of platform-reported revenue, and deduplicated platform revenue. The gap between the last two is the double-count; in the template's example it is 48% of the platform sum.
The structure maps one-to-one onto a Looker Studio report. The Sheets version is free to copy; the Looker Studio build with dedup logic in calculated fields is shared through our custom reporting service because it needs your data connected.
