Why Your Meta Ads ROAS Is Broken (and What to Trust Instead)

Why Your Meta Ads ROAS Is Broken (and What to Trust Instead)

By Arthur Falcone · Founder of Arlo

Your Meta ROAS looks broken because it measures something different from what you think it measures. It counts orders inside Meta's own attribution window, adds view-through conversions from people who never clicked, fills iOS tracking gaps with modeled estimates, and claims orders that Google and email also claim. To judge whether paid is actually working, trust blended MER, contribution margin, and new customer CAC instead.

That's the compressed answer. The rest of this post walks through each of those five mechanics, shows how large the gap gets in practice, and gives you the three replacement numbers plus one habit that keep you honest.

One scoping note before we start. This is not a post about the difference between ROAS and ROI. If you're still working out which of those two metrics belongs in which decision, read ROAS vs ROI for Shopify founders first. This post assumes you know the definitions and asks a narrower question: why the specific ROAS number inside Meta Ads Manager disagrees with your bank account, and what deserves your trust instead.

#Table of Contents

#What Meta's ROAS Number Actually Measures

The ROAS in Ads Manager is revenue that Meta attributes to your ads, divided by what you spent. Every input in that ratio is defined, measured, and reported by Meta. The platform that sells you the ads also grades the ads. That's not a conspiracy, it's just the structure, and you should price it into how much you trust the number.

The attribution rules matter more than most founders realize. By default, Meta counts a purchase as ad-driven if the buyer clicked one of your ads within the past 7 days, or merely saw one within the past day. Meta documents these rules in its attribution windows help page, and you can change the setting per ad set, but almost nobody does.

Read that default again from the customer's side. Someone clicked your ad on Tuesday, thought about it, searched your brand on Friday, clicked an email on Saturday, and bought. Meta counts that order at full value. So might Google. So might Klaviyo. Your Shopify admin recorded exactly one order.

#Five Reasons Meta's ROAS Diverges From Reality

Each of these mechanics pushes the reported number in the same direction: up.

#1. Attribution windows claim orders your ads didn't cause

A 7-day click window cannot distinguish "this ad created a customer" from "this ad was clicked by someone already on their way to buying." Retargeting is the extreme case: you pay to show ads to people who visited your site, carted a product, or bought before. Many of them convert inside the window regardless of the ad. The window records a conversion either way, because a window measures time, not causation.

The higher your brand's organic pull (strong repeat rate, active email list, word of mouth), the more of your "ad-driven" revenue is really just your existing demand walking through a door Meta happened to be standing next to.

#2. View-through conversions count people who never clicked

The second half of the default setting is a 1-day view window. If someone scrolls past your ad without touching it and buys within 24 hours through any path (typed your URL, opened an email, tapped a bookmark), Meta counts the purchase. View-through attribution assumes the impression caused the sale. Sometimes it did. Often the person was already a customer with your product in their cart.

For a store with meaningful email revenue, view-through credit quietly reassigns a slice of your retention revenue to your acquisition channel every single day.

#3. Modeled conversions fill the iOS signal gap with estimates

Apple's App Tracking Transparency prompt, which arrived with iOS 14.5 in April 2021, lets iPhone users opt out of tracking, and most did. Meta told investors the change would reduce its 2022 revenue by roughly $10 billion, which tells you how much of its measurement machinery the prompt disabled.

Meta's answer was statistical modeling. Where tracking data is partial or missing, Meta's own reporting documentation says results "may use statistical modeling" to provide a more complete view of conversions. Modeled conversions aren't fabricated, but they are estimates rather than observations, Ads Manager doesn't tell you which portion of your results is modeled, and you cannot audit them. The number on your dashboard is part measurement, part inference, presented with the confidence of a measurement.

#4. Meta and Google both claim the same order

Every ad platform runs its own attribution in its own silo. A customer who clicked a Meta ad on Monday and a Google Shopping ad on Wednesday before buying shows up as a full conversion in both dashboards. Neither platform knows the other exists, and neither has any incentive to hand back credit.

Run this check once and you'll never unsee it: add up the revenue Meta and Google each claimed last month, then compare the total to your actual Shopify revenue from those channels. Across the Shopify stores Arlo analyzes, the platforms together routinely claim more revenue than the store took in. Both numbers cannot be true. This is the double-counting problem that multi-touch attribution models try to arbitrate, with mixed success.

#5. Repeat buyers and retargeting inflate the blended number

Blended ROAS pools everything: prospecting, retargeting, new customers, repeat customers. A store two or three years in, with a healthy repeat base, can show a 4x blended ROAS while new-customer ROAS on the same campaigns sits below 2x. The repeat customers in the numerator, people your brand earned through retention, are covering for losses on every new acquisition.

You can grow revenue for a while this way. You cannot grow the customer base, and the failure is slow: blended ROAS holds steady for months while new customer count quietly declines, because repeat buyers keep the headline number afloat. Split new-customer ROAS from repeat-customer ROAS and make budget decisions only on the former. Meta can't do this split natively. Shopify can.

#How Big the Gap Gets

Stack those five mechanics and the divergence is not a rounding error. Across the Shopify stores Arlo analyzes, in-platform ROAS typically reads 30% to 50% higher than what post-purchase surveys ("where did you first hear about us?") support. That is not a universal law, it's the recurring pattern in the data we see, and your gap depends on how much retargeting, repeat revenue, and email overlap your account carries.

The most rigorous public evidence for the direction of the bias comes from eBay, which ran large-scale experiments turning paid search off entirely in matched markets. The result, published as Blake, Nosko, and Tadelis (2015), found that the true returns were a fraction of what non-experimental attribution suggested, and that ads shown to existing, frequent customers had close to no measurable effect. Different platform, same mechanism: attribution systems overcredit ads for purchases that were coming anyway.

The founder-grade version of that experiment costs almost nothing: a one-question post-purchase survey at checkout. Survey vendor Fairing reports 40% to 80% response rates on post-purchase attribution questions, which is enough volume to be useful within weeks. Compare what customers say to what Meta claims and the delta becomes your standing correction factor.

Attribution software can narrow this gap, but no tool closes it, because the missing data (what the customer would have done without the ad) doesn't exist in any pixel. If you're evaluating tooling anyway, see how Arlo compares to Triple Whale before you commit to an attribution platform's monthly bill.

#What to Trust Instead

Three numbers and one habit. None of them can be inflated by an attribution model, which is the point.

#Blended MER

Marketing efficiency ratio: total store revenue divided by total ad spend, all platforms, no attribution involved. MER can't be gamed because it doesn't ask who deserves credit; it just asks whether the whole machine produces more than it consumes. Its weakness is the mirror of its strength: it won't tell you which campaign is failing, only that something is. Watch the trend, not the level. A MER that slides for four consecutive weeks while spend is flat means your ads are genuinely getting less effective, whatever Ads Manager says. For where MER fits next to the platform metrics, read MER vs ROAS vs ROI.

#Contribution margin per new customer

ROAS treats a dollar of revenue as a dollar. It isn't. Pull out COGS, shipping, payment processing, and returns, and what's left is contribution margin, the only money available to pay for acquisition.

The arithmetic is unforgiving. At a 35% contribution margin, your break-even ROAS on new customers is 1 divided by 0.35, which is roughly 2.9x. A 2x ROAS that looks respectable on the dashboard is a guaranteed loss on every first order. Run your own number: $58 first-order AOV at 38% contribution margin with a $35 CAC nets $58 × 0.38 − $35 = roughly negative $13 per new customer. That can still be a fine trade if repeat purchases recover it quickly, but only if you know the number and how fast it pays back.

Calculate contribution margin once with your accountant, across your top five SKUs, and revisit it quarterly. One afternoon of work produces the ceiling every spend decision should respect.

#New customer CAC

Total paid spend divided by new customers acquired, counted from Shopify's first-time customer data rather than Meta's attributed purchases. Meta's reported cost per purchase includes repeat buyers who clicked an ad, so true new customer CAC always comes out higher, sometimes much higher.

This is the number to manage budget against weekly. The alert threshold Arlo sets in its weekly reports is a move of more than 15% against the trailing four-week average: below that is noise for most stores, above it is a real drift in acquisition economics that blended ROAS will hide for weeks.

#A holdout habit, even an informal one

You don't need conversion lift studies. Start with the post-purchase survey and treat the gap between survey attribution and platform attribution as your correction factor. If you spend enough for the decision to matter, run a crude geo holdout: turn Meta off in a set of comparable zip codes or one region for two weeks and watch what happens to new customer count there versus everywhere else. The question you're answering is the only one that matters: when Meta claims a conversion, would it have happened anyway?

#How to Use Meta's Dashboard Without Being Misled

None of this is an argument to stop running Meta. For most Shopify DTC brands it remains the most effective paid acquisition channel available, and founders who overcorrect into "ads don't work" learn an expensive lesson in the other direction. The argument is about where you read the scoreboard.

In practice:

  • Daily: glance at in-platform ROAS as a directional check only. A 3x day is probably better than a 1x day. Never make a structural budget decision from it.
  • Per ad: kill-or-scale decisions should run on contribution margin math, not platform ROAS. Our free Should I Kill This Ad tool does that arithmetic for you in about a minute.
  • Weekly: track new customer CAC and MER against your thresholds. This slots naturally into a weekly growth review if you already run one.
  • When revenue drops: resist opening Ads Manager first. Attribution noise makes it the worst place to start a diagnosis; work through a structured revenue drop diagnosis instead.

#A Worked Example

You're doing $250K per month. Meta spend is $40K, Google is $8K. Meta reports a blended 3.1x ROAS and a $27 cost per new-customer purchase. Your agency says things are healthy.

Now run the framework:

  • MER: $250K ÷ $48K = 5.2x blended. Fine on its own, but it's been sliding from 5.8x over eight weeks while spend held flat. That trend is the first honest warning.
  • Survey correction: your post-purchase survey says 65% of Meta-attributed new customers actually first heard of you on Instagram or Facebook. The rest cite Google, a friend, or a podcast. Corrected new customer CAC: $27 ÷ 0.65 = roughly $42.
  • Contribution margin: $22 per order on a $62 AOV. First-order economics per new customer: $22 − $42 = negative $20.
  • Payback: your cohorts recover that $20 in roughly two months of repeat purchases.

The picture is now specific. You lose $20 on every new customer and earn it back over about nine weeks. If your cash position can finance that float, the machine works. If payback stretches from nine weeks toward fourteen while the dashboard ROAS never flinches, you'll want to have been watching these numbers instead. "Is a two-month payback acceptable and stable?" is a decision-grade question. "What's our ROAS?" is not.

Arlo exists to make this the default view instead of the weekend project. It reads your Shopify data weekly and puts new customer count, corrected CAC, repeat behavior, and margin-aware context in one report, so budget calls run on the business rather than the dashboard. You can start a free 14-day trial on the Shopify App Store; it's $47/month after, which is less than one mispriced day of ad spend for most stores reading this.

#FAQ

#Why is my Meta ROAS higher than my actual profit suggests?

Meta's reported ROAS counts orders within its attribution window, includes view-through conversions from people who never clicked, backfills iOS signal loss with modeled estimates, and includes repeat buyers your brand would have converted anyway. It also measures revenue rather than contribution margin, so it ignores COGS, shipping, and fees entirely. Every one of those mechanics biases the reported number upward relative to cash profit.

#What is a good ROAS for Meta ads on a Shopify store?

There is no universal target, because break-even depends on your contribution margin. Divide 1 by your contribution margin rate to find your floor: at 35% margin, break-even is roughly 2.9x on new customers, so a 2x campaign loses money on every first order. Across the Shopify stores Arlo analyzes, true new-customer break-even usually lands between 2.5x and 3.5x, well above the 2x targets many agencies set.

#Is MER better than ROAS?

They answer different questions. MER (total revenue divided by total ad spend) is attribution-proof, so it's the more honest read on whether your overall paid program pays for itself, and its trend is hard to fool. ROAS is still useful for comparing campaigns against each other inside one platform. Use MER for the "is paid working" question and platform ROAS only for relative, directional comparisons.

#How do I check how much Meta is overclaiming?

Add a one-question post-purchase survey at checkout asking where the customer first heard about you, then compare survey attribution to Meta's claimed conversions. Survey tools report 40% to 80% response rates post-purchase, so you get usable data within weeks. The gap between what customers say and what Meta claims becomes a standing correction factor you apply to every number Ads Manager shows you.

#Do post-purchase surveys hurt conversion rate?

No. The survey appears after checkout is complete, so it cannot touch conversion. A single multiple-choice question adds a few seconds to the order confirmation page, and customers answer at high rates because they just bought something. It is the cheapest attribution instrument available to a Shopify store, and the one most founders still haven't installed.

Your weekly marketing direction, built from your Shopify data.

Free for 14 days. Then $47/month.