Shopify shows a steady run of orders. Events Manager shows half of them, or twice as many, or the right count with the wrong revenue. Meta ads optimize on the purchases Meta receives, so a broken Purchase event doesn't just spoil your reports: it changes who your ads are shown to. The causes are few, and one test order usually tells you which one you have.

The short answer
  • Start with the symptom: Purchase missing, doubled, carrying the wrong value or currency, or orders in Shopify that never reach Events Manager.
  • Six causes cover most cases: the Facebook & Instagram app's connection and data sharing level, checkout changes, duplicate pixels, deduplication, consent settings, and value and currency.
  • Shopify's Thank you page upgrade retired the old Additional scripts box. Pixel code pasted there didn't carry over to the new pages.
  • The fix: make the app your only source of Meta events, turn on Enhanced or Maximum data sharing, remove leftovers, place a test order, then check Events Manager against your orders.

Match the symptom to the cause

SymptomUsual causesWhere to look
No Purchase events at allThe app isn't connected, data sharing is off, or tracking lived in code that didn't survive the checkout upgradeFacebook & Instagram, then Settings, then Data sharing settings. Settings, then Customer events
Fewer purchases than ordersStandard data sharing, so ad blockers stop the only copy. Visitors declining cookies in consent regions. A custom pixel that misses post-purchase upsellsThe data sharing level. Settings, then Customer privacy
Each purchase counted twicePixel code left in the theme, a second app or custom pixel sending Purchase, or browser and server copies with different event IDstheme.liquid. Customer events. The Event Deduplication tab in Events Manager
Wrong value or currencyA custom script sending its own value or currency, or browser and server copies with different totalsAds Data Advisor on the Thank you page, during a test order
Purchases arrive, but not where your ads lookThe app is connected to a different Pixel from the one your ad account usesThe Pixel in the app, against the one in Events Manager

Built from the Shopify Help Center and Meta's developer documentation, reviewed October 2026.

The six causes, in detail

1. The app connection and data sharing level. Shopify's Facebook & Instagram app offers three levels. At Standard, only the Pixel runs, and Shopify warns that a browser-based ad blocker can prevent the Meta pixel from sharing data. Enhanced and Maximum add the Conversions API, which sends the purchase event between Shopify's and Meta's servers, out of reach of browser ad blockers. If Purchase is missing entirely, check that data sharing is on and that the connected Pixel is the one your ad account uses.

2. Checkout changes and Shopify's pixel rules. Shopify has replaced its old Thank you and Order status pages. The Additional scripts box has been view-only since 28 August 2025, the deadline for stores on non-Plus plans was 26 August 2026, and upgrading replaces the old pages along with any customizations on them. Tracking now runs through pixels, which load automatically on the Checkout, Thank you and Order status pages. App pixels are installed by apps and sales channels. Custom pixels, added by hand, run in what Shopify calls a Lax sandbox, where not all pixel functionality works, and Shopify doesn't support them.

One more trap: with a post-purchase upsell, Shopify's checkout_completed event fires on the first upsell offer page instead of the Thank you page, and doesn't fire again there. Code that waits for the Thank you page itself, rather than listening for that event, can miss those orders.

3. Duplicate pixels. Old themes and old apps leave Pixel code behind. Shopify's own instructions say to delete manually added code from theme.liquid, between the head tags, because otherwise your store will have more than one pixel, which can mean duplicate or incorrect data in your reports. Check Settings, then Customer events, too: any app or custom pixel listed there may be sending its own Purchase. Meta's Ads Data Advisor extension, formerly the Pixel Helper, flags Pixel code repeated on a page.

4. Deduplication. With Enhanced or Maximum on, a purchase reaches Meta twice: once from the browser, once from Shopify's servers. Meta merges the copies when the event name and event ID match and the second arrives within 48 hours. A second source, such as another app or a custom pixel, sends Purchase with its own ID, and Meta counts it again. If the app is your only source, its copies should merge in the Event Deduplication tab. Our Conversions API setup guide explains event IDs in full.

5. Consent banners. In regions that require opt-in consent, such as the UK and EEA, Shopify's banner means non-essential data is collected only after obtaining consent, and web pixels run only when visitors have provided the permissions their configuration requires. If your banner comes from another app, Shopify only honors its consent when it's integrated with the Customer Privacy API, and its regions should match Shopify's settings.

6. Value and currency. Meta requires a value and a currency on Purchase. Its value optimization guide wants them consistent across both sources when the Pixel and the Conversions API run together. Wrong values often come from a second source: a custom pixel that sends the subtotal while the app sends the total, or that hard-codes one currency in a store that sells in several. Shopify's checkout total includes duties, taxes, and discounts, so decide which number you report and send the same one everywhere.

Step by step: fixing Purchase

1

List everything that sends Meta events

Open Settings, then Customer events, for app and custom pixels. Search your theme's theme.liquid file for Pixel code. Note any other app with a Meta or Facebook tracking setting.

2

Make the app the only source

In Facebook & Instagram, connect the Pixel your ad account uses. Delete Pixel code from theme.liquid, as Shopify instructs, switch off Meta tracking in other apps, and remove custom pixels that send Purchase.

3

Turn on Enhanced or Maximum

In Facebook & Instagram, go to Settings, then Data sharing settings, activate customer data sharing and choose a level. Both share customer details with Meta for matching, so make sure your privacy policy says so.

4

Check your consent setup

Under Settings, then Customer privacy, confirm which regions see a banner. If you use another banner app, confirm it syncs consent to Shopify through the Customer Privacy API.

5

Place a test order

Open Test Events in Events Manager, then buy something on your phone. With Ads Data Advisor running, the Thank you page should show one Purchase, with a value and a currency, and Test Events should show it arrive.

6

Test the edges

If you run a post-purchase upsell, place an order through it. If you sell in more than one currency, place one in a second currency, and compare the value Meta received with the order in Shopify.

How to verify it in Events Manager and against Shopify

Check these
  • Connection method. Your dataset's overview shows the channel each event arrived through. Purchase should show both browser and server. Meta says to allow 20 minutes.
  • Deduplication rate. Open Purchase, then the Event Deduplication tab. Higher is better, and Meta shows a warning when the rate is too low.
  • Event Match Quality. Meta recommends 6.0 or higher. Enhanced and Maximum share the name, email and phone number Meta uses for matching.
  • Shopify against Meta. Once a week, compare Purchase events received in Events Manager over seven full days with your online store orders for the same days. Expect fewer in Events Manager where visitors decline cookies. Never expect more.

Don't judge it against the purchases Ads Manager reports. Ads Manager credits only the sales it attributes to an ad within its attribution window, so its count is lower by design. If that number fell while orders held steady, why ROAS drops when nothing changed covers the reporting side.

Proof: purchases reported from the server

On a custom funnel we built for a coach and author, there's no Shopify app to lean on, so the server does the reporting. Purchase is sent from the payment webhook with the order number as its event ID, and the browser copy carries the same ID. 100% of paid orders since August have been reported to Meta from the server, deduplicated against the Pixel.

The case study names both failure modes. Without matching IDs: "Reporting then shows about double the truth, the most expensive kind of wrong number, because you will scale spend against it." And if Purchase fires only from the confirmation page, anyone whose browser blocks the Pixel is never counted at all, and the platform optimizes toward the wrong people.

On Shopify, Enhanced data sharing gives you the server copy without a build. On a custom checkout it's development work, and our Shopify store builds come with server-side tracking where it earns its place.

When to get help

Fix it yourself if you're on Shopify's standard checkout and the app is your only source of Meta events. Get help when custom pixels, a headless storefront or several currencies are involved, or when the deduplication warning won't clear.

On our Meta ads for online stores, tracking is the first thing we build: "Pixel and Conversions API installed server-side with event deduplication and correct purchase values, so one order is counted once." And if you take bookings rather than orders, how to track bookings from Facebook ads covers booking systems.

Questions people ask

Why is my Meta Pixel not tracking purchases on Shopify?

Usually because the Facebook & Instagram app isn't connected to the right Pixel, data sharing is off or set to Standard, or the tracking lived in old Additional scripts that didn't carry over to Shopify's new Thank you page. A test order with Events Manager open shows which.

Why are Shopify purchases showing twice in Events Manager?

Something besides the app is sending Purchase: Pixel code left in theme.liquid, another app, or a custom pixel. Meta only merges copies that share an event name and event ID, so a second source with its own ID gets counted again.

Do I still need Additional scripts for the Meta Pixel?

No. The Additional scripts box has been view-only since 28 August 2025, and Shopify's new Thank you page replaced the old customizations. Tracking now runs through app pixels, which apps and sales channels install.

Does a cookie banner stop the Meta Pixel on Shopify?

In regions that require opt-in consent, such as the UK and EEA, Shopify's pixels run only after visitors give the required permissions. Expect fewer purchases from those visitors in Events Manager. That's the banner working, not a fault.

Should I choose Standard, Enhanced or Maximum data sharing?

Enhanced or Maximum. Standard runs the Pixel alone, which ad blockers can stop. Both higher levels add the Conversions API, which sends the purchase event from Shopify's servers.

Should Events Manager match my Shopify orders exactly?

Close, but not exactly. Visitors who decline cookies leave gaps, so Events Manager can show fewer purchases than Shopify. It shouldn't show more. If it does, something is sending Purchase twice.

When isn't tracking the problem?

When Events Manager and Shopify agree and sales are still poor. Then it's the offer, the store or the ads. We're not the right fit if your margin can't support paid acquisition yet, or if you can't commit a real ad budget alongside the fee.

Want a second pair of eyes on your Purchase event? Book a strategy call and we'll check your Events Manager against your Shopify orders with you.