Skip to content
MetricMaven

Attribution & Measurement

Why Shopify and GA4 revenue doesn’t match

Shopify records every order on the backend while GA4 only sees purchases the browser reports. Here is how to reconcile orders and revenue before the next review.

Jamie IsabelJamie IsabelPublished October 12, 20268 min read
On this page

Shopify and GA4 both claim to know what your store sold, and they rarely agree to the order. Shopify records every order in its backend. GA4 records only the purchases that reach it from the browser. Most revenue disputes start when a team treats the GA4 purchase count as a copy of the Shopify order list.

Why Shopify and GA4 orders don't match

A Shopify order exists once the sale is recorded in the store. A GA4 purchase exists only if a purchase event reached the property. Anything that interrupts that event creates an order Shopify has and GA4 does not. Ad blockers, denied consent, a customer closing the tab before the thank-you page loads, and a broken pixel all fall into this group.

MismatchShopify viewGA4 viewReport rule
Order countEvery order recorded in the backendOnly purchases with a sent purchase eventUse Shopify order count; track GA4 capture rate
Revenue totalGross sales, discounts, returns, taxes, and shipping reported as separate linesThe value sent with the purchase eventCompare on one stated definition
Refunds and returnsSubtracted in sales reportsReduced only if refund events are sentNet refunds from Shopify, not GA4
Offline and non-web ordersPOS, draft, wholesale, and subscription orders appearUsually missing unless sent separatelyLabel these as expected gaps
DuplicatesOne record per orderCan fire twice on a thank-you page reloadDedupe on transaction_id
Most disputes come from different definitions and different capture paths, not from a broken dashboard.

Checkout tracking is where most gaps start

On Shopify, the checkout and thank-you page run tracking through web pixels, which are custom or app pixels that run in a sandbox. The standard event for a finished checkout is checkout_completed. Older setups that rely on theme scripts or Google Tag Manager on the thank-you page can stop firing or fire inconsistently after checkout changes, so the GA4 count drifts away from Shopify without any visible error.

Every purchase event should carry a unique transaction_id set to the Shopify order ID. Without it, a reload of the thank-you page can count one order twice, and nobody can tell which rows are duplicates.

Time zones, currency, and attribution

Shopify and GA4 can be set to different time zones, so an order placed late in the evening can land on a different day in each system. Multi-currency stores need one consistent reporting currency before any comparison. Attribution adds one more difference: Shopify marketing reports and GA4 use different rules and sessions, so channel credit can differ even when the order counts match.

Reconcile before the review

  1. Write the metric definition first: order count, gross sales, net sales, or revenue after refunds.
  2. Confirm the GA4 purchase event sends transaction_id and that it matches the Shopify order ID.
  3. Lock the date range, the store time zone, the GA4 property time zone, and the reporting currency.
  4. Net refunds from Shopify, and confirm whether GA4 receives refund events at all.
  5. Track GA4 capture rate (GA4 online orders ÷ Shopify online orders) each week and investigate when it drops.

Where Shopify should win

Shopify should be the source of truth for orders, revenue, refunds, and customers. It holds the complete order record, including POS, draft, wholesale, and subscription orders that never touch the online checkout. Use it for any number that answers how much the store sold, what was returned, and who bought.

Where GA4 should win

GA4 should be the source of truth for onsite behavior: landing pages, sessions, funnel drop-off, and channel comparison. It is also the right place to see whether a campaign changed traffic or checkout behavior before that change shows up in Shopify revenue. The problem comes when a team uses GA4 to defend total sales or uses Shopify to explain every website session.

Go further with the platform mismatch guide, the server-side tagging guide, and the tracking mistakes list. If the capture rate has dropped and you want a second pair of eyes, book a tracking audit: bring the disputed report and we’ll map the first checkout signal you can trust.

Frequently asked questions

Why does GA4 show fewer orders than Shopify?

Shopify records every order in its backend. GA4 only records a purchase when a purchase event is sent from the browser or a server integration. Ad blockers, denied consent, closed tabs before the thank-you page loads, and broken pixels all leave orders out of GA4.

Should Shopify or GA4 be the source of truth for revenue?

Use Shopify for orders, revenue, refunds, and customers. Use GA4 for onsite behavior, funnel drop-off, and channel comparison. When one executive number needs both, document which system it comes from and how the two are reconciled.

Why is GA4 revenue higher or lower than Shopify total sales?

The two numbers often use different definitions. Shopify separates gross sales, discounts, returns, taxes, and shipping. GA4 revenue is whatever value the purchase event sent, which may or may not include tax and shipping. Compare the same definition before comparing totals.

Can MetricMaven reconcile Shopify and GA4?

Yes. We map the order and revenue fields, the purchase event and transaction_id, refund handling, time zone, and currency so the team can explain each gap without rebuilding the report by hand.

Sources and references

Tracking audit

Find out what your tracking is missing.

Every engagement starts with a written audit of what you track today, what’s broken, and what to fix first.

Book a tracking audit
  1. What we check

    Tags, events, and consent on your site, and how conversions reach GA4, your ad platforms, and your CRM.

  2. What you get

    A ranked list of tracking gaps with the business impact of each and the effort to fix it.

  3. What follows

    Your team works through the list, or we implement the fixes and keep them working.