The Number That Wakes Ecommerce Managers at 3am
You open your GA4 dashboard on Monday morning. Revenue for the week: €42,500. You open Shopify Analytics. Revenue for the same week: €48,200. The gap is €5,700 — which one is correct?
Both are correct. They're measuring different things using different methodologies. Understanding why they diverge is not an optional academic exercise — it's the prerequisite for making sound business decisions from either data source.
This guide explains every source of Shopify vs. GA4 discrepancy and how to build a reconciliation framework.
Source 1:Different Revenue Definitions
Shopify records: Gross revenue = all orders placed, including orders that are later cancelled or refunded, before payment processing fees are deducted. Shopify can also be configured to record net revenue (after discounts and returns).
GA4 records: Purchase event revenue = revenue from transactions that successfully fired the GA4 purchase event at the moment of checkout completion.
Discrepancy drivers:
- Orders placed but later cancelled show in Shopify (until manually adjusted) but should not show in GA4 if the purchase event didn't fire
- B2B orders or draft orders processed by staff may appear in Shopify but not in GA4 if they bypass the web checkout
- Shipping revenue: Shopify may include shipping as part of reported revenue; GA4's purchase event typically excludes it unless explicitly coded
- Taxes: Shopify can display tax-inclusive or tax-exclusive revenue; GA4's standard ecommerce schema uses tax-exclusive revenue by default
Source 2:Event Tracking Failures
GA4 requires a purchase event to fire on the order confirmation page for every transaction. Failures occur when:
- Ad blockers and privacy browsers: Safari's ITP (Intelligent Tracking Prevention) and uBlock Origin block GA4's analytics.js in many configurations. Industry estimates suggest 15-30% of ecommerce traffic runs some form of ad blocking.
- Page load failures: If a customer's connection drops between payment completion and the confirmation page loading, the purchase event never fires.
- Duplicate event firing: Some Shopify theme configurations fire the purchase event twice (once on checkout and once on the thank-you page), inflating GA4 revenue above Shopify revenue.
- Custom checkout flows: Shopify Plus merchants with customized checkout steps may have broken event tracking in the checkout flow.
Diagnosis: Compare order count in Shopify vs. transaction count in GA4 for the same period. If transaction count in GA4 is significantly lower than orders in Shopify (more than 5-10% gap), you have a tracking failure issue.
Source 3:Attribution Window Differences
Shopify's "Last Interaction" attribution and GA4's data-driven attribution model can disagree on which channel gets credit for a sale:
- Shopify's UTM tracking: Attributes the sale to the last UTM-tagged session before purchase
- GA4's attribution: By default, uses data-driven attribution (or last-click if insufficient data), which may assign credit differently based on the customer's full conversion path
This doesn't create a revenue discrepancy (both tools see the same transactions) but creates a channel attribution discrepancy — where each tool says traffic came from a different source.
Source 4:Session Boundary Differences
GA4 ends a session after 30 minutes of inactivity or at midnight. Shopify's checkout can span multiple sessions (a customer starts checkout, leaves, returns the next day, and completes the purchase). GA4 may attribute this to a new direct session; Shopify attributes it to the original UTM-tagged session.
Building the Reconciliation Framework
A structured reconciliation approach:
Step 1: Establish the Shopify baseline Export from Shopify: total orders, total gross revenue, orders by channel (UTM), orders cancelled, orders refunded. This is your ground truth for transaction count.
Step 2: Compare transaction counts GA4 transactions should be within 5-10% of Shopify orders. If the gap is larger, investigate event tracking failures first.
Step 3: Adjust for known exclusions Subtract from Shopify's count: cancelled orders, draft orders placed by staff, orders from channels that bypass web checkout. The adjusted Shopify count should be closer to GA4.
Step 4: Move to server-side tracking The most reliable long-term solution for the tracking failure problem is server-side GTM (sGTM) implementation, which fires conversion events from your server rather than the customer's browser — eliminating ad blocker interference. See our server-side GTM guide for implementation details.
At Verdant Mindset, we implement server-side tracking configurations as part of our Shopify analytics and growth services.
When Shopify and GA4 disagree, it's not broken tracking: Shopify records the first-party money that came in, GA4 only guesses from the browser. For revenue you ask the accountant, not the paparazzo.
Scale Your Ecosystem
30-min discovery call — no cost, no pitch. We audit your digital architecture and deliver a clear operational plan.
- 01Short message with your business context
- 02Reply within 24h with a discovery-call proposal
- 03Operational plan + scope recommendation
FAQ.PROTOCOL

