Shopify vs GA4: Which Data Can You Trust?

Introduction

Let’s say your Shopify dashboard shows $68,500 in sales this month.
But GA4 (Google Analytics 4)? It reports $52,200.

You refresh both. The gap stays.

If your Shopify brand runs between $500K and $5M/year, you’ve probably been here. And the scary part? We’ve seen setups where GA4 reports 30% or more below Shopify.

While cookie rejection can explain around 10% variance, anything beyond that points to technical issues — and they compound fast.

This post explains why Shopify and GA4 don’t match, which one you can rely on, and how to fix it for good.

Why Shopify and GA4 Data Don’t Match

Shopify is your sales ledger. It tracks what’s sold.
GA4 is your analytics system. It tries to understand how the sale happened.

Here’s where the gap usually comes from:

1. Attribution Works Differently

Shopify logs a sale as soon as payment is complete.
GA4 wants to attribute that sale to a campaign, source, and path — and only if the session still qualifies.

This difference is most obvious in paid media:
A user clicks a Meta ad, browses, returns three days later, and purchases.
Shopify sees the sale.
GA4 may not, depending on session rules.

2. Purchase Tracking Breaks Easily

One of the most common problems we see: GA4 simply isn’t logging purchases.

This happens more than most founders realize.

We’ve seen working stores with over 30% of conversions missing from GA4 — often due to:

  • Tags not firing
  • Checkout steps not tracked
  • Conflicting scripts from other tools

When this happens, ROAS (Return on Ad Spend) calculations become meaningless. You can’t measure ads performance accurately.

If you don’t have clean Shopify purchase data inside GA4, you can’t track revenue per campaign, compare ad platforms, or see which source actually works.

For attribution and ROAS, GA4 should be your source of truth.

3. UTMs Don’t Persist Across Checkout

UTMs (Urchin Tracking Modules) are the parameters added to your URLs that track campaign source, medium, and term.

Click an ad, land on Shopify — and if your store doesn’t preserve UTM values across pages or into checkout, they vanish.

GA4 then logs the conversion as “Direct” — and your ad platform loses credit.

If this isn’t fixed using cookies or localStorage inside GTM, you’ll consistently misattribute sales and underreport paid performance.

4. Checkout Tracking Is Often Deprecated

Shopify quietly deprecated checkout.liquid for most stores after 2022.

If you’re still relying on script injections or theme edits to fire GA4 events, you’re using methods that don’t work on modern checkouts — especially for non-Plus stores.

Today, the only Shopify-approved method for GTM (Google Tag Manager) integration is via Custom Pixel + Web Pixel API.

It uses analytics.subscribe() to pass structured purchase events into GTM.

All other methods are either deprecated, imprecise, or fragile.

5. Script Conflicts Create Noise

Even if GA4 is installed correctly, competing scripts from Klaviyo, Meta Pixel, third-party apps, and abandoned tags can cause:

  • Duplicate events
  • Inflated revenue in GA4
  • Mismatched conversion counts

You may think your tracking is working — but under the hood, it’s pulling in unreliable signals.

How to Actually Interpret the Numbers

Here’s a simple framework we use to bring clarity fast:

1. Check if GA4 Is Logging Purchases

1.Open GA4 DebugView
2.Test a real purchase
3.Look for the purchase event
4.Make sure it includes:

  • transaction_id
  • value
  • currency

If this is missing, GA4 has no revenue signal — and your ROAS is fiction.

2. Make UTM Parameters Persistent

If UTMs don’t stick, GA4 loses the source.

In GTM, store UTMs on first page load (utm_source, utm_campaign, etc.)
Then retrieve them on the purchase event via a cookie or localStorage script.

No persistent UTMs means broken attribution.

3. Review Checkout Implementation

If you’re not on Shopify Plus, you likely can’t use checkout.liquid.
Instead, use the Custom Pixel system to log purchase events via GTM.

This is the only method Shopify currently recommends for clean tracking.
It ensures GA4 sees actual purchases at the end of the flow — not guesses.

4. Align Attribution Windows

GA4 defaults to 30-day attribution. Meta uses 7-day click, 1-day view.
You’ll never match 100 percent — but you can interpret correctly by understanding:

  • What timeframe each platform uses
  • What events qualify for attribution
  • How to compare with filters applied

Look for consistency.

Small gaps (under 10 percent)? Cookie loss, browser restrictions — expected.
Large gaps (20–30 percent)? Something’s broken.

Still seeing conflicting totals across Shopify, GA4, and Meta?
Here’s how to fix attribution gaps

What You Gain When Your Data Is Clean

When your purchase tracking is accurate and your attribution model is understood:

  • ROAS becomes reliable
  • Paid channels are compared fairly
  • Campaign scaling decisions are data-backed
  • Your team stops guessing

You can finally stop debating which number is right — and start acting on real performance.

Want to see all your sources in one dashboard?
Learn how to centralize GA4, Shopify, and Ads in Looker Studio

Conclusion

When Shopify says one thing, GA4 says another, and Meta says something else — who do you believe?

If the answer is “none of them,” your growth stalls.
You lose trust in reports. You slow ad spend. You freeze.

But the fix isn’t complicated — it’s structural.

  1. Use Custom Pixel to track Shopify properly
  2. Clean your GTM setup
  3. Implement Persistent UTMs
  4. Configure Ads tags with revenue values
  5. Trust what the data actually says

Want help seeing where the gap is?

Schedule a quick review call — we’ll walk through your GA4 + Shopify configuration, show you what’s off, and lay out a clean fix. Fast, async, and no pressure.