Shopify · GA4 · purchase tracking

Shopify GA4 purchase
tracking is broken.
Here's why.

Shopify's relationship with GA4 tracking has been unstable since the checkout extensibility migration. If your purchase events stopped working in 2024 or your numbers don't match your Shopify orders — you're not alone. Here are the specific causes and what fixing each one actually involves.

Shopify GA4 auditFree

Tell me your Shopify plan, GA4 setup, and what you're seeing. I'll diagnose whether it's a dataLayer issue, a GTM trigger problem, or a checkout extensibility break — and tell you the fix.

Get a free Shopify audit →

Shopify specialist · 4+ years · 50+ clients

2024
When Shopify checkout extensibility broke most custom setups
60%
Conversion undercount in worst-case broken setups
3–5d
Typical full rebuild and validation time
100%
Shopify orders ↔ GA4 reconciliation — target
6 reasons Shopify GA4 tracking breaks
01
Checkout extensibility removed access to the thank-you page

Before 2024, most Shopify GA4 setups fired purchase events on the /thank_you page trigger in GTM. Shopify's checkout extensibility migration restricted access to the checkout and order confirmation pages for non-Plus merchants. If your tracking broke sometime in 2024, this is almost certainly why.

The fix
Migrate to Shopify's Web Pixels API or implement purchase tracking using Shopify's Customer Events API, which provides checkout and purchase events in a compliant way without requiring thank-you page access.
02
DataLayer not firing on Shopify checkout

GTM depends on Shopify pushing order data (revenue, product IDs, quantity) into the dataLayer on the confirmation page. Many Shopify implementations — especially those migrated from a plugin or built manually — have gaps in the dataLayer push. GTM receives the page view but no purchase data, so the purchase event fires with zero revenue.

The fix
Audit the dataLayer in browser DevTools on a test order confirmation. Verify purchase, revenue, tax, shipping, and item-level parameters are present. Rebuild the dataLayer push in Shopify's Additional Scripts or via Web Pixels if missing.
03
GA4 e-commerce events missing item-scoped parameters

GA4's e-commerce reporting requires item-scoped parameters: item_id, item_name, price, quantity, item_category. Without these, your GA4 purchase events register revenue correctly but your product performance reports are completely empty. You can't see which products drive revenue or where the funnel drops off.

The fix
Update the dataLayer push to include the full items array with all required item-scoped parameters. Map Shopify's product data (handle, title, variant, price) to GA4's expected schema.
04
Theme update removed GTM script from the layout

Shopify theme updates frequently overwrite customisations to theme.liquid — including the GTM container snippet. If tracking suddenly stopped after a theme update, your GTM snippet was likely removed from the site header. GA4 receives no events at all from that point forward.

The fix
Verify GTM is loading on all pages using Google Tag Assistant. If missing, re-add the GTM snippet to theme.liquid head and body sections. Use Shopify's native GTM integration to make it update-resistant.
05
Shopify's native GA4 integration creating duplicate events

Shopify's built-in GA4 integration (via Google & YouTube channel) fires purchase events automatically. If you also have a GTM-based purchase tag, both fire — and GA4 deduplicates using transaction_id. The result looks like missing conversions, but it's actually GA4 correctly discarding what it sees as duplicate orders.

The fix
Choose one implementation and disable the other. If using GTM for custom dataLayer, disable the native Shopify GA4 purchase event. If using the native channel, remove the GTM purchase tag entirely.
06
Currency not set — revenue showing as $0

GA4 e-commerce requires the currency parameter on every purchase event. Unlike Universal Analytics, it's mandatory. If your currency is missing or mismatched with your GA4 property settings, revenue shows as $0 in all e-commerce reports — even when events fire correctly.

The fix
Verify the currency parameter is included in your purchase dataLayer push and matches your GA4 property's default currency setting (Admin → Property Settings → Currency).

Which one is breaking
your Shopify tracking?

Most Shopify GA4 setups have more than one issue. Tell me what you're seeing and I'll diagnose it — free, in writing, within 24 hours.

Get a free Shopify audit
Instagram Facebook X LinkedIn
Free Tracking Audit