Why your Shopify sales don't show up in Meta
Your store recorded the orders. Meta did not. This page walks through the four reasons that happens, in the order worth checking, with what each one looks like from your side.
Shopify sales go missing in Meta when the browser-side report of the sale never arrives. Shopify records the order from its own server, but Meta usually learns about it from a script in the shopper's browser, and that script can be blocked, restricted, or refused without the sale being affected at all.
Is the sale missing, or just attributed elsewhere?
Check this first, because it changes everything that follows. If Meta shows fewer total conversions than your store shows orders, reporting is being lost. If the totals roughly agree but a campaign looks weak, nothing is missing and you are looking at an attribution question instead.
Compare a single day, not a month, and compare Meta's conversion count against your store's order count for the same day in the same time zone. Time zone mismatches invent gaps that do not exist.
Was the reporting script blocked?
This is the most common cause and the least visible one. A blocker refuses the request that reports the sale, so the order completes normally and Meta never hears about it. Nothing appears in your store's admin, because from your store's point of view nothing went wrong.
Worth knowing: this happens without anyone installing an extension. Firefox enables tracking protection by default and Safari restricts what a browser-side script can retain, so a meaningful share of the loss comes from browsers behaving as shipped.
Did the shopper decline tracking?
Then the sale is legitimately outside the reporting, and no tool should recover it. A refusal removes data rather than hiding it. This is the one cause on this page with no fix, and any product promising to close it is describing something you should not buy.
Did the click information survive to the checkout?
Meta matches a sale to an ad partly through the click identifier it attached to the visit. A redirect that strips the query string, or a browser expiring the cookie holding it within a day, breaks that link. The sale then arrives unattached and gets credited to nothing.
What actually closes the gap
- Report the sale from your server instead of the browser, so a blocker never sits in the path. The order is already on your server; nothing new is collected.
- Send the details the order already contains. A browser knows four things about the buyer; the order knows a name, a city, a postcode and often a phone number.
- Keep the click identifier from landing to checkout, rather than hoping a cookie survives.
- Keep the pixel running alongside it, matched on a shared event identifier, so the sale is counted once and not twice.
Sources
- Firefox enables Enhanced Tracking Protection by default for all users, blocking known trackers with no extension installed.Mozilla
- On our own test store, reporting server-side raised the match parameters sent with each purchase from 4 to 14, and Meta's Event Match Quality to 8.0 out of 10, read on 18 August 2026. The same score read 9.3 on 21 August, once the browser half was reporting as well.wesaw, own test store
The terms on this page
What wesaw does about it
Last reviewed: