Shopify Google Ads Conversion Tracking: A 30-Minute Audit

Illustration: a shopping bag beside three unequal bars, with a magnifying glass over the tallest bar.

Shopify Google Ads conversion tracking breaks in a way you can’t see from the dashboard. Campaigns spend. Purchases show up, ROAS looks fine, and meanwhile Smart Bidding keeps learning from numbers that are wrong by a factor you don’t know. This is the audit I run on every new Shopify account before I touch a bid or a budget, and it takes about 30 minutes.

You’ll need admin access to Shopify, Google Ads and (if you have it) GA4 and Google Tag Manager.

Why I audit tracking before anything else

Smart Bidding only knows what you tell it. If one order gets reported twice, Google thinks your cost per purchase is half what it really is, and it bids up on traffic that doesn’t convert. If every order arrives with a value of zero, a target ROAS strategy is flying blind.

None of this throws an error. That’s why I check it first, on every account, even when the client swears tracking “was set up properly”.

Below are the checks in the order I run them, with the EU consent layer at the end.

Step 1: count the sources that report a purchase

Open Google Ads, go to Goals, then Conversions, then Summary, and list every action in the Purchase category. Then list everything on the Shopify side that could send a purchase to Google:

  • Google & YouTube app (Shopify’s own integration)
  • GTM container loaded through the theme or a custom pixel
  • Old manual gtag snippet pasted into theme.liquid or the legacy “additional scripts” box
  • GA4 import: a GA4 purchase event imported into Google Ads as its own conversion action
  • Third-party tracking apps that fire their own Google Ads tag

More than one active source for the same purchase is the most common double count I find. Google’s own Shopify instructions say to “remove legacy tags to prevent duplicate measurement” and to check for duplicates across the app, the storefront and custom pixels (Google Merchant Center Help, as of 2026-10-23). Pick one source of truth and switch the others off, or demote them to reporting only.

Which source? Most tutorials recommend the Google & YouTube app, and for a small store that wants zero maintenance it’s a defensible choice. I usually go another way. I keep the app for what it’s good at, syncing products to Merchant Center, and send conversions from a Shopify custom pixel (Settings, then Customer events) that I control. The app gives you very little to debug when attribution looks off, and a custom pixel lets one piece of code feed Google Ads, GA4 and Meta with the same order ID and value. If you go that route, turn the app’s own conversion tracking off, or you’ve just built the double count from the list above.

Step 2: one primary purchase action, nothing else primary

Google bids only on conversion actions that meet two conditions: the action is set to Primary, and the campaign uses the goal that contains it. Secondary actions still show in the “All conversions” column, but bidding ignores them (About conversion goals, as of 2026-10-23).

So the rule I apply on e-commerce accounts:

  1. Purchase stays Primary. One action, from the source you chose in step 1.
  2. Add to cart, begin checkout, page views go to Secondary. They’re useful for diagnosing the funnel. They’re poison as bidding targets, because they’re cheaper and more frequent than sales.
  3. GA4-imported purchase goes to Secondary if the Ads tag or the app already reports the purchase.

One shortcut to avoid: changing the purchase action’s count setting to “One” to hide duplicates. It also hides real repeat purchases from the same click. Fix the source instead.

Step 3: check the value and the transaction ID on a real order

A purchase action that fires is not the same as a purchase action that’s correct. Two fields matter most:

  • Value. Each order needs to carry its own revenue in the store currency. A fixed value (often 1) or zero means tROAS can’t tell a €30 order from a €300 one. Know what the number means, too. If the app sends your conversions, note that since April 24, 2025 it reports purchase value as subtotal minus discounts, without shipping or tax (Shopify event parameters, as of 2026-10-23). So it won’t match the order total in Shopify, and that’s fine. With a custom pixel you decide what goes into the value, so write it down and keep it consistent across platforms.
  • Transaction ID. Google uses it to throw away duplicates when a buyer reloads the thank-you page or opens it again from an email (Use a transaction ID, as of 2026-10-23). The same page warns that reusing one ID across orders causes undercounting, so it has to be the real order ID. If you see IDs that start with GG_ in the conversion details, Google generated them because your tag didn’t send one.

Run a test order through Google Tag Assistant and open the purchase event. Stacking a 100%-off code with a free-shipping code keeps it free, but then the value reads zero, which is expected for that test. So I also look at the last few real orders in the Google Ads conversion details and make sure their values aren’t zero.

Step 4: reconcile three numbers, not two

This is the step most audits skip. Take the last 30 days and pull:

SourceWhat it counts
Shopify ordersEvery order, from every channel
Google Ads purchasesOrders Google credits to an ad interaction, inside its attribution window
GA4 purchasesOrders GA4 saw, attributed by its own model

They will never match exactly. Google Ads uses its own attribution model and conversion windows, and it reports on the date of the ad click. GA4 depends on consent and on what the browser lets through. What I look for is the shape of the gap.

If Google Ads shows close to 2x what Shopify shows for paid traffic, something is double counting. If Google Ads is far below GA4’s paid-search number, the Ads tag is probably being blocked or not firing on some checkouts. And if GA4 is far below Shopify, consent and blocking are eating your data. That’s the next step.

There’s more on why platforms disagree in GA4 vs Google Ads data discrepancies and why some conversions go missing.

If you sell into the EU, two more things decide how much of your data Google ever sees.

Consent mode passes the visitor’s cookie choice to Google tags and changes how they behave. With ad storage denied, Google Ads doesn’t use its cookies for that visitor (About consent mode, as of 2026-10-23). Check that your banner sets the consent defaults before any Google tag fires. On Shopify that order is easy to get wrong when the app, a GTM container and a consent app all load separately.

Enhanced conversions send a SHA-256 hash of first-party data such as the customer’s email along with the conversion, which helps Google match purchases it would otherwise lose (About enhanced conversions, as of 2026-10-23). In the Google & YouTube app you turn it on under Settings and accept the customer data terms. In a custom pixel you pass the checkout email (and phone or address if you have them) as user data on the purchase event, and turn enhanced conversions on for the action in Google Ads.

Do you need server-side tagging?

Not on day one, and not for every store. My rule of thumb is order volume and how much budget rides on the numbers. A store doing a few dozen orders a month is better served by a clean custom pixel than by a server container it has to maintain. Past that point, browser-only tracking starts to cost real money. Shopify’s checkout runs pixels in a sandbox, accelerated checkouts like Shop Pay can skip events, and ad blockers stop some tags outright.

When it’s worth it, the setup I use treats the browser as best effort and the server as the backstop. Browser events go to a server-side Google Tag Manager container on your own subdomain. Shopify’s order webhook sends every paid order to the same container, and the container deduplicates the two by transaction ID before anything reaches Google Ads, GA4 or Meta. Skip the deduplication and you’ve rebuilt the double count from step 1, just on a server.

Two warnings. A server container is a piece of infrastructure, with hosting, DNS and someone who has to watch it. And a badly configured one makes attribution worse, not better. If nobody on your side can maintain it, a managed Shopify tracking app that does server-side delivery is often the saner middle ground.

Conclusion

Tracking problems don’t announce themselves. They show up as accounts that “won’t scale”. One source per purchase, one Primary action, real values and IDs, and a reconciliation where every gap has a reason: get those right before you touch structure, feeds or bids. If you’d rather hand it off, this audit is the first step of every analytics implementation and Google Ads for e-commerce project I take on. Schedule a call and I’ll start there.

With Texonica, you get less hype more results.

We are determined to make your business successful. Reserve your free-no-obligation strategy session today.

Schedule a Call