Why GA4 revenue is different from Shopify

By the HonestTag team ยท Published October 27, 2026

GA4 and Shopify are not measuring the same number. Shopify's total sales adds taxes, duties, shipping and fees to what products sold for, and subtracts discounts and sales reversals. A sale counts on the day it was made, and a reversal on the day it was processed. Google tells sites to send a purchase value without shipping or tax, and GA4's purchase revenue only knows about the purchases a tag or server actually sent it, minus the refunds it was told about. Part of the gap is those definitions, and part is purchases that never reached GA4.

Install HonestTag free and run the Mirror plan beside your current tracking. It sends no purchases or conversions to your ad platforms, so it cannot double-count a sale or change your current setup, and it shows which platform claims hold up against the new customers in your real orders. Free at any store size.

Install HonestTag free

What each one counts

Shopify. Shopify's sales reports page defines total sales as "gross sales - discounts - sales reversals + taxes + duties + shipping charges + fees." Gross sales is "product price x quantity (before taxes, shipping, discounts, and sales reversals)," and net sales is "gross sales - discounts - sales reversals." Sales reversals include returned products, cancellations, edits, and adjustments to shipping, taxes, fees, and discounts. On dates, Shopify says sales show "as a positive value for the day that they were made, and reversals display as a negative value for the day that they were processed." So a refund lands on the day it was processed, not on the day of the order.

Shopify also says what its reports leave in and out. Pending, canceled, and unpaid orders are included in gross sales, and the sales reports also include draft orders that have been converted into orders. Test orders placed while Shopify Payments was in test mode, and deleted orders, are not. A gift card product that you sell "isn't included in any sales reports, nor the total sales number in the Home analytics card," so a tag that sends every checkout as a purchase reports revenue for gift cards that total sales leaves out. When a customer pays with a gift card, the item is in the sales reports at its full value. Report data is in your store currency unless you pick another one, and its time zone is a store setting; Shopify's discrepancies page notes that "Discrepancies might be introduced because of different reporting time zones."

GA4. GA4 has no orders of its own. It counts purchase events. For the purchase value, Google's event reference says: "Set value to the sum of (price * quantity) for all items in items. Don't include shipping or tax." Shipping and tax have their own parameters. Google also says "If you set value then currency is required for revenue metrics to be computed accurately." Google's metrics table defines purchase revenue as "The sum of revenue from purchases made on your website or app, minus any refunds given," and says refund amounts are "populated from the refund and app_store_refund events." A refund GA4 never receives as an event is not subtracted.

GA4 dates an event in the property's time zone: Google's example is a visit on Tuesday in the visitor's time zone that is "recorded as having occurred on Monday" in yours. Revenue sent in another currency is converted "using the prior day's exchange rate" and shown in the property's currency (Google's currency reference). And recent days are not final: Google says "Data processing can take 24-48 hours. During that time, data in your reports may change." Compare days that are at least two days old.

A worked example

The numbers below are illustrative, not from any store. Say every order in a week is the same: products $100, shipping $10, tax $8, no discount. The store takes 20 orders.

To compare your own store, line up GA4 purchase revenue with Shopify's net sales rather than total sales, on the same days in the same time zone and currency, and check the purchase count before the revenue. The two will still drift apart once there are reversals, because Shopify's net sales also subtracts cancellations, edits, and shipping, tax, fee, and discount adjustments.

Send GA4 purchases keyed to your orders. On the Starter plan and up, HonestTag sends GA4 its own purchase event with your Shopify order ID, so it does not add to the revenue GA4 already reports.

Install HonestTag free

Why the two numbers differ

What server-side delivery fixes, and what it cannot

A purchase sent from your server through Google's Measurement Protocol does not depend on the buyer's browser running a tag, so for the orders it sends it fixes the tag that never fired, and, when it uses the order ID as the transaction ID, the missing ID. It does not replace the Google tag. Google's Measurement Protocol page says: "The intent of the Measurement Protocol is to augment automatic collection through gtag, Tag Manager, and Google Analytics for Firebase, not to replace it." and "You must use tagging (gTag, Tag Manager, or Google Analytics for Firebase) to use this protocol."

Google says the event's client_id "should match the ID generated by the Google Analytics tag on your website," and that events received more than 48 hours after the tag's own event "may not be processed as expected, particularly for purposes like conversion attribution." So the visit, the traffic source, and the funnel steps before the purchase still come from the tag in the browser. A server-side purchase is one event, not GA4's ecommerce funnel. Server-side tracking covers the general trade-offs.

How HonestTag handles GA4

Each purchase also sends goal events saying whether the buyer was new or returning (ht_purchase_nc, ht_purchase_rc, and ht_purchase_fcnc as well when a new buyer's first ad click or ad-tagged link was Google's). Their value is net of tax but not of shipping, so do not add them to purchase revenue. Keep your Google tag for page views, sources, and the funnel. With the switch off, GA4 purchase revenue is still whatever your Google tag or app sends. With it on, expect GA4 purchase revenue to sit below Shopify's total sales by about the tax, duties, shipping and fees, and refunds can land on different days in the two reports. The GA4 connection guide has the steps, and if another tool also sends purchases to the same stream, read duplicate purchase events first.

Frequently asked questions

Should GA4 revenue match Shopify's total sales?

No. Shopify's total sales includes taxes, duties, shipping, and fees, and Google says a purchase value should not include shipping or tax. Compare GA4 purchase revenue with Shopify's net sales instead, on the same dates, time zone, and currency. Expect drift once there are reversals, because Shopify's net sales also subtracts cancellations, edits, and shipping, tax, fee, and discount adjustments.

Does GA4 subtract refunds?

Yes, if it receives them. Google defines purchase revenue as purchases minus refunds, and refund amounts come from refund events. A refund that is only recorded in Shopify is not subtracted in GA4.

Why does GA4 show fewer purchases than Shopify has orders?

A browser tag only counts a purchase when it runs. Shopify says Google can only count visitors with JavaScript and cookies activated, and that browser extensions can block it. Consent rules and orders created outside the online checkout also count differently in the two.

Can a server-side purchase replace my Google tag?

No. Google says the Measurement Protocol is meant to augment the Google tag, not replace it, and that a tag is required to use it. The tag still provides the sessions, sources, and funnel; a server-side purchase adds the order the browser missed.

Send GA4 purchases keyed to your orders

On the Starter plan and up, HonestTag sends GA4 its own purchase event with your Shopify order ID, so it does not add to the revenue GA4 already reports.

  • No risk to your setup. The Mirror plan sends no purchases or conversions to your ad platforms, so it cannot double-count a sale or change your current setup.
  • Claims against real orders. It shows what Google Ads, Meta, Microsoft Advertising and TikTok claim beside the new customers whose first recorded ad click or ad-tagged link was that platform, counted from your own orders.
  • Free at any store size. The Mirror plan stays free whatever your sales.

Install HonestTag free