Home / Blog / Customer Events Pixel Not Firing Purchase
Shopify · Tracking Troubleshooting
Shopify Customer Events Pixel Not Firing Purchase: What to Check
If your Shopify Customer Events pixel tracks page views, product views, or checkout started events but never sends the final purchase, the problem is usually around the `checkout_completed` event, the checkout page lifecycle, consent, or how the pixel is being tested. This is not the same as adding a normal script to theme.liquid.
Keyword target
- Primary: Shopify Customer Events pixel not firing purchase
- Secondary: Shopify checkout_completed not firing, Shopify Web Pixels API purchase not firing, Shopify custom pixel purchase event not working, checkout_completed event missing Shopify, Shopify Customer Events checkout_completed
Key takeaways
- `checkout_completed` is not guaranteed to fire if the Thank You or first post-purchase page fails to load.
- Customer Events pixels run in Shopify’s pixel environment, not like normal theme scripts.
- Debugging needs Shopify Pixel Helper, app logs, destination logs, and real test orders.
- Do not mix old checkout scripts, GTM workarounds, and Customer Events without a source-of-truth plan.
What Shopify says about checkout_completed
Shopify’s Web Pixels API documentation says `checkout_completed` logs when a visitor completes a purchase and is triggered once for each checkout, typically on the Thank You page. It also says that for upsells and post-purchase flows, the event is triggered on the first upsell offer page instead and not again on the Thank You page. If the page where the event is supposed to be triggered fails to load, the event is not triggered at all.
That single sentence explains many “purchase pixel not firing” cases: the order exists in Shopify, but the pixel never received the browser-side moment needed to send the purchase.
Common causes
The usual causes are not one bug. They are a stack of assumptions: the pixel is not connected, the event is tested in an unsupported way, consent blocks the pixel, a third-party checkout path changes the page lifecycle, an upsell captures the first post-purchase page, or the code expects Liquid objects that do not exist inside Customer Events.
| Symptom | Likely cause | Check |
|---|---|---|
| Other events fire, purchase does not | Thank You/upsell page did not load | Run a real test order and watch Shopify Pixel Helper |
| Works in normal checkout but not Shop Pay/PayPal | redirect/payment lifecycle issue | test accelerated wallets separately |
| Code works in theme but not Customer Events | sandbox/API limitation | rewrite code for Web Pixels API |
| GTM preview cannot see purchase | debugger cannot reach sandboxed pixel reliably | use Pixel Helper and destination logs |
| Purchase fires twice | old additional script plus pixel | remove legacy source |
Elevar, Analyzify, Littledata, Stape angle
Elevar and similar tracking tools avoid some Customer Events pitfalls by owning the data layer, server-side destination, or app pixel path. But they still need correct checkout event access, consent handling, and duplicate-source removal. Stape-style GTM server-side setups also need the browser event to pass the right order data to the server container.
Diagnostic workflow
- Open Shopify > Settings > Customer events and confirm the pixel is connected.
- Use Shopify Pixel Helper to test one custom pixel at a time.
- Run a real low-value order, not only a preview-page test.
- Test normal card checkout, Shop Pay, PayPal, and post-purchase upsell paths separately.
- Log all received events and confirm whether `checkout_completed` appears.
- Check whether consent/customer privacy blocks analytics or marketing events.
- Verify the code uses the Web Pixels API event payload, not Liquid variables.
- Check whether legacy checkout scripts, GTM, or apps also send purchase.
- Compare Shopify order ID against GA4, Meta, Google Ads, TikTok, or Elevar logs.
- Fix one source of truth, then retest.
What not to do
- Do not assume a created Shopify order means the browser pixel fired.
- Do not paste theme/checkout Liquid snippets into Customer Events and expect them to work.
- Do not test only with Tag Assistant or GA4 DebugView if the event is inside Shopify’s pixel sandbox.
- Do not leave old Additional Scripts and new Customer Events tracking active for the same purchase.
TrackingAudit validation checklist
- Pixel connected in Customer Events
- Shopify Pixel Helper tested
- Real test order completed
- Normal checkout tested
- Shop Pay/PayPal tested
- Post-purchase upsell behavior checked
- Consent states tested
- Destination received correct order ID
- Duplicate purchase sources removed
Need the tracking checked before scaling?
TrackingAudit can compare Shopify orders against the active event stack and show which system is missing, duplicating, or misattributing purchases.
Get your free audit →Frequently asked questions
Why does checkout_completed not fire?
Because the relevant post-checkout page may not load, consent may block it, the pixel may be disconnected, or the code may be written for the wrong environment.
Does checkout_completed fire on the Thank You page?
Usually, but Shopify says it can fire on the first post-purchase upsell page instead and not again on the Thank You page.
Can I debug this with Tag Assistant?
Not reliably by itself. Use Shopify Pixel Helper and destination-side logs.
Should I use Elevar instead of a custom pixel?
Use Elevar or another maintained tracking app when you need server-side delivery and ongoing maintenance, but still validate event ownership and duplicates.