Skip to content
Bach.ai

6 Ways Meta's Reported ROAS Secretly Double-Counts Revenue

The number in Ads Manager that decides your budget is not a measurement of incremental revenue. It is a claim assembled from attribution rules, statistical estimates, and pre-refund order values — and almost every one of those rules is built to credit the platform, not to find the truth. When operators say Meta ROAS is overstated, they in many cases mean it as a vague suspicion. It isn’t vague. It’s six specific, stackable mechanisms, and each one can inflate the same sale more than once.

Here’s how the over-counting actually happens, and what to trust instead.

For the neighboring economics, compare Modeled Conversions: How Much ROAS Is Estimated? and use Abandoned-Cart Flows That Recover Revenue Without Discounts to validate the measurement decision.

Why “reported” is the load-bearing word

Reported ROAS = conversion value Meta claims ÷ spend. The denominator is honest — you really did spend that. The numerator is a negotiated number: it depends on which attribution window you picked, whether the conversion was observed or modeled, whether other tools also claimed it, and whether the order survived to become real revenue. Change any of those settings and the “return” changes while nothing about your business changed. That gap is where the inflation lives.

1. View-through windows credit impressions as decisions

A view-through conversion means someone saw an ad — didn’t click — and later bought, inside the view window. Meta then books that sale against the ad.

The problem isn’t that view-through is always zero value; it’s that it’s the least-supported possible signal being counted at full value. A person scrolling past your creative for a second, who was already going to buy, generates a view-through credit indistinguishable from a hard-won new customer. On broad prospecting and especially on retargeting, view-through can quietly carry a large share of “reported” conversions. Strip it out and watch how much of your ROAS was built on impressions nobody acted on.

Operator move: report click-only conversions as your spine, and treat view-through as a separate, discounted line — never blended into the headline multiple.

2. Your own campaigns double-count the same order

Each ad set evaluates conversions inside its own attribution window, independently. So when a buyer touches your prospecting ad on day one and your retargeting ad on day five, both can claim the purchase. Sum the campaign-level conversions and you get a total larger than the orders that actually happened.

The tell is simple and you can check it today: add up conversions across all your active campaigns and compare to account-level conversions in the same window. If the parts exceed the whole, you’ve found in-platform double-counting. This is why deduplicated, account-level reporting always shows a lower — truer — number than the sum of the campaign tiles you’ve been optimizing toward.

3. Every channel claims the same sale, and you add them up

Last-click analytics, your email tool, and Meta will each independently take credit for one order. Nobody is lying; they’re each answering “did a touch from me precede this purchase?” and for one customer the answer is frequently yes across all of them.

The damage shows up when you sum platform-reported ROAS across channels and the implied revenue sails past what actually hit your bank. If three surfaces each report a healthy return on the same orders, your blended economics are worse than any single dashboard suggests. The number that can’t be double-claimed is total revenue divided by total spend — your MER. Hold every channel’s self-reported ROAS up against MER and the overlap becomes obvious.

4. Modeled conversions are estimates wearing the same uniform as observed sales

Since signal loss from privacy changes, a meaningful slice of reported conversions are modeled — Meta needs enough recent optimization-event signal to measure directly, and where it can’t, it statistically estimates what likely happened. Those estimates are then displayed in the same column, same formatting, as conversions that were actually observed.

Modeling isn’t inherently dishonest; over time it can be directionally fine. But it is a manufactured number presented with the confidence of a counted one, and the modeling is tuned by the same party whose performance it reflects. Treat any reported figure as a blend of observed and inferred — and never make a high-stakes scaling decision on a window dominated by modeled conversions.

5. Reported revenue is gross, recorded before the sale is real

Meta books conversion value at the moment of purchase. Your actual revenue is what remains after refunds, returns, cancellations, failed or undeliverable orders, payment failures, and chargebacks. None of those reversals flow back to deflate the ROAS that originally took credit.

For some catalogs the gap between gross booked value and net retained revenue is small. For higher-return categories it is not, and it falls most difficult exactly where you scale aggressively — discount-driven, impulse, or trial-heavy demand returns at higher rates. As an illustrative planning exercise, run two ROAS lines:

Revenue basis What it includes Use it for
Reported (gross) Order value at checkout, pre-reversal Real-time optimization signal
Net (post-refund) After returns, cancellations, failures Budget and margin decisions

If you’ve never reconciled the two, your “winning” ROAS threshold is set on money some of which you gave back.

6. Retargeting takes credit for demand that already existed

The most expensive form of overstatement isn’t a counting bug — it’s the incrementality gap. A 7-day click window will credit your ad for buyers who were already on their way to checkout: returning customers, branded searchers you re-served, cart-abandoners who’d have come back anyway. The conversion is real. The incremental contribution of the ad is frequently near zero.

This is why a retargeting campaign can post a gorgeous reported multiple and contribute almost nothing new. The only honest test is a holdout: suppress the audience for a slice of users, compare conversion rates, and measure the lift the ads actually caused. Reported ROAS answers “did a purchase follow a touch?” Incrementality answers “would the purchase have happened anyway?” — and only the second one pays your bills.

What to anchor on instead

None of this means abandon Ads Manager. It means demote reported ROAS from verdict to signal, and triangulate against numbers that can’t be double-claimed:

  • MER (total revenue ÷ total ad spend) as the source of truth. It is immune to view-through inflation, in-platform overlap, and cross-channel collision by construction.
  • Net revenue, post-refund, for any margin or scaling decision.
  • Click-only conversions as your working baseline; view-through and modeled as discounted, labeled side-lines.
  • Periodic holdouts on retargeting and warm audiences to separate credited sales from caused sales.

When reported ROAS and MER diverge, MER wins — every time. A clean way to keep that discipline is to make the gap visible continuously rather than rediscovering it each month; an always-on read-only operator like Bach can surface where platform-reported numbers drift from blended reality, then propose fixes you approve before anything changes.

The takeaway

Meta isn’t hiding a single lie inside ROAS — it’s stacking six honest-but-self-serving conventions on top of each other: impressions counted as decisions, your own campaigns claiming the same order, every channel claiming it again, estimates dressed as observations, gross revenue before refunds, and credit for demand that already existed. Each inflates the same sale a little. Together they can turn a break-even account into one that reports a comfortable return. Anchor on MER, reconcile to net revenue, run holdouts, and let reported ROAS be the dial you tune — never the scoreboard you trust.

See what your Meta ads are really costing you.

Connect your account and Bach ranks every revenue leak in minutes — each with the money it costs and a one-tap fix. Free for 7 days, no credit card.

Start Free Audit
Start your free audit