Guide

Why analytics and Shopify numbers differ

GA4 and Shopify count different things. How to tell a definition gap from a tag that loaded and never fired, without guessing from a percentage.

Last reviewed September 2026.

They are almost never counting the same thing

Shopify counts orders it recorded. GA4 counts purchase events that reached Google, after consent, after ad blockers, after a thank-you page that may not have loaded. A gap is the default. A silent tag is a different gap.

Start with the definitions

Before you open the theme, write down the two numbers with their denominators and their window. “Revenue this week” in Shopify includes every paid order. GA4 purchase revenue includes only events that arrived with a value, in the reporting identity you selected, in the timezone you selected. Those can diverge by a third on a healthy store.

Refunds, test orders, draft orders marked paid, and shop-app checkouts that never hit the storefront thank-you page all move Shopify without moving GA4.

Then look for a tag that loaded and never fired

If the library returns 200 on product pages and /g/collect never leaves, you do not have a definition gap. You have a silent tag. Totals in GA4 can still look plausible because home and collection still send page views.

GA4 purchase not firing on Shopifyis the usual path. Two observations per vendor is the test.

What not to do

Do not “correct” the gap with a percentage. Tagnovo will not tell you the number fell 18%. It will tell you purchase collect was absent on the page type we could load, on a dated reading, or that we could not observe the page.

Hosted checkout is unobservable from the outside. A scanner that calls that “broken” is guessing. The limits are part of the method.

Confirm it with a scan

Four page types, a real browser, no account. A scan will not fix the tag. It will tell you whether it is firing now.

Scan a store

All guides · How the scanner works · Watch the store