Cherry Seed

Why do my GA4 conversions not match my actual sales?

ga4 conversions sales discrepancy data loss server-side tracking

Quick Answer

Because client-side GA4 only ever sees part of your traffic. Ad blockers, Safari's tracking prevention, rejected consent, and ordinary JavaScript failures all stop events before they reach Google, so a typical client-side setup captures only about 70 to 85% of real sales. The fix is to measure the gap, not chase perfection: compare GA4 against your WooCommerce or Shopify backend to find your capture rate. Moving collection server-side via the Measurement Protocol lifts capture toward 85 to 95%, because the events come from your server rather than the blocked browser.

Full Answer

A mismatch between GA4 and your backend is normal, not a bug, because the two count different things. Your store records every completed order. GA4 records only the orders whose tracking event survived the trip from the browser to Google, and a lot does not survive. Ad blockers remove the GA4 script for a sizeable share of visitors, Safari's Intelligent Tracking Prevention truncates measurement, consent rejections in privacy regions suppress events, and routine script or network failures lose more. Stacked together, these explain why client-side capture commonly lands around 70 to 85% of true sales.

The right first move is measurement, not panic. Pull total orders from WooCommerce or Shopify for a period and divide GA4's recorded purchases by that number to get your capture rate. Around 70 to 85% is normal for client-side; below 70% signals a real problem worth investigating, such as a missing transaction_id or events not firing on the confirmation page.

To close the gap rather than just measure it, send purchases server-side through the Measurement Protocol. Because the event originates on your server, it bypasses browser blocking entirely and typically pushes capture into the 85 to 95% range. Perfect parity is impossible, but a measured, server-supported setup turns an alarming discrepancy into a known, stable number you can plan around.

Sources

Programmatic Access

GET https://seresa.io/wp-json/cherry-tree-by-seresa/v1/seeds/505

Cite This Answer

Cherry Tree by Seresa - https://seresa.io/seed/platform-integrations/fix-ga4-tracking-conversions-dont-match