Why Shopify and GA4 Show Different Sales Numbers

Shopify and GA4 sales totals do not have to match. Shopify records store transactions; GA4 reports the events it receives and processes under its reporting rules. First compare equivalent dates, channels, currencies and revenue definitions. Then investigate missing or repeated purchase events.

Define the comparison before debugging tags

Write down the exact Shopify report and GA4 metric. Order count, total sales, net sales, purchase revenue and item revenue are different measures. Check how each includes discounts, shipping, tax, refunds, cancellations and non-online orders. Align report timezones and reporting currency, and allow for processing delays.

Difference Check Likely next action
GA4 has fewer purchases Are missing orders POS, draft/admin orders, or from visitors who did not permit tracking? Separate channel and consent differences from online events that should have arrived
GA4 has more purchase events Is the same order sent by an app, custom pixel and older installation? Map event sources and inspect transaction IDs before disabling anything
Order counts align but revenue differs Compare value, tax, shipping, discounts and currency on the same order Correct the definition or event payload, rather than multiplying a total

A reconciliation example

This is illustrative, not a client result. An order contains €100 of merchandise, a €10 discount, €5 shipping and €19 tax. A merchandise value after the discount is €90; the amount collected is €114. Comparing €90 in an ecommerce event with €114 in a sales report creates a €24 difference without a missing order. A later refund creates another timing and definition question.

Make a worksheet with one row per sampled order: order reference, order time and timezone, channel, merchandise amount, discount, shipping, tax, refund, currency, GA4 transaction ID, event source and observed value. Include ordinary orders and exceptions. Keep customer data out of shared diagnostic files.

Trace a controlled test order

  1. List installed tracking routes: Google & YouTube, apps, customer events/custom pixels and legacy theme code. Identify which system is meant to own purchase tracking.
  2. Use an agreed test method and record consent state, device, payment route and timestamp. Do not change live payment settings merely to create a tracking test.
  3. Inspect the purchase event and its transaction ID, currency, value and items using the debugging tools supported by that installation. One test does not establish that all browsers and accelerated checkouts work.
  4. Check the processed result later, including duplicate IDs and refunds. Confirm the same order is being compared in both systems.

Google documents transaction IDs for purchases and refunds. A transaction ID should identify the real transaction consistently; it must not be a new random value each time a confirmation page loads.

Turn a discrepancy into a scoped investigation

For tracking and integration troubleshooting, send the report names, date range, timezone, tracking installation and a redacted sample of mismatched transactions. Avoid a goal of forcing perfect equality when consent or legitimate definitions explain part of the gap. If the concern is actual sales rather than measurement, use the traffic-but-no-sales diagnostic.

Sources: Shopify analytics discrepancies; Google ecommerce measurement.

About the author: David Hoang writes for the ZAGO Journal and is a contact for Shopify projects at ZAGO. Read about David or contact ZAGO about your store.

DEINE REISE BEGINNT HIER!

Um die gezeigten Funktionen zu replizieren oder Ihre Websites zu optimieren, kontaktieren Sie uns über das Formular für maßgeschneiderte Lösungen.

Kostenloses Erstgespräch.