Back to BlogOptimization

Why Your ROAS Is Wrong and How to Fix It

Your platform-reported ROAS is inflated by 20-60%. Here are the five reasons why and the three methods to get to the real number.

Go Funnel Team7 min read

The ROAS illusion

Meta says your ROAS is 4.2x. Google says it's 3.8x. Your actual revenue divided by total ad spend gives you a ROAS of 2.1x.

This isn't a rounding error. It's a structural problem with how ROAS is calculated by ad platforms, and it affects every advertiser running ads on more than one channel.

Understanding why your ROAS is wrong is the first step toward fixing it. And fixing it is the difference between optimizing toward real profit and optimizing toward an illusion.

Reason 1: Double-counting across platforms

Every ad platform attributes conversions independently. When a customer clicks a Meta ad on Monday and a Google ad on Wednesday, then buys on Friday, both Meta and Google claim the full sale.

For a brand running 5 channels, this double (or triple or quadruple) counting inflates total attributed revenue by 40-100%. A 2024 analysis by Measured found that the average advertiser's platform-reported revenue exceeds actual revenue by 2.3x when summed across all channels.

Why platforms do this. Each platform tracks conversions using its own pixel and attribution window. Meta doesn't know what Google reported, and vice versa. Neither platform has an incentive to share credit.

How it inflates ROAS. If Meta claims $400K and Google claims $300K in revenue against a combined spend of $200K, the blended platform ROAS looks like ($700K / $200K) = 3.5x. But actual revenue is $500K, making the true ROAS ($500K / $200K) = 2.5x. The gap is 40%.

Reason 2: View-through inflation

Meta counts a conversion if a user merely saw an ad impression and later converted within the view-through window -- even without clicking. With the default 1-day view-through window, any conversion that happens within 24 hours of seeing any Meta ad impression gets attributed to Meta.

For brands running high-volume prospecting campaigns, this captures a significant number of conversions that would have happened without the ad. A user who sees your ad in their feed while scrolling and then buys via branded Google search 6 hours later wasn't necessarily influenced by the ad -- but Meta claims the sale.

Scale of the problem. Industry estimates suggest that 15-30% of Meta-reported conversions are view-through attributions where the ad had minimal or no influence on the purchase decision. This is especially problematic for brands with strong organic demand.

Reason 3: Modeled conversions

Since iOS 14.5, Meta and Google can't directly track a substantial portion of conversions. Both platforms now use statistical models to estimate the conversions they can't observe.

Meta's aggregated event measurement and Google's enhanced conversions fill gaps in data using machine learning models trained on the conversions they can observe. The models estimate what's missing.

The problem. These modeled conversions are estimates, not observations. The models tend to err on the side of attributing more conversions to the platform (because that's what the training data looks like -- if the model can see a conversion, the platform probably influenced it). Independent audits suggest modeled conversions inflate reported ROAS by 10-25%.

Reason 4: Attribution windows that are too wide

Google Ads defaults to a 30-day click attribution window. That means if a user clicks a Google ad on March 1 and buys on March 29 (having seen 10 other marketing touchpoints in between), Google claims the full sale.

Why this inflates ROAS. Wider windows capture more conversions, including many that were primarily driven by touchpoints that occurred after the click. A 30-day window produces 15-25% more attributed conversions than a 7-day window, according to data from Google's own attribution reports.

The right window depends on your purchase cycle. A 30-day window might be appropriate for a $2,000 B2B product with a long sales cycle. It's too generous for a $30 impulse purchase where 90% of conversions happen within 48 hours.

Reason 5: Revenue reporting mismatches

Platforms sometimes report gross revenue, not net revenue. If a customer buys $200 in products but returns $80, the platform still reports $200 in attributed revenue. Cancellations, chargebacks, and partial refunds aren't deducted from platform ROAS calculations.

Scale of the problem. For e-commerce brands with 15-25% return rates (common in apparel), the gap between platform-reported revenue and actual net revenue is significant. A 4.0x reported ROAS becomes 3.0-3.4x after accounting for returns.

How to calculate your real ROAS

Method 1: Server-side ROAS (baseline)

Use your e-commerce platform or CRM as the revenue source, not the ad platform.

  1. Pull total net revenue from Shopify, Stripe, or your ERP for the period.
  2. Pull total ad spend from each platform.
  3. Calculate blended ROAS: Net Revenue / Total Spend.

This gives you the true blended ROAS across all channels. It doesn't tell you which channel produced the revenue (that requires attribution), but it grounds your expectations in reality.

Typical gap: Server-side blended ROAS is 30-50% lower than the weighted average of platform-reported ROAS figures.

Method 2: Attributed ROAS with deduplication

Apply a consistent multi-touch attribution model across all channels to distribute revenue without double-counting.

  1. Track every conversion server-side with full journey data (all touchpoints).
  2. Apply a multi-touch model (position-based, time-decay, or data-driven).
  3. Calculate channel ROAS using attributed revenue, not platform-reported revenue.

Example: A conversion worth $200 is attributed: 40% to Meta ($80), 20% to Google ($40), 20% to email ($40), 20% to direct ($40). Meta's ROAS is calculated on $80 of attributed revenue, not the full $200 it claims.

Method 3: Incremental ROAS (gold standard)

Measure the incremental revenue caused by each channel through controlled experiments.

  1. Run a geo-lift test or conversion lift study for each major channel.
  2. Calculate incremental revenue: the revenue that would not have occurred without the channel.
  3. Incremental ROAS = Incremental Revenue / Channel Spend.

What you'll find: Incremental ROAS is typically 30-60% lower than platform-reported ROAS for direct-response channels, and sometimes higher for awareness channels that platforms under-credit.

What to do with the real numbers

Once you have accurate ROAS figures:

Set realistic targets. If your true blended ROAS is 2.1x, don't set channel targets at 4x. You'll over-optimize for attribution gaming rather than real revenue growth.

Reallocate budget. Channels with high incremental ROAS relative to spend are under-invested. Channels where the gap between platform ROAS and incremental ROAS is largest are over-invested.

Report honestly. Show the CFO the real numbers. A 2.1x ROAS with high confidence is more useful than a 4.2x ROAS that nobody trusts.

FAQ

If my real ROAS is lower than reported, does that mean my advertising isn't profitable?

Not necessarily. A 2x ROAS means you're generating $2 in revenue for every $1 in ad spend. If your gross margins are above 50%, that's profitable. The lower number is accurate -- the higher number was an illusion. Make profitability calculations on the real number, not the platform-reported number.

Which platform over-reports ROAS the most?

Meta tends to have the largest gap between reported and true ROAS, primarily due to view-through attribution and modeled conversions. Google over-reports less because its attribution is largely click-based. However, Google's 30-day default window inflates numbers for short-cycle products. The gap varies by industry, product price, and channel mix.

Should I stop looking at platform-reported ROAS entirely?

No. Platform ROAS is useful for within-channel optimization: comparing campaigns, ad sets, and creatives on Meta using Meta's own metrics is valid because the measurement methodology is consistent. The problem arises when you compare platform ROAS across channels or use it for budget allocation. For that, use your unified, deduplicated ROAS.


Go Funnel uses server-side tracking and multi-touch attribution to show you which ads actually drive revenue. Book a call to see your real numbers.

Want to see your real ROAS?

Connect your ad accounts in 15 minutes and get attribution data you can actually trust.

Book a Call

Related Articles