Debugging
Meta Purchase events missing on Shopify: 7 causes, in checking order
A diagnostic checklist for Shopify stores whose Meta Purchase events dropped or disappeared. Seven causes, ordered by likelihood in 2026, each with how to check and how to fix.
Your Shopify orders are steady, but Meta Purchase events dropped — or never arrived. Work through these seven causes in order. They are sorted by how often each one is the culprit in 2026, so most stores find their answer in the first two.
1. The August 26 Checkout Extensibility upgrade killed your Additional Scripts
If your Purchase tracking was pasted into checkout "Additional Scripts," it stopped executing on August 26, 2026, when Shopify auto-upgraded all non-Plus stores to Checkout Extensibility.
How to check: Events Manager → your pixel → Purchase → daily counts. A cliff on or right after August 26, while Shopify admin orders stayed flat, is this. Also check Settings → Checkout for old scripts still sitting in the deprecated box.
Fix: Move to a Custom Pixel, the native Meta app, or a server-side sender — the full comparison is in our Checkout Extensibility breakdown.
2. Custom Pixel added, but subscribed to the wrong events
A Custom Pixel only fires for events it subscribes to. A common miss: subscribing to page_viewed or copying a template that never registers checkout_completed.
How to check: Settings → Customer events → open your Custom Pixel. Search the code for analytics.subscribe("checkout_completed". Then place a test order and watch Events Manager's Test Events tab.
Fix: Subscribe explicitly:
jsanalytics.subscribe("checkout_completed", (event) => {
// fbq Purchase call here
});3. Consent mode blocks the pixel until interaction
Shopify's Customer Privacy API can hold Custom Pixels back until the visitor consents. If your consent banner defaults to "denied" — or never appears in some regions — the Purchase event never fires for those buyers.
How to check: In the Custom Pixel settings, look at the "Customer privacy" permissions the pixel requires. Test a purchase in a private window without clicking the consent banner. If Purchase only appears after accepting, consent gating is trimming your counts.
Fix: Decide deliberately. Either configure the pixel's required permissions to match your legal position, or accept the gap in consent-required regions. A server-side sender is subject to the same consent obligations — this is a policy decision, not a technical dodge.
4. iOS, Safari, and ad blockers kill the browser Pixel — and you have no server backup
Even a perfectly configured browser Pixel loses events. Safari's tracking prevention, iOS privacy features, ad blockers, and DNS-level filtering mean a meaningful share of purchases never fire fbq at all. If browser is your only channel, those orders are simply invisible.
How to check: Compare Shopify orders against Meta Purchases over a week. A persistent gap of a similar percentage every day — rather than a cliff on one date — points here. Segment by device in Shopify analytics; the gap skews iOS.
Fix: Add Conversions API delivery from a server, deduplicated against the browser Pixel. More in our iOS lost-conversions post.
5. Duplicate senders without a shared event_id
Running the native Meta app plus a Custom Pixel, or a Custom Pixel plus a server sender, without a shared event_id produces chaos. Meta may deduplicate the wrong pairs or count both — so reports look inflated some days and missing others.
How to check: Events Manager → Purchase → event details. If "Total events" is far above your order count, or the deduplication breakdown shows unmatched browser and server events, you have two senders disagreeing.
Fix: Give both senders the same event_id per order (the Shopify order ID works), or turn one sender off. The mechanics are in our deduplication guide.
6. Native app installed, but pixel or catalog mismatch
The Facebook & Instagram app can be connected to a different pixel than the one your ads optimize against — an old pixel, an agency's pixel, or a pixel on the wrong Business Manager.
How to check: In the app's settings inside Shopify, note the pixel ID. Compare it to the pixel ID in your ad account's Events Manager and in each campaign's optimization settings. Also confirm the catalog is linked to the same pixel if you run Advantage+ catalog ads.
Fix: Reconnect the app to the correct pixel and Business Manager. Expect a delivery re-learning period after the switch.
7. Checkout domain change broke _fbp/_fbc continuity
Extensibility checkouts and the sandboxed pixel environment can disrupt cookie continuity between the storefront and the purchase event. When _fbp and _fbc do not carry through, Purchases still fire but match poorly — Meta receives them and cannot attribute them, which in Ads Manager looks like missing conversions.
How to check: Events Manager → Purchase → Event Match Quality. If Purchases arrive but EMQ is low and "browser ID" or "click ID" coverage is poor, this is your problem, not a firing problem.
Fix: Capture fbclid on landing, persist it, and send _fbp/_fbc plus hashed email and phone with server events. We cover the cookies in depth in our _fbp and _fbc explainer and EMQ in Event Match Quality.
Shortcut
The scanner and the Shopify check automate most of this list against your live store. If the diagnosis lands on causes 1, 4, 5, or 7, Caply fixes them as a set: one snippet, managed CAPI delivery with SHA-256-hashed identifiers, event_id deduplication built in, and Ghost conversions showing sent-versus-counted by day so a regression never hides again. Plans on pricing; 14-day trial.
Caply
Match Forecast on every purchase. Tracking radar on competitor storefronts. Managed server-side tracking without a tagging server.
Start 14-day trial