Attribution

Why Shopify and Meta Ads show different sales numbers

Meta's Ads Manager and your Shopify orders page are measuring two different things, on two different windows, with two different standards of evidence. The gap between them isn't a bug — it's what you should expect.

A transaction record vs. an attribution model

Shopify records a fact: an order was placed, for this amount, at this time. Meta doesn't have access to that fact directly — it estimates which of its ads probably caused a purchase, using its own attribution model, and reports revenue against that estimate. One is a ledger. The other is a model built on incomplete visibility into what happened outside Meta's own properties.

Attribution windows count different time periods

Meta's default attribution setting credits a purchase to an ad if it happened within a set window after a click or a view — commonly 7 days after a click, 1 day after a view, though this is configurable per ad account. A customer who saw an ad on Monday and bought two weeks later, unprompted by anything else, falls outside that window and gets no credit. Shopify has no equivalent window — it just has the order timestamp.

View-through credit inflates the count

Click-through attribution — someone clicked the ad, then bought — is the more defensible half of Meta's number. View-through attribution credits a purchase to an ad the customer saw but never clicked, based on the assumption that the impression influenced the decision. That assumption is unverifiable at the individual level. It's also the single biggest reason Meta's reported sales run higher than what a click-only view would show.

Cross-device journeys and double-counted credit

A customer scrolls Instagram on their phone, then buys on a laptop an hour later. Meta can sometimes bridge that with logged-in identity signals, sometimes can't. Separately, Meta and Google frequently claim the same order — a customer who saw a Meta ad and later searched the brand name on Google can show up as a conversion in both platforms' reporting, each unaware of the other's claim. Add both platforms' numbers together and you'll usually overstate total attributed revenue.

Consent and browser limits cut both ways

Browser restrictions, ad blockers and declined tracking consent reduce what Meta can observe directly — which, on its own, would undercount Meta's true influence. Server-side tracking (Meta Conversions API) recovers some of that lost signal, but it still depends on the customer having consented and on enough matching data being sent. The undercounting pressure from tracking loss and the overcounting pressure from view-through credit and cross-platform double-claiming are pulling in opposite directions at the same time — which is part of why the gap between platforms isn't consistent from month to month.

What's actually worth checking

Chasing an exact match between Meta and Shopify isn't a realistic goal — the two systems aren't measuring the same thing by design. What's worth checking is whether the ratio between them stays roughly stable over time. A sudden jump — Meta suddenly reporting 40% more or less than usual relative to Shopify — is a signal something changed: a tracking break, a new attribution setting, or a duplicate event issue. That's a more useful question than "why don't these two numbers match."

Common questions

Which number is correct — Meta's or Shopify's?
Neither is wrong, and neither is the full picture. Shopify records what was actually purchased. Meta records what its attribution model credits to Meta ads within its own measurement window. They're answering different questions.
Should Meta's reported sales ever equal Shopify's total sales?
No — Meta only reports the subset of Shopify orders its model attributes to Meta ads. It was never going to equal total store revenue, which includes direct, email, organic and every other channel too.
Does turning off view-through attribution fix the gap?
It changes the gap, not necessarily improve it. Removing view-through credit usually lowers Meta's reported number and makes it look more conservative, but it doesn't make the remaining click-based number any more "true" — it's just a different, narrower model.

See both numbers side by side

Connect your store, Meta and Google accounts to see platform- reported revenue next to actual Shopify orders, for your own data.