Google Ads Is Counting Your Conversions Twice
Your dashboard says 60 conversions. Shopify says 30 orders. That's not a rounding error, that's your account reporting every sale twice, and Smart Bidding is spending your money based on it. Here's why it happens on Shopify stores and how to fix it without breaking anything.
Why This Costs You Real Money
Double counting isn't just an untidy report. Google Ads uses your conversion data to decide how much to bid. If you're on Smart Bidding, which is Google's automated bidding where you set a target and the algorithm works out the bids, then every inflated number feeds straight back into how your budget gets spent.
Tell the algorithm a sale is worth £50 and record it twice, and Google thinks it made £100. It will happily bid more for traffic that looks twice as profitable as it really is. Your reported ROAS (return on ad spend, revenue divided by cost) looks brilliant. Your bank account tells a different story.
The quick test: pick last month. Count your actual Shopify orders. Now look at the Conversions column in Google Ads for the same date range. If Google Ads shows meaningfully more purchases than Shopify shows orders, something is firing twice. Modelled conversions and later-cancelled orders can nudge the numbers a little, but a meaningful surplus almost always means something is firing twice.
I've seen accounts running for months, sometimes years, on doubled numbers. Everyone was delighted with performance right up until someone compared the two figures. I wrote up one of those investigations here: how I found growth that didn't exist.
The Classic Cause: Two Purchase Tags on One Order
On Shopify this is almost always the same story. The store installed the Google & YouTube channel app, Shopify's official integration, which quietly sets up its own Google Ads purchase conversion tracking. Then at some point someone, an agency, a developer, a previous freelancer, also added a Google Ads conversion tag manually, either through Google Tag Manager (GTM, a container that holds your tracking tags) or a gtag snippet pasted into the theme or a custom pixel.
Now every purchase fires two tags. Both report the sale to Google Ads. Nobody notices, because both tags are working exactly as designed. The problem isn't a broken tag, it's one tag too many.
Common variations of the same disease:
- Channel app conversion tracking plus a GTM purchase tag
- A gtag snippet in the theme plus another one in a Shopify custom pixel
- An old agency's conversion action still active alongside a new one
- Two conversion actions in the same account both listening for the same purchase event
If your tags live in a Shopify custom pixel, there's a further wrinkle: custom pixels run in a sandbox that changes how tags behave. I've written a separate guide on the custom pixel sandbox because it deserves its own page.
Transaction IDs: The Deduplication That Should Be Saving You
Google Ads actually has a built-in defence against this. If your conversion tag sends a transaction ID, the order number, essentially, then Google will refuse to count two conversions with the same ID for the same conversion action. Same order arrives twice, gets counted once. That's deduplication.
It fails for two boring reasons:
- The transaction ID isn't being sent at all. Plenty of hand-rolled tags simply don't include it. No ID means Google has no way of knowing two hits are the same order, so it counts both.
- The two tags send different IDs. One tag sends the order name ("#1234"), the other sends the numeric order ID ("5738291..."). To Google those are two different transactions. Deduplication only works when the IDs match exactly.
And here's the catch most people miss: deduplication only works within a single conversion action. If your two tags report to two different conversion actions, matching transaction IDs won't save you. Which brings us to the setting that causes most of the damage.
Primary and Secondary: The Setting Everyone Misses
Every conversion action in Google Ads is set as either Primary or Secondary. Primary actions are counted in the main Conversions column and used for bidding. Secondary actions are recorded for reporting but ignored by the Conversions column and by Smart Bidding.
So if you have two purchase conversion actions, say one from the Shopify channel app and one from your own tag, and both are set to Primary, every order counts twice in the column that matters, and twice in the data Smart Bidding learns from. This is the single most common cause of doubled numbers I see on Shopify accounts.
You can check in about a minute: Goals, then Conversions, then Summary in your Google Ads account. Look at every action of category "Purchase". If more than one says Primary, you've likely found your problem.
The GA4 Import Trap
There's a third way to double up that doesn't involve a duplicate tag at all. Google Ads can import conversions from GA4, Google Analytics. If you import the GA4 purchase event as a conversion and you have a native Google Ads purchase tag, and both are Primary, you're double counted again, this time by two different measurement systems counting the same sale.
The rule of thumb: use the native Google Ads tag for bidding and set the GA4 import to Secondary (or don't import purchases at all). The native tag reports faster and attributes more accurately for ads purposes. GA4 numbers will never match Google Ads exactly anyway, they measure differently, which is a whole topic of its own: why GA4 doesn't match Shopify.
A Quick Word on Enhanced Conversions
Enhanced Conversions is a Google Ads feature that sends hashed customer data, an email address scrambled into an unreadable string, alongside the conversion so Google can match sales to signed-in users that cookies alone would miss. It's worth having, and it recovers conversions you'd otherwise lose.
But I mention it here because people sometimes turn it on hoping it will "sort out" their conversion numbers. It won't. Enhanced Conversions improves matching, it does nothing about duplication. If anything it makes inflated numbers slightly worse, because it recovers extra conversions for both of your duplicate tags. Fix the duplication first.
How to Diagnose It
Before changing anything, get evidence. Three checks, in order:
- Compare totals over the same window. Shopify orders vs the Google Ads Conversions column for the same 30 days. Remember Google Ads reports conversions against the date of the click, not the date of the sale, so use a window that ended at least a week ago to let late conversions settle.
- Segment by conversion action. In Google Ads, add the segment "Conversions, then Conversion action" to your campaign view. If two purchase-shaped actions are both racking up numbers, there's your duplication in black and white.
- Watch the tags fire. Install Google's Tag Assistant extension, place a test order (or use a preview), and count how many Google Ads conversion tags fire on the thank you page. One is correct. Two is your answer.
How to Fix It Without Breaking Everything
The temptation is to rip out the extra tag immediately. Don't. If you delete the wrong one you go from double counting to counting nothing, which is worse, and Smart Bidding reacts badly to conversion data suddenly vanishing.
- Pick one source of truth. For most Shopify stores that's the Google & YouTube channel app tag, it's maintained by Shopify, survives theme changes, and handles the checkout properly. If you've got a well-built GTM setup with correct transaction IDs, that's a fine choice too. One or the other, not both.
- Demote, don't delete. Set the losing conversion action to Secondary rather than removing it. It stops counting in the Conversions column and stops feeding Smart Bidding, but keeps recording, so you can compare the two actions side by side and confirm the survivor is catching everything.
- Verify over two weeks. After the change, watch daily: Google Ads purchase conversions should now land at or just below your Shopify order count for ad-driven sales, never above. Once you've had a fortnight of sane numbers, you can remove the redundant tag properly.
- Expect reported performance to "drop". Your conversion numbers will roughly halve, because they were doubled. Nothing real has changed. Warn whoever looks at the reports before they panic. Smart Bidding will recalibrate over a couple of weeks, and any target ROAS or target CPA will need adjusting to reflect honest numbers.
Worth saying plainly: fixing this makes your reports look worse and your decisions better. Every pound of budget is currently being allocated on numbers that are wrong by a factor of two. That's the real cost, and it compounds every day it's left alone.
If you'd rather have someone go through the whole chain, tags, conversion actions, transaction IDs, imports, and hand you a written list of exactly what's double counting, that's what my tracking health check is for. And if you want the campaigns themselves looked after once the numbers are honest, I do Google Ads management too.
Questions People Ask
The ones that come up most on double counting. If yours isn't here, just ask.
Almost always because two purchase tags are firing on the same order, typically Shopify's Google & YouTube channel app plus a manually added GTM or gtag tag, and both conversion actions are set to Primary. Nothing else produces a meaningful surplus, so if Google is showing notably more than Shopify, something is almost certainly duplicated.
Either can work, the crime is running both. For most stores I'd keep the channel app tag: Shopify maintains it and it handles checkout changes for you. Keep a custom GTM setup only if it's properly built with matching transaction IDs and you have a reason to need the extra control.
Primary actions count in the main Conversions column and drive Smart Bidding. Secondary actions are recorded for reference but ignored by bidding and by that column. Two Primary purchase actions means every sale counts twice where it matters most. Only one purchase action should ever be Primary.
There's a short adjustment period, a week or two, while the algorithm recalibrates to honest data, and you'll need to revisit any ROAS or CPA targets that were set against inflated numbers. But leaving it alone means bidding on data that's wrong by roughly double, which is far more expensive than the adjustment.
No. Enhanced Conversions sends hashed customer data so Google can match more conversions to real users, it improves matching, it doesn't create duplicates. But it won't fix duplication either, and it can make inflated numbers look slightly worse by recovering extra conversions for both duplicate tags. Fix the duplication first, then keep Enhanced Conversions on.
Three checks: compare Google Ads conversions against Shopify orders for the same settled 30-day window; segment your campaigns by conversion action to see if two purchase actions are both counting; and run a test order with Tag Assistant open to count how many conversion tags fire on the thank you page. One is right, two is your problem.
Suspect Your Numbers Are Doubled?
Send me your Shopify order count and your Google Ads conversion count for last month. If they don't line up, I'll find out why, and give you a written fix list rather than a shrug. Start with a tracking health check, or just get in touch.
More Tracking Guides
Double counting rarely travels alone. If your Google Ads numbers are off, check whether GA4 matches Shopify and whether your Meta pixel is actually tracking too. If your tags run inside Shopify's checkout, read up on the custom pixel sandbox. Or skip the DIY and book a tracking health check, I'll go through the lot.