Skip to main content

E-Commerce

Meta Not Tracking All Your Shopify Purchases Since iOS 14? The Causes and Fixes, in Order

Meta usually misses Shopify purchases for three reasons: the browser pixel is blocked or loses the ad click (ad blockers, Safari's limits, iPhone users who decline tracking), the Conversions API is off or left at Shopify's Standard data sharing level, or events are duplicated or unmatched. Fix them in this order: server-side purchases, duplicates, match quality.

If Meta isn't tracking all your Shopify purchases since iOS 14, expect part of the gap to remain after every fix. Shopify counts every order, while Ads Manager counts only the purchases it can credit to an ad. We checked every Meta, Shopify and Apple detail against current documentation on October 24, 2026. For how the Conversions API works, see our Meta CAPI and first-party data guide.

Is Meta missing purchases, or just not crediting them?

Check Events Manager before Ads Manager: Events Manager shows the purchases Meta received, and Ads Manager shows only the ones it attributed to an ad.

That's the split Meta describes in its article on differences between event counts. Set both against Shopify:

What you seeWhat it usually means
Events Manager close to Shopify, Ads Manager lowerMeta receives the orders but can't credit them all: attribution settings, ATT and modeling
Events Manager well below ShopifyPurchases never reach Meta: tracking loss
Events Manager above ShopifyA second source sends purchases: duplication

To start testing now, skip to the diagnosis.


Why does the Meta Pixel miss Shopify purchases?

The pixel runs in the shopper's browser, so anything that blocks the script or separates the ad click from the checkout costs you the purchase or its link to the ad.

  • Ad blockers. Shopify warns that a browser-based ad blocker can stop the Meta pixel from sharing data.
  • A thank-you page that doesn't load. The pixel sends Purchase when the shopper views the thank-you page. Shopify's developer docs say the checkout event doesn't fire at all if that page fails to load.
  • Consent. Where consent is required, Shopify's web pixels run only after the visitor grants permission. A third-party cookie banner must sync consent through the Customer Privacy API, or the pixel might not fire even after a shopper accepts.
  • Safari's cookie cap. Since ITP 2.1, Safari limits cookies set by JavaScript to seven days. The pixel's _fbc click ID cookie is one of them.
  • The in-app browser. Instagram and Facebook ads open inside Meta's app, and each iOS app has its own cookie store. A shopper who buys later in Safari arrives without the click ID.
  • Link Tracking Protection. In Mail, Messages and Private Browsing, Safari removes a subset of tracking query parameters. WebKit doesn't name the parameters, so assume a shared link can lose fbclid.
  • Advanced Fingerprinting Protection. iOS 26 extended it to all Safari browsing. WebKit says Safari 26 stops known fingerprinting scripts from setting long-lived cookies or reading query parameters, without naming the scripts.

A purchase without its click ID can still reach Meta, with less to match on. Our guide to fbclid and the _fbc cookie shows where the click ID goes missing.


Does App Tracking Transparency stop Meta from seeing purchases?

Partly. When an iPhone user declines tracking in the Facebook or Instagram app, Apple's rules limit what Meta can link and report, and server-side events don't lift those limits.

Apple defines tracking as linking data from your app with other companies' app or website data for targeted advertising or ad measurement. Since iOS 14.5, an app needs ATT permission to do it, and Apple's FAQ says a hashed email or phone number doesn't get around that.

Meta says performance reporting may be limited for web conversion events as a result. Its AEM article adds that Conversions API events may also be processed under Aggregated Event Measurement's limits. No tracking tool can undo an opt-out. For the full timeline, see our guide to iOS privacy changes for ecommerce.


Is the Conversions API off or set to Standard?

If Shopify's Facebook & Instagram app is set to Standard, purchases reach Meta only through the browser pixel, so every blocked pixel means a lost purchase.

Shopify's app has three data sharing levels:

LevelWhat it usesCustomer information shared for matching
StandardThe Meta pixel onlyBrowsing behavior in your store
EnhancedThe pixel plus the Conversions API, which sends the purchase from Shopify's serversName, location, email and phone, plus browsing behavior
MaximumThe pixel plus the Conversions API, kept up to date with what Shopify calls Facebook's latest advertising technologyThe same as Enhanced

Change it under Sales channels > Facebook & Instagram > Settings > Data sharing settings. Even at Maximum, Shopify names only the purchase as sent through the Conversions API; PageView, AddToCart, InitiateCheckout and the other funnel events are pixel events. Meta's best practices recommend sending the same events through both channels, so backing up the upper funnel server-side takes another sender.


Are duplicate events hiding missing purchases?

They can: a store can double count some purchases and miss others, and the total still looks close to Shopify.

Meta pairs a browser event with its server copy only when the pixel's eventID matches the server's event_id, the event names match and the second copy arrives within 48 hours of the first. It discards neither of two identical server events, so two server-side senders on one pixel count each sale twice. On Shopify, the usual culprits are the Facebook & Instagram app at Enhanced or Maximum running beside another tool or a Conversions API Gateway, and pixel code in the theme on top of the app's pixel.

To check, open Purchase in Events Manager, then Event Details > Event Deduplication. Meta's verification guide says this tab shows the deduplication rate and how often dedupe keys overlap, and warns when the rate is too low. Our guide to Meta attribution pitfalls and event duplication traces each source.


Do Shop Pay and express checkouts break Meta tracking?

They can, because the pixel reports only from pages where it runs, and Shop Pay, wallets and upsells change which pages load.

Shopify's developer docs say the checkout completion event fires once per checkout. That's usually on the thank-you page, but with post-purchase offers it fires on the first upsell page. Shopify doesn't document which pixel events fire inside the Shop Pay window or a wallet sheet such as Apple Pay, so place a test order with each payment method you offer. In our audits, InitiateCheckout often under-fires with express wallets such as Shop Pay and PayPal.

Checkout extensibility also removed an old home for purchase pixels. Additional scripts have been view-only since August 28, 2025, and non-Plus stores had to upgrade their thank-you and order status pages by August 26, 2026, which replaced old customizations. Script tags stopped running on the order status page on those same dates: Plus stores first, then everyone else. A purchase pixel left in either place no longer fires, and Shopify points tracking to app pixels and web pixels instead.


Is the gap just attribution windows and modeled conversions?

Often part of it is: Ads Manager credits only purchases inside your attribution setting, and some results are modeled.

Meta's current attribution settings under the standard model:

SettingCounts purchases within
Click-through1 or 7 days after a link click on your ad
Engage-through1 day after a click that isn't a link click (for video, also a 5-second play)
View-through1 day after an impression

Meta's Results article gives the default as 7-day click, 1-day view and 1-day engagement, so a purchase 10 days after a click shows in Shopify and not in Ads Manager. Meta is moving accounts to these definitions gradually. Under them, a purchase after a non-link click counts as engage-through rather than click-through, so click-through purchases can fall with no change to tracking.

The Results article also says statistical modeling may be used when data is partial or missing, and Meta's Insights API can date a conversion by the ad impression or by the purchase. Compare full weeks, not single days.

Does Aggregated Event Measurement still limit you to 8 events?

No. Meta says you no longer need to prioritize 8 conversion events per domain for web conversion optimization, though AEM still applies to iOS 14.5 and later.

Meta's AEM article also says value sets aren't required, the Aggregated Event Measurement tab has been removed from Events Manager, domain verification isn't required for event configuration, and you don't pick a conversion domain when you create a campaign. Older guides, and Meta's own Marketing API pixel page, still describe the 8-event limit, so don't spend time re-ranking events.


How do you diagnose missing Meta purchases?

  1. Pick a closed window. Use the last seven full days, ending yesterday, in your ad account's time zone.
  2. Count Shopify's online orders. Filter orders by sales channel and keep Online Store. POS sales, orders you create in the admin and subscription renewals skip the online checkout, so the pixel never sees them. Compare order counts rather than revenue, which each side can calculate differently.
  3. Count Purchase in Events Manager by connection method. Meta doesn't deduplicate the Total events count, so a browser-plus-server setup can show up to twice your orders there. Compare the browser and server lines with Shopify separately. Browser a little below Shopify is normal. Server well below Shopify points to a missing server sender or the Standard level. Either line above Shopify points to a duplicate source.
  4. Place test orders. Open Events Manager > Data sources > your pixel > Test events and buy with a card, Shop Pay and each wallet you offer. Server events show there only if the sender includes Meta's test event code; otherwise check the Overview after 20 minutes. Run Meta Ads Data Advisor, the renamed Pixel Helper, to count your own pixel IDs. Our Meta Pixel Helper guide shows how to read event IDs.
  5. Check deduplication and match quality. On Purchase, read the Event Deduplication tab, then Event Match Quality, which Meta scores from 1 to 10 and recommends keeping at 6.0 or higher. Our EMQ guide shows where to see each parameter's coverage.
  6. Check the data sharing level in Shopify's Facebook & Instagram app, and confirm no second tool sends purchases to the same pixel.

How to fix missing Meta purchases, in priority order

  1. Send purchases server-side. The free route is Shopify's Facebook & Instagram app at Maximum. Meta charges nothing for its Conversions API Gateway either, though you pay cloud or partner fees and it relays only what the pixel saw. Use one server-side sender per pixel.
  2. Remove duplicate senders. Keep one pixel install. If another tool sends your server events, keep Shopify's app for your catalog and turn its data sharing off. Our pillar explains how Meta deduplicates pixel and CAPI events.
  3. Restore the browser pixel. Move purchase tracking out of old additional scripts into an app pixel, and recheck your theme's app embeds after every theme change.
  4. Raise match quality on Purchase. Send hashed email and phone, fbc, fbp, the shopper's IP address and user agent, and an external_id. Meta's best practices say unmatched events can't be used for attribution or ad delivery optimization. Our EMQ guide has the seven steps in order.
  5. Carry the click ID and identity across sessions. Capture fbclid on the landing page, store it on your server and attach it to the purchase, even when the shopper buys days later in another browser. Upstack Signal does this for Shopify stores with server-side tracking and identity resolution. It matches each visitor against first-party data and an identity graph of 750M+ devices and 150M+ customers, using deterministic and probabilistic matching. It restores the click ID across sessions and devices, attaches hashed email and phone when the shopper is known, and sends browser and server events deduplicated on a shared event ID.
  6. Judge the result on the right numbers. Compare Events Manager with Shopify week by week, and expect Ads Manager to stay lower.

Steps 1 to 3 can cost nothing but time, and Shopify's Maximum level already sends email and phone with purchases. If you spend less than about $30K a month on Meta, we'd start there before paying for any tool, including ours. Our list of server-side tracking tools for Shopify compares the paid options, and our Shopify tracking setup guide has a checklist for after the fix. If you'd like a second pair of eyes, request a demo and we'll review your Meta setup with you.


Cause, symptom and fix at a glance

CauseSymptomFix
Ad blockers, thank-you page not loadingBrowser purchases below Shopify, server purchases closeSend purchases server-side
Cookie banner not syncing consentBrowser events missing even after shoppers acceptSync consent through Shopify's Customer Privacy API
Lost click ID (Safari, in-app browser, Link Tracking Protection)Few purchases carry fbc; Ads Manager credits fewerStore fbclid server-side; identity resolution
Conversions API off or at StandardNo server line on PurchaseMaximum level, the Gateway or a server-side tool
Broken deduplicationEvents Manager above Shopify, low deduplication rateOne sender per pixel, matching event IDs
Shop Pay, wallets, upsells, old additional scriptsSome payment methods missing in test ordersTest each method; server-side purchases; app pixels
ATT opt-outs, attribution windows, modelingEvents Manager close to Shopify, Ads Manager lowerCompare on Events Manager; review your attribution setting

Frequently asked questions

Why is Meta showing fewer purchases than Shopify?

Either purchases never reach Meta, or Meta receives them but can't credit them to an ad. Compare Shopify's online orders with Purchase in Events Manager. Close to Shopify means the gap is attribution, ATT and modeling. Well below means the pixel is blocked or no server-side sender is set up.

Does the Conversions API fix iOS 14 tracking?

Partly. Server-side purchases travel from server to server, so ad blockers in the shopper's browser can't stop them. They don't undo an App Tracking Transparency opt-out: Meta says Conversions API events may also be processed under Aggregated Event Measurement's limits.

Which data sharing level should I use in Shopify's Facebook & Instagram app?

Maximum. If another tool already sends your server-side events, turn the app's data sharing off instead. Standard uses only the browser pixel. Enhanced and Maximum add the Conversions API for purchases and share name, location, email and phone for matching.

Why is Meta showing more purchases than Shopify?

Usually two sources send the same purchase: Shopify's app plus another server-side tool, or a theme pixel plus the app's pixel. Meta deduplicates only when event IDs and event names match, and it keeps both copies of two identical server events.

Does Meta still limit you to 8 conversion events?

No. Meta's Business Help Center says you no longer need to prioritize 8 conversion events per domain for web campaigns, and the Aggregated Event Measurement tab has been removed from Events Manager. AEM still processes web events from people on iOS 14.5 and later.

Do Shop Pay orders show up in Meta?

They should, but test it. Shopify doesn't document which pixel events fire inside the Shop Pay window or wallet sheets, and the pixel's purchase depends on the thank-you page loading. A server-side purchase is sent from server to server and doesn't rely on the shopper's browser.

How long after a fix will Meta show the missing purchases?

Meta says new events should be visible in Events Manager within about 20 minutes. Judge the gap on full days of data, and compare a full week before and after the change.

About the author

Michael Alt

Founder & CEO, Upstack Data

Michael Alt is the founder and CEO of Upstack Data, the server-side tracking, identity resolution and attribution platform for Shopify and DTC brands.

Want similar results?

Start free for 21 days and see what clean signal does for your performance. No card, no contract.