Lesson 7 of 8
Gotchas & Double-Counting
Shopify setups fail in a handful of predictable ways. Knowing them up front saves a painful reconciliation later.
Why it breaks
- Preview never connects to checkout (sandbox)
- No tag + trigger means no data flows at all
- PII fields empty without protected-data approval
- Still on legacy checkout.liquid — pixel goes silent
Why it double-counts
- An app pixel AND your custom pixel both send purchase
- Native GA4 in Shopify plus your own GA4 tag
- checkout_completed can fire on the upsell page
- Re-loading the Thank you page in some legacy flows
Two rules that prevent most pain
- One source of truth for purchase. Pick either an app/native integration or your custom pixel — not both — and reconcile GA4 against Shopify's order count.
- Build your own dataLayer. The sandbox has no stateful dataLayer across the page, so carry values explicitly in each push rather than assuming an earlier one persists.
One more nuance worth remembering: with upsells or post-purchase offers, checkout_completed fires on the first upsell page, not the Thank you page — and not again afterward. If a purchase looks "missing," check whether an upsell flow moved where the event fired.
Key takeaway
Most Shopify tracking bugs are environment, not code: Preview can't see checkout, PII needs approval, and purchase double-counts when two integrations both send it. Keep one source of truth for purchase and put every value you need directly on each push.