Skip to main content
agency-reportingdtcmarketing-dashboardattributionroas

Why Most Agency Reports Lie (And What To Show Instead)

The same quarter of Meta spend in one real ad account can be reported as a 0.52× loss or a 12.63× win. Nobody has to fake a number to get either one.

Product Engineer, Marketing Bar
Updated
14 min read
A frosted-glass slab etched with a single glowing emerald dial, symbolizing one honest reporting metric over vanity decks

Agency reports mislead mostly through choices that are each defensible on their own: which attribution setting the ROAS uses, which conversion events get counted, which periods get compared, and which platform numbers get added together. In one DTC brand's Meta Ads account connected to Level, those choices alone produced a ROAS anywhere from 0.52× to 12.63× for the same quarter of the same spend. A report that doesn't state its choices lets the reader assume the flattering one.

What follows is written for the person receiving the report, a founder or in-house marketer: five red flags to spot and the questions that expose them. Clients are already asking: in AgencyAnalytics' 2026 survey of 494 agency professionals, 55% said clients now regularly ask whether marketing performance connects to revenue, and 10% of agency leaders named attribution or ROI clarity as a reason clients leave (AgencyAnalytics, 2026).

TL;DR

Key takeaways

  • A ROAS without its attribution setting is unreadable. In one Meta account, the same quarter reported 2.53× on the default setting and 0.52× on 7-day click.
  • Meta returns one purchase under five event names. Summing them by name turned a 2.53× quarter into 12.63×.
  • Choosing the comparison period is enough to change the story: the same quarter was +10% vs the previous quarter and −38% vs the same quarter a year earlier.
  • Impressions, engagement and "incremental" lifts without a holdout test don't tell you whether the business made money.
  • Ask for a written methodology page, one number that reconciles to Shopify, new-customer CAC, contribution margin per channel and the date of the last holdout test.

Why agency reports lie

A monthly report is edited by the people it grades. Each metric that makes it into the deck is one somebody chose to include, and each setting behind it (attribution window, conversion events, date range) is one somebody chose to use. None of those choices has to be dishonest for the result to be. The fix on the reader's side is to make every choice visible: if the report doesn't say which setting it used, ask.

We looked at what ranks for "agency client reporting" (Google, US desktop, 2026-10-24, top 9 organic results via DataForSEO). Seven of the nine pages are published by reporting-software vendors, the other two by agencies, and by title and snippet all nine are written for the agency producing the report. None is written for the client checking it. That is the gap this article covers.

The five lies (in increasing order of cynicism)

Lie #1: ROAS without its attribution setting

"4.7× blended ROAS" on slide one tells you nothing until you know three things: the attribution setting (which clicks and views within how many days count), which channels are pooled, and whether returning customers, organic and direct revenue are excluded. (4.7× is an illustrative number.)

The attribution setting alone moves ROAS by multiples. Here is one real DTC ad account in Level, Meta Ads, July–September 2026, with the same spend, campaigns and purchases:

Attribution settingMeta ROAS, Q3 2026
Account's default setting2.53×
1-day view only0.88×
28-day click only0.59×
7-day click only0.52×
Default, with the purchase summed across 5 event names12.63×

Bar chart: the same Meta account in the same quarter reports ROAS of 12.63× when five purchase events are summed, 2.53× on the default setting, 0.88× on 1-day view, 0.59× on 28-day click and 0.52× on 7-day click.

One quarter of Meta spend, five ROAS numbers a report could show. Source: Level, anonymized DTC ad account, Meta Ads, Q3 2026.

On click-only attribution this account doesn't return its ad spend. On the default setting it returns 2.5×. Neither is "the real ROAS"; they answer different questions. The rule for reading a report: only compare ROAS figures that use the same setting, and expect the setting written next to the number. For how the windows behave on Meta, see how to report Meta Ads correctly; the full formula and these numbers in more depth are in our ROAS formula breakdown.

Lie #2: The same order counted more than once

Double counting happens in two places.

Inside one platform. Meta reports a single website purchase under several event names at once. In the account above, the same purchase value appears under purchase, omni_purchase, offsite_conversion.fb_pixel_purchase, onsite_web_purchase and onsite_web_app_purchase: five rows with identical amounts. A spreadsheet or connector that sums them by name reports 12.63× for a quarter whose figure was 2.53×. Google Ads has its own version: in the same brand's Google account, an old and a new purchase action ran side by side for about two weeks during a tracking migration, so those two weeks counted orders twice. Ask which conversion actions are counted and whether any overlap.

Across platforms. Every platform credits purchases to its own touchpoints and can't see anyone else's. Klaviyo, by default, uses a last-touch model that credits a purchase to an email opened or clicked in the previous 5 days (Klaviyo Help Center, checked Oct 2026). Meta credits the same order to an ad clicked or viewed within its own window. Add "Meta revenue + Google revenue + Klaviyo revenue" and one order can appear two or three times. The honest method: pick one source of truth (Shopify net revenue or the payment processor's settlement) and treat platform numbers as estimates of each channel's relative contribution. They can be compared with each other; they can't be added up.

Lie #3: Impression and engagement vanity

Impressions, reach, video views and engagement rate are cheap to grow: a low-budget reach campaign adds millions of impressions without adding orders. They are platform-side activity counts, and a report that leads with them is answering "how busy were the ads?" instead of "did revenue grow?" If the headline metric isn't revenue, orders, new customers or margin, ask what the headline would be if it were.

Lie #4: The comparison period that tells the better story

The same quarter can be framed as growth or as decline. In the Level account above, Meta ROAS for Q3 2026 was 2.53×:

ComparisonROAS thenROAS Q3 2026Change
vs previous quarter (Q2 2026)2.31×2.53×+10%
vs same quarter last year (Q3 2025)4.06×2.53×−38%

Both lines are true. A deck that shows only the first is a deck to question. Over 13 quarters this account's Meta ROAS ran from 2.31× to 5.29× while quarterly spend never moved more than 14% between its lowest and highest quarter, so large swings in ROAS are possible without any change in budget.

Line chart: one DTC account's quarterly Meta ROAS from Q3 2023 to Q3 2026, ranging from 2.31× to 5.29× with near-flat spend; 4.06× in Q3 2025, 5.29× in Q4 2025, 2.31× in Q2 2026, 2.53× in Q3 2026.

Same account, spend within a 14% range: Meta ROAS ran from 2.31× to 5.29× over 13 quarters. Source: Level, anonymized DTC ad account, Meta Ads, Q3 2023 – Q3 2026.

The defensible framing: a rolling 13-week trend line, promotions and price changes marked on the chart, and a note on anything that changed between the compared periods (discounts, product mix, channel mix, attribution setting, tracking).

Lie #5: Incrementality claims without a holdout

An agency adds Performance Max or Demand Gen campaigns on top of an existing Google Ads setup, total revenue goes up, and the report calls the lift "incremental." It may be. The new campaigns may also have taken credit for branded searches that would have converted anyway, or run during a launch that lifted revenue on its own. Without a deliberate holdout (a geo split, an audience split or a time-based control), "incremental" only means "additional." Ask when the last holdout test ran and what it found.

How to check an agency report in 8 minutes

You don't need to become an analyst to read a report. Look at the same five things, in this order:

Is there a methodology page?

Attribution setting per platform, which conversion events are counted, which channels are pooled in any blended number, and what's excluded (returning customers, organic, branded search). If there is no such page, the rest of the deck can't be read.

Does any number reconcile to Shopify?

Find the line that matches Shopify net revenue for the period. If none does, ask which one is supposed to.

Is new-customer CAC on the page?

New-customer CAC = acquisition spend ÷ new customers acquired (not total orders, not repeat buyers). Blended CAC alone hides new-customer economics.

Is contribution margin per channel anywhere?

De-duplicated revenue − COGS − channel spend − fulfillment, per channel. This tells you whether a channel makes money. It requires the agency to know your COGS, which is why it's often missing.

When was the last holdout test?

Geo, audience or time-based. "Never" means there is no incrementality data, whatever the deck calls it.

The same red flags, side by side:

Red flag in the deckWhat it usually hidesQuestion to ask
ROAS with no attribution settingA window chosen for the larger number"Which setting, and what is ROAS on 7-day click?"
Platform revenue summed across channelsOrders counted by two or more platforms"Which number matches Shopify net revenue?"
Impressions or engagement as the headlineNo change in orders or revenue"What happened to new customers?"
One comparison period onlyThe other comparison goes the other way"Show me QoQ and YoY side by side."
"Incremental" lift, no testCorrelation reported as cause"When was the last holdout, and what did it find?"
Every channel profitableMissing COGS, or a hidden loser"Which channel is weakest on contribution margin?"

What reporting tools don't show by default

Agency reports are usually assembled in agency reporting tools or a free BI layer such as Data Studio (formerly Looker Studio). The ranking pages above sell these tools to agencies, and they are built around the agency's workflow. Whatever tool produced your report, check whether it shows:

  • The reconciliation gap. Platform-summed revenue minus Shopify net revenue. If it isn't a panel, someone has to build it with calculated fields.
  • New-customer CAC. It needs new and returning customers separated, which takes extra setup.
  • Connector failures. When a Meta or Klaviyo connector drops data, a chart can show a drop that is really a tracking gap. Ask whether the dashboard flags missing data.

We compared the major vendors head-to-head, including where Level fits, in our agency dashboard tools comparison. For the automation side (which tools remove manual reporting hours and which only assemble decks), see the automated reporting tools comparison.

What to show instead

An honest report is shorter: six core panels, with diagnostic panels (audience saturation, creative fatigue, promotion flags) added only when relevant. The item-by-item version is our agency report template.

PanelWhat it showsQuestion it answers
1. Net revenue reconciliationShopify net revenue, platform revenue summed raw, platform revenue de-duplicatedHow much do the platforms over-claim?
2. New-customer CAC, 13-week trendAcquisition spend ÷ new customers, weekly, promotions markedIs acquiring a customer getting cheaper or dearer?
3. Contribution margin per channelDe-duplicated revenue − COGS − spend − fulfillment, negatives in redWhich channel makes money?
4. Channel mix and saturationSpend and marginal revenue per dollar at the current levelWhere does the next dollar go?
5. Cohort revenue (90/365 days)Revenue per new-customer cohort over timeAre the customers we buy worth keeping?
6. Tracking healthEvent Match Quality in Meta Events Manager, GA4-to-Shopify match, Conversions API event volume vs expectedCan we trust panels 1–5?

The CAC calculator shows paid and fully loaded CAC side by side for panel 2. Send the report as a live dashboard rather than screenshots in a PDF, so the client can drill down and nothing can be cropped. In Level that is a shared dashboard.

Five questions to ask your current agency before renewal

Ask these in writing. The answers, or the lack of them, are the evaluation.

  1. Show me the methodology page from last month's report. A verbal explanation on a follow-up call doesn't count.
  2. Which number on the report reconciles to Shopify net revenue? There should be exactly one, and it should be the headline.
  3. What was new-customer CAC last month, and 90 days ago? If only blended CAC is reported, ask why.
  4. When was the last holdout test, and what did it find? "Never" means incrementality claims are untested.
  5. Show me a channel that is weak on contribution margin. An agency that reports every channel as profitable either lacks your COGS or is leaving the weakest one out.

If the answers point to a replacement, our questions for picking a PPC agency cover the hiring side.

Thirteen quarters of one brand's ad-account data

Every ad-account figure above is from one DTC brand's Meta Ads and Google Ads accounts connected to Level, Q3 2023 – Q3 2026, read from Level's production database. Spend and conversion values are what each platform's API reported; we did not adjust or model them. ROAS is attributed purchase value ÷ spend per quarter, counting one purchase event per platform (Meta purchase). The attribution comparison uses the per-window values Meta returns alongside the default. Period changes are computed from the quarterly ROAS: 2.53 ÷ 2.31 − 1 = +9.5% (rounded to +10%), 2.53 ÷ 4.06 − 1 = −37.7% (rounded to −38%). The brand is anonymized and absolute amounts are withheld. These are one account's numbers and are not a benchmark.

The search-result analysis is the top 9 organic results for "agency client reporting", Google US desktop, pulled via DataForSEO on 2026-10-24; we classified each by publisher (software vendor or agency) and by audience from its title and snippet.

Building the dashboard behind an honest report

For building the dashboard itself, see our cross-channel marketing dashboard comparison and the LTV by cohort dashboard reality check. The service page for the reporting work lives at custom reporting.

Level reports Meta and Google Ads in one view, synced hourly on paid plans (daily on Free), with revenue mapped to one conversion event per platform and each platform's own attribution setting. Book a Level demo to see it on your own ad accounts.

Written by

Product Engineer, Marketing Bar

Builds across the full stack — from the interfaces clients use every day to the systems running behind them, with a focus on reliability at scale.

Share