Why your Meta ROAS is lying to you (and how to find the real number)
Meta's reported revenue and your actual Stripe revenue rarely match. Here's why the gap exists, what it means for your campaigns, and how to reconcile them automatically.
You open Meta Ads Manager on Monday morning. ROAS is 4.2. You feel good. Then you check Stripe. Revenue for the weekend is down 18%. These two numbers are measuring the same business, the same campaigns, the same customers — and they're telling completely different stories.
This isn't a bug. It's a feature. Meta is measuring what it wants to measure. Your job is to know the difference.
Why Meta's ROAS is inflated
Meta attributes revenue using a lookback window — typically 7-day click or 1-day view by default. That means if someone saw your ad and then purchased a week later after googling your brand name, Meta takes credit. So does Google Search. So does organic. You've now triple-counted one sale.
- →View-through attribution: Someone sees your ad but doesn't click. Later buys. Meta counts this as a conversion.
- →Cross-device gaps: A user sees the ad on mobile but converts on desktop. Platforms lose the thread and count imprecisely.
- →Modeled conversions: Meta uses statistical modeling to fill in conversion data it can't directly observe (especially post-iOS 14).
- →Timing mismatches: Meta counts the click date, Stripe records the charge date. Refunds and disputes further complicate the picture.
The reconciliation gap in practice
In our experience working with DTC brands, the gap between Meta-reported revenue and Stripe-actual revenue typically ranges from 25% to 60%. That means your real ROAS could be 2.8 when Meta says 4.2. At scale, this matters enormously for budget decisions.
If you're making scaling decisions based on a ROAS that's 40% higher than reality, you're systematically over-investing in paid acquisition — and the P&L will eventually surface that.
How to find the real number
The only true north star is comparing Meta's attributed revenue to your actual payment processor revenue over the same time window. Here's how to do it manually, and then how to do it in 30 seconds.
The manual method (30–90 minutes per week)
- 1.Export Meta Ads revenue by campaign for your chosen date range (7-day or 30-day window).
- 2.Pull Stripe revenue for the same period, filtered by the discount codes or UTM-tagged product URLs tied to paid traffic.
- 3.Calculate the ratio: Stripe revenue ÷ Meta-reported revenue. This is your blended attribution factor.
- 4.Apply that factor back to your ROAS to get an adjusted figure.
- 5.Track this ratio weekly — if it's moving, something changed in your attribution or your funnel.
The Mavrick method (30 seconds)
Mavrick pulls both data sources simultaneously, runs the comparison, and surfaces the discrepancy — broken down by campaign. You get a table showing which campaigns are closest to truth and which ones are most inflated. The result lands in Slack in about 20 seconds.
What to do with the real number
Once you have your adjusted ROAS, re-baseline your scaling thresholds. If your target ROAS is 3.0 and Meta is reporting 4.2 but your actual is 2.8, you're below threshold — even though the dashboard says you're crushing it.
- →Set scaling thresholds against Stripe-adjusted ROAS, not Meta-reported.
- →Monitor the attribution gap weekly — if it widens suddenly, investigate your tracking setup.
- →For new campaigns, run a 2-week attribution analysis before scaling to understand the campaign's specific gap.
- →Report adjusted ROAS to leadership. It's uncomfortable, but it's accurate.
The honest bottom line
Meta's ROAS is a useful signal, not a ground truth. It tells you relative performance between campaigns with reasonable accuracy. It tells you absolute performance with meaningful inflation. The operators who understand this distinction make better scaling decisions than the ones who trust the dashboard.
Run the reconciliation. Know your real number. Make decisions from reality, not from what Meta wants you to believe.
Stop pulling data. Start commanding Mavrick.
10 free missions. Connects to your accounts in minutes.