Troubleshooting

Shopify Checkout Tracking Not Working? Missing & Doubled Purchases, Fixed

Shopify Checkout Tracking Not Working? Missing & Doubled Purchases, FixedTag Assistant — debug checklistContainer published?Trigger conditions met?Variable has a value?Blocked by an exception?Consent granted?Tag did not fire0 of 1 triggers matched

Your storefront tracking works, but purchases are missing, doubled, or wrong, and GTM Preview shows nothing useful. Shopify checkout tracking fails in a handful of predictable ways, and almost all of them are environment problems, not bugs in your tags. Here's how to find which one you've hit.

First: stop trusting GTM Preview here

The single biggest source of confusion. GTM Preview / Tag Assistant cannot connect to the Shopify checkout, it can't see into the pixel sandbox where your GTM and dataLayer run. A purchase tag that looks "not fired" in Preview may be firing perfectly. Verify a different way:

  • Use the Shopify Pixel Helper to confirm events reach the sandbox.
  • Open DevTools Console, switch the frame to the pixel sandbox, and inspect window.dataLayer.
  • Place a real test order (100%-off code) and watch the checkout_completed push, and the GA4 DebugView.

Purchases are missing

Likely causes

  • Store still on legacy checkout.liquid, pixel goes silent
  • Container loaded but no tag + trigger exists
  • Custom Event trigger name ≠ the pushed event key
  • Upsell flow moved checkout_completed to the offer page

How to confirm

  • Check Settings for Checkout Extensibility
  • Confirm a GA4 purchase tag + trigger are published
  • Match the trigger name exactly to event: 'checkout_completed'
  • Place a test order with an upsell and watch where it fires

Empty values?

If the event fires but email/phone/name are blank, that's protected customer data, it only populates after Shopify's protected-data approval. Order id, totals and items don't need it.

Purchases are doubled

Double-counting comes from two integrations both sending the purchase. The usual pairs:

  • An app pixel and your custom pixel both send purchase.
  • Shopify's native GA4 integration plus your own GA4 tag.
  • A post-purchase upsell page that re-emits the event.

The fix

Keep one source of truth for the purchase event, either an app/native integration or your custom pixel, never both, and send a unique transaction_id so GA4 deduplicates any genuine repeats. Then reconcile GA4's purchase count against Shopify's order count.

Revenue is wrong

  • Totals look low or zero. You mapped subtotalPrice instead of totalPrice, or the field path changed, log event.data.checkout and re-check.
  • Items are empty. lineItems isn't a straight rename; you must reshape each into GA4's items shape (item_id, item_name, price, quantity).
  • Currency mismatches. Pass currencyCode on every event so GA4 doesn't assume your property default.

Practice this on a real container

Build the GA4 purchase tag against a simulated Shopify checkout_completed push, same fields and trigger name as production, so you can see exactly what a correct setup looks like before debugging a live store.

Practice the Shopify purchase →

The 5-minute triage

  • On Checkout Extensibility? Legacy checkout = silent pixel.
  • Tag + trigger published? An empty container transfers nothing.
  • Trigger name exact? Must equal the pushed event value.
  • One source of truth? Two integrations = doubled purchases.
  • Tested for real? Pixel Helper + console frame + a test order, never Preview.

Now go practice it

Reading sticks when you do it. These hands-on lessons load your own GTM container and let you debug in Tag Assistant.

Frequently asked questions

Why is my Shopify purchase not showing in GA4?

Common causes: the store is still on legacy checkout.liquid so the pixel goes silent at checkout; the container loaded but no tag and trigger exist; the Custom Event trigger name doesn't exactly match the pushed event key; or a post-purchase upsell moved where checkout_completed fires. Test with a real order, not GTM Preview.

Why does GTM Preview show nothing on Shopify checkout?

GTM Preview / Tag Assistant cannot connect into the Shopify checkout pixel sandbox, so tags that are firing correctly can appear as not fired. Verify with the Shopify Pixel Helper, by switching the DevTools console to the pixel sandbox frame, and via GA4 DebugView after a test order.

Why are my Shopify purchases counted twice?

Two integrations are both sending the purchase event, for example an app pixel plus your custom pixel, or Shopify's native GA4 plus your own GA4 tag. Keep one source of truth, send a unique transaction_id so GA4 deduplicates, and reconcile against Shopify's order count.

Why is my Shopify revenue wrong in GA4?

Usually a mapping issue: sending subtotalPrice instead of totalPrice, an empty items array because lineItems wasn't reshaped into GA4's item fields, or a missing currency. Log event.data.checkout and re-map the fields.

Related posts

About the author

Nathan Gage
Nathan Gage

Analytics & Tag Management Consultant

Nathan Gage got his start in marketing through Google Tag Manager. Seeing how tracking customer behavior could turn raw clicks into insight you can actually act on is what pulled him into the field. Since then he has worked both full time and as a consultant with 15 marketing agencies, supporting brands that spend anywhere from a thousand dollars a month to over a million. Along the way he built a multi-touch attribution app, and he created The Happy Tagger so anyone can practice GTM, GA4 and server-side tracking on a real container instead of a production site.