Here is a situation I see in almost every store I work with: the shop admin shows 100 orders for the week, Google Analytics 4 shows 70, Google Ads reports 60 conversions and Meta reports a different number again.
Some difference is normal. But large gaps mean your ad platforms are optimising on incomplete data, and you are making budget decisions in the dark. This guide explains why it happens and how to close the gap.
Expect some difference, but not too much
Analytics will never match your order database exactly. Reasons that are normal and unavoidable:
- Visitors who decline cookies (depending on your consent setup)
- Ad blockers and privacy-focused browsers
- Different attribution models between platforms
- Time zone and reporting date differences
What is not normal: missing purchases because of a broken implementation. That is what we fix first.
Common causes of missing GA4 purchases
1. The purchase event depends on the thank-you page
If the purchase event only fires when the thank-you page loads, you lose every order where the customer closes the tab after payment, or where an external payment provider (PayPal, iDEAL, Klarna, bank redirects) does not send them back.
2. Duplicate or missing transaction IDs
Without a unique transaction_id, reloads cause duplicates. With wrong IDs, you cannot reconcile GA4 with your shop.
3. Broken data layer after a theme or checkout change
A new checkout, theme update or one-step checkout plugin often breaks the data layer silently.
4. Consent Mode not set up correctly
In the EEA, Google requires Consent Mode v2 signals for its advertising features. If your cookie banner and tags are not wired correctly, tags may not fire at all, or fire without proper consent, which is a legal risk.
5. Cross-domain issues
If checkout or payment runs on a different domain, sessions break and conversions are attributed to “referral” from the payment provider. Add payment providers to the referral exclusion list (unwanted referrals) and set up cross-domain measurement where needed.
Step 1: Audit the current setup
- Compare orders in your shop with GA4 purchases per day for the last 30 days
- Break down the gap by payment method and device. A gap that only appears with one payment method points to a redirect problem
- Check the data layer on the order confirmation page with GTM Preview or the browser console
- Check consent behaviour: what fires before and after the visitor accepts?
Step 2: Fix the client-side basics
- Push a complete
purchaseevent withtransaction_id,value,currency,tax,shippinganditems - Make sure the event fires only once per order
- Implement Consent Mode v2 correctly with your consent management platform
- Exclude payment provider domains as referrals
These fixes alone often close a large part of the gap.
Step 3: Add server-side tagging
With server-side Google Tag Manager, the browser sends data to your own tagging server (for example metrics.yourstore.com) instead of directly to Google, Meta and others. The server then forwards the data to each platform.
Benefits:
- More control over data: you decide what is sent to each vendor and can remove personal data
- Fewer scripts in the browser: better page speed and INP
- More durable measurement: first-party setup is less affected by some browser restrictions
- Server-to-server conversions: you can send purchases from your backend, so orders count even if the customer never returns to the thank-you page
Important: server-side tagging does not remove the need for consent. It is a technical improvement, not a way around privacy law. Respect the user’s choice in the server container too.
Step 4: Send purchases from the backend
The most reliable setup sends the purchase event when the order is actually created or paid, from your store’s backend:
- GA4 Measurement Protocol for analytics
- Google Ads offline or enhanced conversions for ads
- Meta Conversions API for Meta
Use the same event ID in browser and server events so platforms can deduplicate them.
Step 5: Monitor continuously
Tracking breaks quietly. Set up a simple daily check that compares shop orders with GA4 purchases and alerts you when the gap goes above an agreed threshold. This is easy to automate with a small workflow (see my n8n vs Zapier vs Make comparison).
Frequently asked questions
How big a gap is acceptable?
It depends on your audience and consent rates. More important than one number is that the gap is stable and explainable. Sudden changes always mean something broke.
Is server-side tracking expensive?
You pay for hosting the tagging server, which for most stores is modest compared with ad spend. The bigger cost is setting it up correctly.
Does server-side tracking help Google Ads performance?
Better conversion data generally helps automated bidding make better decisions, because the algorithm learns from more complete and accurate signals.
Want tracking you can trust?
I audit and rebuild e-commerce tracking: GA4, Google Ads, Meta, Consent Mode v2 and server-side tagging. See my technical SEO and measurement service and digital marketing service, or request a tracking audit.