You look at GA4. Purchase events: 0. You look at Shopify. You have orders. Something broke — you just don’t know what.
Thank you for reading this post, don't forget to subscribe!This is more common than it should be. GA4’s relationship with Shopify is fragile — there are four distinct places where the tracking chain can break, and each one looks the same from the outside: missing purchase data.
Here’s how to identify which one is affecting your store.
The 4 Most Common Reasons GA4 Misses Shopify Purchases
1. The Thank-You Page Isn’t Loading the GA4 Tag
Shopify’s thank-you page — the order confirmation page customers see after checkout — is a separate environment from the rest of your store. It’s hosted by Shopify and has its own rules about which scripts are allowed to run.
If your GA4 tag isn’t explicitly configured to fire on the order confirmation page, the purchase event never gets recorded. The session ends at checkout, and GA4 has no idea a transaction occurred.
How to check: Open GA4 and navigate to Configure → DebugView. On a separate device or browser, place a test order using a 100% discount code (create a temporary one in Shopify). Watch DebugView in real time. If you see a page_view event fire but no purchase event after the order confirmation page loads, this is your issue.
Common causes: A Google Tag Manager container that isn’t triggered on the /thank_you URL pattern, or Shopify’s Checkout Extensibility blocking external scripts from running on the checkout domain. Shopify has progressively tightened what third-party scripts can do in checkout — and GTM-based implementations are particularly vulnerable to this.
2. Your GTM Container Has a Configuration Error
GTM-based GA4 setups break in a specific and frustrating way: the GA4 Configuration tag fires correctly on all pages, and GA4 receives session data, but the separate purchase event tag has a trigger misconfiguration.
The result is a GA4 property that shows users, sessions, and page views — but zero purchase events. It looks like GA4 is working. The purchase tracking isn’t.
How to check: Open GTM and use Preview mode. Trigger a test purchase flow. On the order confirmation page, look at the tag summary panel on the left. Identify which tags fired and which did not. If your GA4 purchase event tag appears in the “Tags Not Fired” list, the trigger is wrong.
Common trigger mistakes: the event tag is set to fire on a Custom Event trigger looking for a purchase dataLayer push, but the dataLayer event name doesn’t match exactly. Or the trigger fires on “All Pages” but with a page path condition that doesn’t match Shopify’s actual thank-you URL structure (/checkouts/[id]/thank_you vs /thank_you).
If GTM configuration is the issue and you’d rather have it fixed correctly than debug it yourself, the Tracking & Analytics Sprint covers exactly this.
Not sure if your tracking is set up correctly?
The E-Commerce Audit verifies your full tracking stack — GA4, GTM, and Shopify — and tells you exactly what’s missing or misfiring.
Book the Audit →3. Shopify’s Native GA4 Integration Has Known Gaps
Shopify offers a built-in GA4 integration through the Google & YouTube sales channel app. Many store owners use it because it’s the easiest setup — no GTM, no custom code. The problem is that it has well-documented limitations.
The native integration doesn’t reliably pass item-level data (product name, SKU, category) in all configurations. It has under-reported since Apple’s iOS privacy changes reduced the number of events that can be captured client-side. And it’s been known to duplicate events in certain Shopify theme configurations, meaning you might see more purchases in GA4 than actually occurred — or fewer.
How to check: Compare your order count in GA4 against your Shopify Orders tab for the same date range. Use the same time zone. If the gap is consistently greater than 20%, the native integration is missing events. A gap of 5–15% is expected due to privacy blocking and attribution differences. A gap larger than that indicates a systemic tracking failure.
The fix for this usually involves switching to a server-side tracking implementation or a purpose-built Shopify GA4 app that sends events directly from Shopify’s backend rather than relying on browser-side scripts.
4. A Recent App Install or Theme Update Broke the Tag
This one catches store owners off guard because nothing was deliberately changed in the tracking setup. But something broke anyway.
Apps that modify the checkout flow or the order confirmation page — upsell apps, post-purchase apps, loyalty integrations — can unintentionally interfere with GA4 tag firing. They may load scripts in a way that blocks or delays the dataLayer push that triggers the purchase event. Some apps inject their own code that conflicts with GTM.
Theme updates are a separate risk. If your GA4 tag is implemented via code injected into theme.liquid rather than GTM, a theme update can overwrite that code entirely. You’d have no idea until you noticed the drop in purchase events.
How to check: Go to GA4 → Admin → Property → Data Streams → select your stream → View event count. Look at the purchase event count chart over the past 90 days. A sudden drop on a specific date is a strong signal. Cross-reference that date with your Shopify app install history and theme update log to find the correlation.
How to Verify Your GA4 Purchase Tracking Is Actually Working
Don’t assume tracking is working because you set it up once and it seemed fine. Verify it properly.
Here’s the process:
- Create a 100% discount code in Shopify. This lets you place a real test order without charging a card.
- Open GA4 → Configure → DebugView in one browser window.
- In a separate browser (or incognito, or a different device), go through your store as a customer would — add a product to cart, proceed through checkout, complete the order using the discount code.
- Watch DebugView in real time. After the order confirmation page loads, you should see a
purchaseevent appear within a few seconds. - Click on the
purchaseevent in DebugView. Verify it contains: atransaction_idthat matches the Shopify order number, avaluethat matches the order total, anditemsarray with the correct product details.
If the purchase event fires with correct parameters, your tracking is working. If it’s missing, fires with wrong values, or fires multiple times, you’ve confirmed the problem and can work backward to find the cause.
When to Fix It Yourself vs Get Help
Some of these fixes are straightforward. Others are not.
If the issue is a GTM trigger misconfiguration — wrong URL pattern, wrong event name — that’s a 30-minute fix with GA4 and GTM documentation open in another tab. The GTM Preview mode will tell you exactly what’s happening.
If the native Shopify integration is systematically under-reporting, the fix is not simple. You’ll need to either rebuild the dataLayer implementation from scratch, move to a server-side tracking setup, or find a third-party app that handles Shopify-to-GA4 tracking more reliably. Each option has trade-offs in terms of cost, maintenance, and accuracy.
If you’ve gone through this diagnostic and still can’t identify what’s wrong — or you’ve found multiple issues and aren’t confident in the fix — that’s exactly what the Tracking & Analytics Sprint is built for. It’s a focused engagement to audit your current tracking setup, identify every gap, and rebuild it so the data you’re making decisions from is actually accurate.
If you want a full diagnostic across conversion, tracking, UX, and operations before deciding where to focus, the E-Commerce Audit gives you that picture first.
Stop making decisions on data you can’t trust.
The Tracking & Analytics Sprint gives you a clean, verified GA4 setup in 14 days — purchase events firing correctly, funnels you can read, data you can act on.
Start with the Audit if you want a full store diagnostic first: E-Commerce Audit →
Book the Tracking Sprint → Ask a QuestionThe Bottom Line
GA4 not tracking Shopify purchases is almost always one of four things: the thank-you page isn’t loading the tag, GTM has a trigger misconfiguration, the native Shopify integration has gaps, or a recent app or theme change broke something that was previously working.
Run the DebugView test. Compare your GA4 order count to Shopify’s. Find the specific break before you try to fix anything.
If the problem is deeper than a quick trigger fix, that’s when it’s worth getting someone to look at the full implementation.
Ready to fix what's broken?
Stop guessing and get a real diagnosis. Book a Growth Audit or jump straight into a Sprint.