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;| day | shop | ga4 | coverage_pct |
|---|---|---|---|
| 2026-09-01 | 1840 | 1620 | 88 |
| 2026-09-02 | 2210 | 1990 | 90 |
| 2026-09-03 | 1930 | 1105 | 57 |
| 2026-09-04 | 2560 | 2290 | 89 |
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
| Measure | Calculation | Value |
|---|---|---|
| Shop revenue, other three days | 1,840 + 2,210 + 2,560 | 6,610 |
| GA4 revenue, other three days | 1,620 + 1,990 + 2,290 | 5,900 |
| Normal coverage | 5,900 ÷ 6,610 | 89.3% |
| Expected GA4 on 3 September | 1,930 × 89.3% | ≈ 1,723 |
| Untracked on 3 September | 1,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
| Symptom | Likely cause | Fix |
|---|---|---|
| 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 side | Compare on the same revenue definition |
| Days shifted by one | Different time zones | Align the property and shop time zones |
| Sudden drop to near 0 | Tag removed or consent default changed | Check 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.