Meta troubleshooting guide

Facebook pixel not tracking purchases on Shopify: what to check, in order

If your Facebook pixel is not tracking purchases on Shopify, find where the purchase stops before you change anything. If Meta Events Manager shows no Purchase events, the problem is the sender: the pixel, its Pixel ID or code that stopped on Shopify’s new Thank you page. If Events Manager shows purchases that Ads Manager does not, Meta received them but did not credit them to your ads. If Events Manager shows more purchases than Shopify has orders, two tools are usually sending the same order.

Start with one order: where does the purchase stop?

Whether your Facebook pixel is not working at all or misses only some purchases, start with one recent order you can identify. Note its order number, time and total in Shopify, then follow that order to Meta. In Shopify, the order’s Conversion summary shows where the buyer came from, and View conversion details, when Shopify shows it, lists the visits before the order.

A purchase can stop at three points: it never reaches Meta, it reaches Meta but is not credited to an ad, or it reaches Meta twice. Each point has its own causes, so find it before you change pixels, apps or settings.

In Meta Events Manager, select Data sources and open your pixel, which Meta may also call a dataset. The Overview lists the events Meta received, and Connection Method shows how each event reached Meta, such as from the browser or a server. Meta says new events should show there within about 20 minutes of being sent.

Where a purchase stops, and what to check next
What you seeWhat it usually meansCheck next
No Purchase events in Events ManagerNo tool delivers purchases to this pixel, or they go to another Pixel IDYour purchase senders, their Pixel IDs and Shopify’s new Thank you page
Purchases in Events Manager, none in Ads ManagerMeta received the purchases but did not credit them to your adsAttribution settings and your ad sets’ conversion event
More purchases in Events Manager than orders in ShopifyTwo tools send the same order with different event IDsOne browser sender and one purchase sender per Pixel ID
Purchases stopped after a theme, checkout or app changeA sender stopped working, often on the new checkout pagesSettings > Customer events and the repeatable test below

List every tool that sends purchases to your pixel

On Shopify, purchases can reach the same Meta pixel from several places, each set up in a different part of the admin, and each one works on its own: removing one does not stop the others. Write down every sender and the Pixel ID it uses before you test anything. Shopify’s own advice before you add a custom pixel is to remove or change existing pixel code, so customer events are not counted twice.

  • Sales channels > Facebook & Instagram: open the channel’s settings and check its data sharing. With data sharing on, the channel’s Meta pixel sends browser events, and at the Enhanced and Maximum levels Shopify says the Conversions API also sends the purchase event between Shopify’s and Meta’s servers.
  • Settings > Customer events: app pixels added by apps and sales channels, and custom pixels pasted in by hand. A Meta pixel that sat in the Online Store preferences, rather than in the Facebook & Instagram channel, was removed from there in February 2025 and converted into a custom pixel here.
  • Your theme code: a pixel snippet in theme.liquid, between the head tags. Shopify asks you to remove it before you add a Pixel ID in the Facebook & Instagram channel.
  • Settings > Checkout: old additional scripts. They do not run on Shopify’s new Thank you and Order status pages, so a purchase script there has stopped sending.
  • Other apps, and WeProfit if you use it: in WeProfit, Ad Networks > Meta lists each connected pixel with its Pixel ID.

Check that every sender uses the right Pixel ID

Meta asks you to use the same Pixel ID for browser and server events. A purchase sent to another pixel, such as an old one or one owned by another business, never shows up in the pixel your campaigns report on. In Events Manager, open the Settings tab of the pixel your ad sets use, note its ID and compare it with the ID in each sender.

In WeProfit, open Ad Networks > Meta. Each pixel card shows its Pixel ID, whether a token is set, the last successful send and the last error. A Pixel ID can be connected once per store, and one store can connect several pixels, each with its own token and conditions.

Conditions decide which events a pixel receives. A purchase that does not match a pixel’s conditions, for example a country or an order value rule, is not sent to that pixel and gets no row in its delivery log. A pixel without conditions receives everything.

Shopify’s new Thank you page: old purchase scripts no longer run

Shopify has replaced the old Thank you and Order status pages. For Shopify Plus stores, checkout.liquid and additional scripts on those pages were sunset on August 28, 2025. Other plans had until August 26, 2026, and Shopify upgraded the stores that had not upgraded by then automatically. The additional scripts box in Settings > Checkout has been view-only since August 28, 2025.

Additional scripts are not supported on the new pages, so Meta purchase code that lived there stopped when your pages were upgraded. For tracking on the new pages, Shopify recommends app pixels, and a custom pixel when no app fits; both live under Settings > Customer events. To send purchases, a custom pixel’s code needs to subscribe to Shopify’s checkout_completed event.

Browser purchase events also depend on a page loading. Shopify fires checkout_completed once per checkout, usually on the Thank you page, or on the first upsell page when you offer one. If that page fails to load, Shopify does not trigger the event at all, and a browser pixel misses that purchase.

  1. In Settings > Customer events, check that the pixel that should send purchases is listed. A custom pixel must also be connected: one that sits under Disconnected pixels sends nothing.
  2. Choose Test for the pixel to open the Shopify Pixel Helper on your store, then visit the pages you want to check. To test the Thank you page, place a test order.
  3. Open an app pixel and check its data access setting. Under Optimized, the default, Shopify can pause some or all data a marketing pixel shares when it decides the pixel is oversharing, and Shopify says this can limit data for attribution in your ads manager. The pixel’s activity log, under View details, shows when data access was paused or granted since June 3, 2026. Always on gives the pixel access without these limits.

Why a server purchase does not depend on the Thank you page

A browser pixel reports what happens in the shopper’s browser, so it can miss a purchase when the Thank you page does not load or a blocker stops the pixel. Shopify notes that ad blockers can block a web pixel entirely, while Shopify’s own reports and order records are not affected.

Server-side tracking starts from the order record instead. With WeProfit on Shopify, each Purchase is built from Shopify’s order webhook and sent to Meta from WeProfit’s server through the Conversions API, once per order and pixel. It does not depend on theme code, checkout scripts or the Thank you page, and WeProfit sends no browser Purchase on Shopify. Shopify also says that webhook delivery continues as expected when it optimizes a pixel’s data access.

The visit still matters: it supplies the ad click IDs and Meta browser IDs that WeProfit sends with the purchase. WeProfit’s storefront events reach WeProfit through Shopify’s app proxy on your store’s own domain, so blocklists that target tracking domains usually do not stop them. That is not a guarantee, and a purchase that reaches Meta still depends on Meta to match it and credit an ad.

If you use WeProfit: find the order and its Meta status

Open Orders in WeProfit and search for the order number. The Networks column shows the order’s delivery status for each connected network, such as Meta: sent, or Meta: not sent when WeProfit did not send a Purchase for it. The Attribution column shows how the order was linked to a visit.

Some orders are never sent to an ad network as a purchase: orders placed before WeProfit was installed, including the imported order history; Shopify POS, draft and mobile admin orders; subscription renewals, which have no checkout (the first subscription order is a normal web purchase); and orders already cancelled when WeProfit processes them. Except for cancelled orders, they still count in your WeProfit revenue and profit.

If the order is missing, open Installation and check that Connection reads Connected. If the order is there but nothing was sent, open Settings: Tracking active and Server tracking must be on. With tracking paused, nothing is sent to ad networks while orders keep syncing, and with Server tracking off, no server event goes to any network.

On the Installation page, Web pixel installed should read Yes and App embed (storefront tracking) should read Active. When the app embed is off, purchases still reach Meta from the order with its customer details, but without the Meta browser IDs of the visit; when the order’s landing URL carries an fbclid, WeProfit still builds the fbc click ID from it.

Was a Purchase sent? Read the CAPI delivery log

On Ad Networks > Meta, the CAPI delivery log lists the server events WeProfit sends to Meta, with the time, event, pixel, event ID, status, attempts, fbtrace ID and any error. Filter it by pixel, by the Purchase event and by status. Viewing it needs the events permission.

The log shows WeProfit’s own event ID, such as pur_6012345678901. Meta receives it with an 8-character store code after the first underscore, such as pur_a1b2c3d4-6012345678901, so look for that form in Meta’s tools. The log has no value or currency column: check a purchase’s value on the Events page in WeProfit.

When Meta rejects the token, WeProfit pauses the pixel and shows a banner: check that the connected account still has access and that its token is current, then send a test from the connection to resume. WeProfit does not test the token when you save a pixel, so Send test, or the first delivery, shows whether Meta accepts it. The Tracking health widget sums up the last 24 hours of server deliveries as Sent, In flight / retrying and Failed.

CAPI delivery log statuses
StatusWhat it meansWhat to do
pendingQueued, not sent yetWait, then refresh the log
sentMeta answered with successCheck Events Manager: sent does not mean Meta credited an ad
failedA temporary problem, such as a network error, a timeout or a rate limitNothing: WeProfit retries automatically with the same event ID
deadMeta refused the event for good, rejected the token, or the attempts ran outRead the Error column, fix the cause, then select Send test
skipped disabledThe pixel was switched off or in error when the event’s turn cameSwitch the pixel on or fix the error; events skipped while a pixel was off are not sent later
skipped pre installThe order was placed before WeProfit was installedNothing: these orders are never sent

Purchases in Events Manager but not in Ads Manager

Events Manager shows the events Meta received. Ads Manager results count the purchases Meta credits to your ads under each ad set’s attribution setting, a time window after someone clicked, engaged with or viewed an ad. A purchase from a buyer who did not interact with your ads in that window still reaches Meta, but it does not become an ad result. In WeProfit, sent means Meta accepted the event, not that Meta matched it to a person or credited an ad.

Meta also narrowed what counts as a click. Since March 2026, Meta has been limiting click-through attribution for website conversions to link clicks, and conversions after other clicks, such as shares and saves, count under what Meta now calls engage-through attribution. Compare columns with the same attribution setting before you decide that purchases are missing.

  • Recent days are still settling. Give new purchases time before you compare, and compare a settled period as well.
  • The purchase carries too little to match a person. WeProfit’s Purchase can carry the buyer’s hashed email, phone, first and last name, city, state, ZIP, country and external ID, plus the IP address and user agent and Meta’s fbp and fbc browser IDs when they are known. The Quality score in WeProfit shows the Click ID rate and the Identity rate of your purchases over the last 7 days.
  • Your ad sets use another pixel or another conversion event. Check that they use the pixel you send purchases to, with Purchase as the conversion event.

Two senders, one pixel: why purchases double

Meta’s recommended way to count a browser event and a server event once is the same event name and event ID on both: the pixel’s eventID must match the Conversions API event_id. Meta deduplicates only events received within 48 hours of the first one. Two tools that send the same order with their own IDs can count as two purchases in Meta.

WeProfit sends each order’s Purchase once per pixel, from its server, with an event ID built from the order, so webhook repeats, order updates and retries never add a second WeProfit purchase. On Shopify, its app embed also loads the Meta pixel you connect on your storefront pages and fires PageView, ViewContent and AddToCart with the same event IDs as their server copies. Checkout events and the Purchase have no WeProfit browser copy.

The Facebook & Instagram channel, another app or a pixel in your theme uses its own event IDs, which do not match WeProfit’s. Keep one browser sender and one purchase sender per Pixel ID: if you connect a Pixel ID in WeProfit, stop the other tools from sending to that pixel. WeProfit has no per-pixel server-only option; the store-wide Browser tracking switch removes its Meta pixel, but it also stops all storefront tracking.

To see whether Meta merged browser and server copies, open the event’s details from the Events Manager Overview and read the Event Deduplication tab.

A repeatable test after every theme, checkout or pixel change

Run the same short test whenever you change your theme, checkout, apps or pixels, and keep the result with the date. It tells you whether the change broke a sender, so you do not have to wait for a week of ad reports to find out.

  1. List every purchase sender and the Pixel ID it uses, as described above.
  2. In Settings > Customer events, choose Test for each pixel and walk through a product page, the cart and checkout in the Shopify Pixel Helper.
  3. In WeProfit, open Ad Networks > Meta, copy the test code from the Test events tab in Events Manager into the pixel’s Test event code field, save, and select Send test. WeProfit sends a PageView through the Conversions API and shows Meta’s answer, with the fbtrace ID when Meta returns one.
  4. Place a test order. WeProfit counts a Shopify test order and sends it to your connected ad networks like a real order, although Shopify leaves test orders out of its own reports. Cancelling it later does not withdraw a Purchase already sent.
  5. Find the order on the Orders page and check Meta in the Networks column, then find its Purchase in the CAPI delivery log and, while the test code is set, in Meta’s Test events.
  6. Clear the test event code when you finish. WeProfit also turns it off by itself 24 hours after you set it.
  7. About 20 minutes later, open the Events Manager Overview and check that the Purchase event shows the connection method you expect.

Related platform documentation

A LITTLE MORE CLARITY

Good questions.
Clear answers.

Have something else in mind?

Talk to our team

Usually because nothing delivers those purchases to the pixel your ads use. Purchase code in old additional scripts stopped when Shopify replaced the Thank you and Order status pages, a sender can point to the wrong Pixel ID, and a browser pixel misses a purchase when the Thank you page does not load. Check Meta Events Manager first. If no Purchase events arrive, list every sender in the Facebook & Instagram channel, Settings > Customer events and your theme, and compare each Pixel ID.

Give your ads better conversion data.

All 10 networks included. Plans from $19/month per store.

Start your 14-day free trial