Skip to content

Why Meta ROAS Doesn’t Match Shopify — The ROAS Discrepancy Explained

You open Meta Ads Manager and see a 4.2x ROAS. You open Shopify and run the same numbers. They don’t match. Sometimes they’re off by 20%. Sometimes by 60% or more. This isn’t a pixel issue or a tracking bug — it’s a structural feature of how Meta measures performance. Understanding why the gap exists is the first step to using the numbers correctly.

Reason 1: Attribution windows count conversions you didn’t earn

Meta’s default attribution setting is “7-day click, 1-day view.” This means Meta claims credit for any conversion where the customer clicked your ad in the past 7 days, or merely viewed your ad in the past 24 hours.

The view-through component is the most inflating. A customer who scrolled past your ad in their feed Monday morning, did not click, then went directly to your site Monday evening and completed a purchase they’d been planning for a week — that conversion is counted by Meta. No click. No engagement. Just passive exposure. Meta calls it a conversion. Your pixel records it. Your ROAS looks stronger.

Switching to a 7-day click, 0-day view window (removing view-through attribution) almost always produces a lower reported ROAS but a more accurate one. Most sophisticated merchants make this switch early. You can do it in Meta Ads Manager → Campaign → Attribution Settings. Don’t be alarmed when ROAS drops — that’s the phantom conversions leaving your numbers.

Reason 2: Meta measures its own performance (self-reporting bias)

Meta’s pixel is measuring Meta’s performance, reported through Meta’s system, to help you make decisions about spending more with Meta. The incentive structure matters. While Meta isn’t deliberately manipulating numbers, the system is designed to show conversions as broadly as its attribution rules allow — and the rules are set by Meta.

This is why the most reliable performance measurement always starts with Shopify orders as the denominator. Shopify has no incentive to inflate your revenue figure. It recorded what happened at checkout. That number is ground truth. Meta’s number is a marketing metric useful for relative comparisons within the platform — not for comparing to real business outcomes. Read more on this in What Nobody Tells You About Your ROAS.

Reason 3: Cross-platform overlap — the double-counting problem

The most significant source of discrepancy for merchants running both Meta and Google is cross-platform overlap. When a customer touches both channels before converting, both platforms claim the sale.

A typical cross-channel journey

  1. Customer sees your Meta video ad on Saturday — scrolls past, doesn’t click
  2. Customer sees your Meta carousel ad Sunday — clicks, browses, leaves without buying
  3. Customer searches for your product on Google Tuesday — clicks your Shopping ad, adds to cart
  4. Customer receives your Meta retargeting ad Tuesday evening — clicks through and completes purchase
Meta claims1 conversion (7-day click)
Google claims1 conversion (last-click)
Shopify records1 order
Total platform claimed2 conversions (200% of reality)

Across an account running both channels, this overlap typically runs 20–40% of total attributed conversions. An account claiming 150 Meta conversions and 95 Google conversions in the same period may have only 180 Shopify orders — not 245. The 65 “extra” conversions are the overlap. The deep dive on this is in Channel Overlap and Double Attribution.

How to use both numbers correctly

Use Shopify revenue for budget decisions

Total ad spend ÷ Shopify total revenue gives your blended true ROAS. This is the number you use to decide whether to increase or decrease total ad spend. It’s not glamorous, but it’s accurate.

Use Meta ROAS for relative creative and placement decisions

Meta’s ROAS number is useful for comparing creative A vs creative B within the same campaign, or placement X vs placement Y. As long as you’re comparing apples to apples within the platform, the relative performance signal is directionally correct — even if the absolute number is inflated.

Switch to 7-day click, 0-day view attribution

This single change removes the most inflated component of Meta’s reporting. Expect reported ROAS to drop 15–30%. The actual business performance hasn’t changed — you’ve just removed phantom view-through conversions from the count.

Run an incrementality test on your highest-spend channel

The only way to know your true overlap rate is to measure it directly. Incrementality testing using holdout groups gives you a channel-specific true ROAS that accounts for all sources of overcounting — windows, self-reporting, and overlap.

The ROAS gap between Meta and Shopify is one of three structural inflation sources that the ROAS manifesto documents. The other two are brand cannibalization and creative fatigue. Together they account for the full gap between the number on your dashboard and the number that reflects what your ads are actually doing. The Ripplux methodology models all three corrections against your actual Shopify and ad data.

Find the gap between your Meta ROAS and your real ROAS

The free calculator estimates overlap, cannibalization, and fatigue waste from your spend and revenue figures. No signup required.

Related reading