Google Ads and GA4 tracking for Shopify
On Shopify the Google side has two distinct problems. GA4's ecommerce events have to survive the Customer Events sandbox, which can't read your page or reach a global container. And Enhanced Conversions can't read customer data from a checkout DOM you don't control — it has to come from the order record, which is another argument for sourcing purchase server-side rather than from the confirmation page.
Free30 minutesNo obligation
Shopify + Google · what breaks
What goes wrong on Shopify
- 01
Purchase tracking stopped on a specific date
The checkout extensibility cutover. Anything in checkout.liquid or additional scripts died silently, and the checkout kept working perfectly.
- 02
Wallet payments never reach the thank-you page
Shop Pay and PayPal can be abandoned after payment completes. The order exists in Shopify and no platform hears about it.
- 03
Several apps all sending purchase
The Meta channel app, a pixel app and a container is three conversions for one order.
- 04
Refunds never reversed
Reported revenue only climbs, diverging from your books by your entire return rate.
Shopify + Google · the fix
What changes — Shopify + Google
Purchase from the order record
Immune to what the customer's browser did after paying.
One conversion per order
Deduplicated on the Shopify order ID at every destination.
Refunds reversed
From the refund webhook, so the number can fall as well as rise.
Shopify + Google · architecture
How the Google destinations behave on Shopify
GA4 and Google Ads on Shopify hinge on two things: whether purchase carries a real transaction_id, and whether Enhanced Conversions has any customer data to work with.
- 1
transaction_id must be the Shopify order ID
Not a generated value. It's what deduplicates a refreshed confirmation page.
- 2
Currency per order, not site-wide
Shopify records presentment currency correctly; whether your tags pass it on is the failing part on multi-currency stores.
- 3
Enhanced Conversions from the order record
The checkout DOM isn't reachable, so selector-based Enhanced Conversions cannot work on Shopify checkout at all.
- 4
Click IDs captured on landing
gclid, gbraid and wbraid, persisted through to the order via cart attributes or a first-party cookie.
- 5
Conversion action counting
Every, for ecommerce — a second purchase is a second sale.
Shopify + Google · diagnose
Where Shopify tracking breaks, in diagnostic order
Each check rules out a class of cause, so by the last one there is usually a single explanation standing.
- 01
Find the date purchases dropped
If it matches your checkout extensibility cutover, that's the whole diagnosis.
- 02
Check additional scripts and checkout.liquid
They often still contain tags, doing nothing.
- 03
List every app that could be sending
Then check the ones nobody mentioned.
- 04
Test a wallet payment specifically
Shop Pay or PayPal, abandoning the confirmation page after paying.
- 05
Match a closed week on order ID
Shopify web orders against each platform's purchase count.
Shopify + Google · prove
The QA evidence — Shopify + Google
Run on Shopify specifically, on a live conversion rather than in preview mode.
Source of truth
your Shopify order records, web orders only
- A live order placed and the payload read field by field, not previewed.
- Shopify order ID present as transaction_id and event_id at every destination.
- A wallet payment tested with the confirmation page abandoned after payment.
- Purchase count within a few percent of Shopify web orders for a closed week.
- A real refund issued and confirmed reversing.
- Reconciled over a fully closed window, matched per record rather than on totals.
- Re-checked 30 days later, and after any platform update.
Shopify + Google · free audit
What we check in the free audit
- Find the date purchases dropped
- Check additional scripts and checkout.liquid
- List every app that could be sending
- Test a wallet payment specifically
- Match a closed week on order ID
Checked against
your Shopify order records, web orders only
Free30 minutesNo obligation
Shopify + Google · when not to buy
When you don't need this on Shopify
Worth reading before you buy anything, from us or anyone.
- If your purchase count already matches your Shopify web orders within a few percent and refunds reverse, nothing here needs doing. Reconcile a closed week and find out — it takes an hour and it's free.
- If you're a small store on a standard checkout with no wallet payments and one destination, Shopify's native channel integrations are free and genuinely sufficient. We'd rather you used those.
- Server-side matters most when wallet payments are a real share of your orders, when your consideration window is longer than a week, or when you need refunds reversed. If none of those apply, the browser-side path may be fine.
- Whatever you do, don't add a second sending path without removing the first. On Shopify that is the single most common cause of doubled conversions, and it makes your data worse than doing nothing.
Shopify + Google · what we deliver
What gets built for Google on Shopify
GA4 ecommerce events in the recommended shape
Correct names, transaction_id present, currency per order, an items array that agrees with the value.
Click identifiers captured and persisted
gclid, gbraid and wbraid — not just the first, because iOS traffic arrives with the others.
Enhanced Conversions from the data layer
Not from CSS selectors, which break on every redesign silently.
Conversion action settings reviewed
Counting, primary status and attribution window — free to change and more consequential than most tag work.
Written guarantee
95%+ tracking accuracy
Measured against your Shopify order records, web orders only. Miss it and we keep working at no cost.
Pricing
Pick the package that fits your ad spend
Browser-side starter
$400One-time fee · lifetime ownership
Repairs and verifies the browser-side setup you already have, on a live conversion. Honest about its ceiling on this platform.
- Root cause fixed, not worked around
- Verified on a live conversion
- Reconciled against your own records
- Written handover
1st-party server-side
Recommended$800One-time fee · most popular
Money events sent from your own records through a first-party container on your subdomain, so the browser can no longer lose them.
- First-party server container on your own subdomain
- Money events from your records, not the browser
- Deduplicated on a shared event ID at every destination
- First-party cookies beyond Safari's 7-day cap
- 95%+ accuracy and 8+ Meta EMQ, guaranteed in writing
Full 1st-party stack
$1,800One-time fee · lifetime ownership
Every paid channel server-side plus the offline loop, with monitoring so the next break surfaces in days.
- Everything in 1st-party server-side
- Pinterest, Snapchat, Reddit and LinkedIn CAPI
- CRM and offline conversion loop
- Refunds and cancellations corrected wherever each platform allows it
- Monitoring on every destination
FAQ
Shopify + Google questions, answered
Not from CSS selectors — the checkout DOM isn't reachable. The customer data has to come from the order record, which means sourcing it server-side.
The Shopify order ID. A generated value looks fine and can't be reconciled against your store.
Currency is probably hard-coded rather than sent per order. Shopify records presentment currency correctly; the tag usually doesn't pass it on.
Every, for ecommerce. A second purchase from the same click is a second sale.
Free · 30 min
Get Google Ads and GA4 right on Shopify
Free30 minutesNo obligation
