GA4 purchase events missing in your Shopify funnel: a diagnostic checklist
Few things are more frustrating than seeing orders in Shopify Admin and zero purchases in GA4. The funnel breaks somewhere between the customer hitting Thank You and Google's servers receiving the event. Here's the diagnostic checklist that covers the six most common causes.
1. The GA4 measurement ID isn't installed in your theme
Open your theme.liquid layout file (or use Shopify → Online Store → Themes → Edit code → layout/theme.liquid). Search for gtag('config', 'G-. If you don't find a line like that, GA4 isn't installed. Fix: install via the Google & YouTube channel app from the Shopify App Store, which handles the gtag.js injection for you.
2. GA4 is installed but the purchase event isn't being fired
GA4 needs a purchase event to track conversions; gtag.js doesn't fire it automatically on Shopify. The Google & YouTube app handles this for you. If you installed gtag.js manually, you need to add a Customer Events pixel that fires purchase with the order's value, currency, and items array.
3. The Realtime view filters by IP and excludes your country
GA4 admin → Data Streams → your stream → Configure tag settings → check Define internal traffic and IP filters. If your office or VPN IP is excluded, your own test purchases don't appear in Realtime.
4. Consent Mode is suppressing the event
If you have a consent banner installed (OneTrust, Cookiebot, CookieYes) and the visitor hasn't accepted analytics cookies, gtag.js won't fire the purchase event. Check your consent rate, and if it's low, consider Consent Mode v2 in advanced mode so anonymous data flows even on rejection.
5. The post-purchase script is on the order status page only
Some setups install the GA4 snippet only on the Order Status page (Settings → Checkout → Additional Scripts → Order status page). On Plus stores using checkout extensions this can stop working. Confirm via Chrome DevTools → Network → search 'collect?v=2' on the thank-you page.
6. The purchase event fires but uses wrong parameter names
GA4 needs the purchase event with transaction_id, value, currency, and items. If you migrated from Universal Analytics and your snippet still uses revenue or orderId, GA4 ignores the event for ecommerce reporting (you still see it in Realtime, just not in monetization reports). Update the parameter names per Google's GA4 ecommerce schema.
How to know which one is your problem
Open Chrome DevTools on the Order Status page → Network → filter for collect. If you see no collect requests, GA4 is not installed on that page. If you see them but no purchase event, the snippet is firing but missing the purchase call. If you see purchase but it never appears in GA4 reports, parameter names or consent are the cause.
DataGap connects to your GA4 property via OAuth and runs the same diagnostic for you in seconds, plus tells you whether the events are using the GA4 schema correctly.
DataGap connects to your Shopify store via read-only OAuth and returns a ranked list of tracking gaps in 10 minutes. $167 one-time. No subscription.
Run a free auditFrequently asked
The Google & YouTube channel app installs gtag.js and fires the purchase event for you. If you installed GA4 via a custom snippet you have to wire the events yourself.
Realtime is immediate. Standard reports take 24-48 hours to populate.