Why is Google Analytics / GA4 Under or Over-Reporting

Learn the common reasons why reporting may not be what you expect

Learn the common reasons why reporting may not be what you expect.
Why Google Analytics/GA4 Might Over or Under Report

1: Load-Based Client-Side Tracking

With traditional browser-based tags (a.k.a. client-side tagging) you are always going to have a gap in conversion and user behavior data missing in your Google Analytics platform.

This is because browser-based tags are load-based. Meaning they need the Thank You Page to fully load for the tracking to fire. If a shopper navigates away from the Thank You Page too quickly, the tracking doesn't fire & the data doesn't get sent.

The Solution: Switch to Server-Side Tagging. It's order-creation based tracking, meaning it doesn't matter how long the shopper stays on the Thank You Page. The trigger is an order being created in Shopify.

2: AdBlockers + Client-Side Tracking

Again, traditional browser-based tags will also always have a gap in data due to AdBlockers.

42.7% of internet users worldwide (16-64 years old) use ad blocking tools at least once a month. And ad blocking is most common among internet users between 16 and 24 years old. Among this demographic, 46.2% of users worldwide admit to using ad blockers.

The Solution: Switch to Server-Side Tagging. Server-Side allows you to collect data in a first-party context. From split testing sitewide server-side tracking for GA in a 1st party domain context & comparing it to "client side" only tracking (e.g. using native Shopify or GTM web container), the server-side property sees ~ 20-30% more sessions.

3: Shopify Calculates Metrics Differently

If you're comparing your data to Shopify, do it with a grain of salt. Shopify states that they calculate metrics differently than third-party tracking services such as Google Analytics.

Some common metrics that will be different between the two are:

Unique Visitors
Sessions
In addition, if you're using client-side tracking, offline orders such as POS orders or draft orders won't appear in Google Analytics. This will cause the total number of orders to be different in Shopify vs Google Analytics.

The Solution: There is no solution for Shopify calculating metrics differently than Google Analytics. However, you can send offline orders to GA if you switch to Server-Side Tracking. This will allow the total number of orders in GA to better match Shopify.

4: Different Timezones

Are your two sources reporting in the same timezone?

You can find your Shopify time zone in your Store Details Settings:

And your Google Analytic's time zone in your View Settings:

5: Third Party Checkouts

Are you using anything beyond the native Shopify Checkout? This could be Recharge, Carthook, Global-E, etc.

If you are, check to see if you have tracking on those additional checkout pages! A few ways you can test those checkouts are:

Using Google's Pixel Helper Tag Assistant Legacy (by Google)
Using Google Tag Manager's Preview Mode
Chrome's Developer Tool [See Option 3 in this video]

6: Upsells in Checkout

Are you offering upsells during on your unified Shopify checkout?

If yes, you may see GA under-reporting if you're also using native integrations or hard-coded script on the Thank You Page. Native integrations & hard-coded script will only fire the Purchase event if the shopper makes it to the Thank You Page. If the shopper exits during the upsell page, your tracking won't fire.

The Solution: Switch to Google Tag Manager + Elevar's Pre-Built Upsell Tracking.

If yes and you're using Elevar's Post-Purchase Upsell Tracking, you may see GA over-reporting quantity of orders. This is because our standard GA Pre-Built Upsell tags send a custom GA event upon upsell purchase that hyphenates the original order id.

The Solution: Create a View in GA that filters out upsell purchases.

But I'm Using Server-Side Tagging & The Data Still Doesn't Look Like I'd Expect It To?

1: You're Excluding Orders That You Want to Send

If total number of orders in Google Analytics is lower than the total number of orders created in Shopify, you may be excluding orders that you want sent.

I'm using Elevar's Fully Managed Server:

Navigate to your GA4 Destination > Select Block Transactions. Review the channels you are blocking. You may be blocking orders you would like to send.

2: You're Sending Offline Orders That You Might Not Want to Send

The reverse could also be true! Are you sending offline orders like POS orders or draft orders to Google Analytics and you don't actually want to?

  1. Check what Sales Channels you currently have in place. [ Learn how ]

  2. Block your desired transactions from being sent [ Learn how ]