Analistable

How much of our revenue does GA4 actually record?

By the Analistable team · Updated · 3 min read

Export daily revenue from your shop (Shopify or similar) and daily purchase revenue from GA4, join them on date, and divide: GA4 ÷ shop is your tracking coverage. A steady gap (often 80–95% because of consent and ad blockers) is normal; a sudden drop on one day means tracking broke. In the example, coverage is 88–90% except 3 September at 57%.

Part of our guide: How to answer questions across multiple spreadsheets

The data and the join

SELECT s.day, s.revenue AS shop, g.revenue AS ga4,
       ROUND(100.0 * g.revenue / s.revenue, 0) AS coverage_pct
FROM shop s
JOIN ga4 g ON g.day = s.day;
Result
dayshopga4coverage_pct
2026-09-011840162088
2026-09-022210199090
2026-09-031930110557
2026-09-042560229089

Over the four days: 7,005 ÷ 8,540 = 82%. Without 3 September, coverage is a steady 88–90%.

In a spreadsheet

GA4 revenue =XLOOKUP([@Date], GA4[Date], GA4[Purchase revenue], 0)
Coverage    =[@[GA4 revenue]] / [@[Shop revenue]]
Alert       =IF([@Coverage] < AVERAGE([Coverage]) - 0.15, "Check tracking", "")

Make the comparison fair

  • Time zones: the shop and the GA4 property must use the same time zone, or late-evening orders land on different days.
  • Tax and shipping: compare like with like — GA4 purchase revenue may include or exclude tax and shipping depending on your tag.
  • Refunds and test orders: exclude them from the shop side if GA4 doesn't record them.
  • Channels: orders taken outside the website (POS, marketplaces) never reach GA4; filter the shop export to online orders.

Ask it in Analistable: “Compare daily revenue in our shop export with GA4 purchase revenue and flag days below 80% coverage.” More on GA4 data: combining GA4 and Search Console.

Check by channel and device

If coverage is steady overall but low for one group, the cause is usually specific: a payment provider that returns customers to a different domain, a checkout app, or a browser that blocks the tag. Export GA4 revenue by device category or source and compare it with the shop's equivalent split to find it.

Estimate what the broken day lost

Coverage excluding 3 September
MeasureCalculationValue
Shop revenue, other three days1,840 + 2,210 + 2,5606,610
GA4 revenue, other three days1,620 + 1,990 + 2,2905,900
Normal coverage5,900 ÷ 6,61089.3%
Expected GA4 on 3 September1,930 × 89.3%≈ 1,723
Untracked on 3 September1,723 − 1,105≈ 618

About 618 of revenue went unrecorded beyond the usual gap. Note it next to any GA4 report covering that week so channel performance for the day isn't misread, and look for the cause in what changed on 2–3 September: a theme or checkout update, a consent banner change or a tag edit.

Getting the two daily series

  • GA4: in Explore, a free-form exploration with the Date dimension and the purchase revenue metric, exported to a spreadsheet, gives one row per day. Use the same date range as the shop export.
  • Shop: export orders with order date and total, then sum per day with a pivot or SUMIFS(Orders[Total], Orders[Date], [@Date]). Exclude cancelled and test orders.
  • Order counts too: compare GA4 purchases with the number of shop orders per day. If counts match but revenue doesn't, the issue is in the revenue value (tax, shipping, currency); if counts differ, purchases aren't being tracked.

Troubleshooting

Common causes of odd coverage
SymptomLikely causeFix
Coverage above 100%Duplicate purchase events (confirmation page reloaded)Deduplicate by transaction ID in the tag
Low every day by the same %Tax or shipping excluded on one sideCompare on the same revenue definition
Days shifted by oneDifferent time zonesAlign the property and shop time zones
Sudden drop to near 0Tag removed or consent default changedCheck recent site releases

Frequently asked questions

Why is GA4 revenue lower than Shopify revenue?
Consent choices, ad blockers, purchases outside the website, and tags that fire before the order confirms all reduce what GA4 records.
What tracking coverage is normal?
It varies by audience and consent setup; what matters is a stable ratio. A sudden drop on one day points to a tracking problem.
How do I find days where tracking broke?
Join daily shop and GA4 revenue on date and flag days where the ratio falls well below its average.
Can GA4 revenue be higher than the shop?
Yes, if purchase events fire twice, for example when the confirmation page is reloaded. Check for duplicate transaction IDs.
How do I estimate revenue lost on a broken day?
Multiply the shop's revenue that day by your normal coverage ratio and subtract what GA4 recorded.

Related guides