META PURCHASES

Meta shows fewer purchases than Shopify

Your Shopify admin has more paid orders than Meta's Purchase count. This page shows where the gap starts and how to look at it yourself.

Why it happens

The browser never sent the purchase. Meta can only count a purchase it receives. The Meta pixel runs in the shopper's browser, and a browser can stop it. Ad blockers block the script. Privacy settings in Safari and Firefox limit what the pixel can store. A shopper who pays and closes the tab before the confirmation page finishes loading may never trigger the Purchase event at all. Each of these orders is real in Shopify and invisible to Meta.

The shopper declined cookies. If your store shows a cookie banner and a shopper declines marketing cookies, the pixel should not report that purchase for advertising. The order is paid and counted in Shopify, and the browser report is withheld on purpose. A larger share of declines means a larger gap, and that is expected behavior, not a fault.

Nothing fills the gap from a server. A server connection sends the purchase from the store's side, so a blocked browser does not matter. Without one, every purchase that fails in the browser is lost to Meta. Your Shopify total also often includes orders that were never meant to reach Meta from your online store, such as point of sale sales, draft orders marked as paid and subscription renewals. Take those out before you judge the gap.

Check it yourself

  1. 1In Shopify admin > Orders, filter by Sales channel and keep the online store. Set the date range to the last 7 full days. Leave out draft orders marked as paid, point of sale sales and subscription renewals, and write down the count of paid orders.
  2. 2In Shopify admin > Settings > General, note your store's time zone. Events Manager may use a different time zone than your store, so compare whole days and the same days on both sides.
  3. 3In Meta Events Manager > Data sources > your pixel > Overview, set the same date range and read the count for the Purchase event.
  4. 4Still in Overview, open the Purchase event and look at where the events came from. Meta labels it under "Connection method" (Browser, Server or both). If the Server count is zero or far below your orders, your purchases depend on the browser alone.
  5. 5In Events Manager > Data sources > your pixel > Diagnostics, read any warnings about the Purchase event, such as missing parameters or events that Meta could not match.
  6. 6In Shopify admin > Settings > Customer privacy, check which regions ask shoppers for consent. Then look in your cookie tool for the share of shoppers who declined marketing cookies in the same period.

Compare the three numbers: your paid online orders, Meta's Purchase count, and the share of declined cookies. If Meta's count is lower than your orders by about what the declines and blocked browsers would explain, the setup behaves as designed. If Meta's count is much lower and your cookie tool shows few declines, look at Diagnostics and at whether the pixel loads on the order confirmation page.

If the gap comes from browsers that never report the purchase, server-side tracking for Shopify stores sends it from the paid order instead. For agencies that run this check across client stores, see proving each order to a client.

Run the free diagnosis

FAQ

Should Meta's count match my Shopify orders exactly?

No. Meta counts what it receives and attributes, and Shopify counts every paid order. Different time zones, declined cookies and blocked scripts all separate the two. A server connection narrows the gap but does not remove every reason for it.

Does a lower Meta count mean my ads do not work?

It means Meta sees fewer sales than you made. The ads may have led to the missing orders. Meta then has less data to learn from, so the gap is worth understanding.

Is it only an iPhone problem?

No. Safari limits the pixel, but ad blockers and cookie declines affect every browser and device.

How many days should I compare?

At least 7 full days, in the same time zone on both sides. Single days are noisy because an order paid late in the evening can fall on different days in the two systems.

Related

Problem

GA4 shows fewer purchases than Shopify

GA4 reports fewer purchases or less revenue than your Shopify admin. Why browser tracking loses orders and how to compare transaction IDs in Explore.

Problem

Meta shows no purchases, but Shopify has orders

Facebook Ads Manager shows zero purchases while Shopify keeps taking orders. Where the purchase stops: the pixel, the dataset, the ad set or attribution, and how to find it in ten minutes.

Problem

Meta counts purchases twice

Meta shows more purchases than you had Shopify orders. Why browser and server events double up, and how to find every sender in your store.

Problem

WooCommerce Meta pixel not tracking purchases

Your WooCommerce store has paid orders, but Meta shows few or no Purchase events. Payment redirects, caching and consent are the usual causes. Here is how to check.

All tracking problems · All guides