UK Shopify skincare brand
A Shopify brand selling into the UK and EU had two checkout paths and no way to tell which one a given order came through. GA4 revenue ran consistently below the Shopify order table, and nobody could say by how much.
What was broken
The theme's default checkout fired the purchase event on the thank-you page. A second, app-driven checkout path never fired it at all, so an entire segment of orders was invisible in GA4.
Where the event did fire, a thank-you page refresh fired it again — the same order counted two, sometimes three times.
The consent banner was set to deny-by-default with no Consent Mode v2 configuration, so tags for non-consenting visitors were blocked outright rather than sending cookieless pings. That removed a further slice of purchases with no error anywhere to show for it.
What I changed
I stood up a server-side GTM container on a subdomain of the client's own domain, so events are first-party and survive ad blockers and ITP cookie capping.
Purchase events were keyed on the Shopify order ID as the event ID, which makes a repeat fire a duplicate the platforms can discard rather than a second sale.
Consent Mode v2 was implemented properly, so denied visitors still contribute modelled conversions instead of disappearing.
Every event was mirrored into BigQuery so the client can run the reconciliation themselves without asking me.
How it was verified
For 90 days after go-live, GA4 purchases were reconciled against the Shopify order export daily. Sign-off was not a screenshot of a dashboard — it was the two tables agreeing within a tolerance the client set.
Every figure above was reconciled against the client’s own order data before sign-off. I’ll run the same reconciliation on yours before either of us calls it fixed.
← ALL CASE FILES