How to find and fix duplicate conversions in Google Ads
We build conversion tracking for a living, and we still found a duplicate conversion action sitting in our own Google Ads account. So when we say duplicate conversions are easy to miss, we’re speaking from recent embarrassment.
A duplicate conversion is one real action, such as a sale or an enquiry, recorded more than once in the figures Smart Bidding learns from. It usually comes from one of four places: two primary conversion actions measuring the same thing, a thank-you page that fires again on reload, a lead action counted “every” time, or two copies of the same tag.
We fixed ours, and none of the fixes below need anything exotic. The awkward part is noticing in the first place, because an inflated conversion count looks exactly like good news.
Why does double counting matter if the sales are real?
Smart Bidding treats every recorded conversion as evidence. Report two for every sale and it concludes that the traffic is worth more than it is, then bids accordingly. Your cost per conversion improves on paper in the meantime, which is why nobody goes looking.
A duplicate also rarely affects everything evenly. If only one checkout route or one landing page template double counts, the campaigns sending traffic there look better than their neighbours and budget drifts towards them for no good reason. That’s a harder problem to spot than a total that is simply too high, since every individual figure looks plausible.
GA4 import and the Google tag, both set to primary
This is the classic. Someone links GA4, imports a key event such as a purchase or a lead, and leaves it set to primary while the original Google Ads conversion tag carries on working. Google Ads now holds two conversion actions for one event, and both feed the Conversions column.
Transaction IDs won’t rescue you here, because Google Ads uses them to remove repeats within a single conversion action and these are two separate actions. The remedy needs no code. Pick one source as primary and move the other to secondary, where you can still see it and it stays out of bidding.
Why is my thank-you page counting conversions twice?
Confirmation pages get more traffic than people expect. Customers refresh them, press back and forward, reopen them from browser history or follow a link in a confirmation email to the same URL. If the tag fires whenever that page loads, each of those visits can be recorded.
For sales, pass the order number as the transaction ID and Google Ads will ignore repeats of that ID within the conversion action. Leads can work the same way with a reference created when the form is submitted. The ID has to come from your system and stay identical on reload, as a value generated by JavaScript on page load is a brand new ID every time and deduplicates nothing.
Should Google Ads conversions count “every” or “one”?
The count setting decides how many conversions are recorded per ad click. “Every” suits sales, because a customer who buys twice has paid you twice. “One” suits leads, because someone who sends three impatient enquiries is still one opportunity.
A lead form left on “every” will count all three. Changing the setting takes seconds and generally only affects what’s recorded from then on, so your older figures will stay as they are.
Can GTM and a hard-coded tag both fire?
Yes, and plenty do. Websites collect tags the way sheds collect paint tins. A gtag snippet gets pasted into the theme, GTM arrives a few years later, then a Shopify app or WordPress plugin adds its own Google tag without telling anybody.
If both copies report to the same conversion action with the same transaction ID, the repeat gets caught. If there’s no ID, or they report to different actions, you count twice. Keep one route and remove the other at source, including any plugin setting that would put it straight back after the next update.
How do you find duplicate conversions in your own account?
Work through these in order and write down what you find as you go.
- List every conversion action. Record the source (website, GA4 or import), whether it’s primary or secondary, and its count setting.
- Pair them by real-world event. Ignore the names, because “Purchase”, “GA4 purchase” and “Website sale” can all be measuring the same sale.
- Segment a campaign report by conversion action. Two actions that rise and fall together day by day are usually measuring one thing.
- Compare against your own records. Put Google Ads conversions for a recent period next to the orders or enquiries in your shop or CRM. Ad-attributed figures should normally sit below your total, so a higher number is a red flag.
- Run a real test conversion. Use GTM Preview or Tag Assistant, complete the action, and note every tag that fires on the confirmation page.
- Reload that page. Check whether the tag fires again and whether the transaction ID stays the same.
- Search the page source. Look for
AW-andgoogletagmanager.comto find tags living outside GTM, then trace them back to the plugin, app or theme file responsible.
Which conversion action should stay?
For website sales and leads, we’d normally keep the Google Ads tag as primary with a stable transaction ID, and leave a GA4 import as secondary for comparison. That keeps the conversion logic in one place, and it’s the tag we’d then set up for enhanced conversions in GTM. Don’t expect the two to agree exactly, as GA4 and Google Ads conversions rarely match for some perfectly harmless reasons.
One more pairing catches out B2B accounts. A form fill and a later closed deal are different events, but if both are primary and the deal came from that form, one customer is being credited twice at two different stages. Once real outcomes are flowing back, the deal usually becomes primary and the form fill moves to secondary, as we explain in our guide to offline conversion tracking for B2B.
What happens to your numbers after the fix?
Conversions will fall and cost per conversion will rise, which can feel as though you’ve broken something. The new figures are the accurate ones. Warn whoever reads the reports before the drop appears, and record the date of the change so nobody spends a morning hunting for a cause later on.
If you use Target CPA or Target ROAS, those targets were set against inflated figures and will probably need revisiting. Where a fault affected a clearly defined period, Google’s data exclusions for Smart Bidding may also help. Past conversions generally stay as recorded. Conversion adjustments can retract specific ones if you hold the identifiers, although most advertisers simply note the date and move on.
How do you stop duplicates coming back?
Duplicates return when someone installs a plugin, migrates a theme or links a new data source, so a clean-up only holds until the next change. Keep a short record of which action is primary for each event, and run a test conversion after any release that touches the checkout, the forms or the tag set-up.
The daily review we set up for our own account has since become our Tracking Monitoring service, which warns when conversions drop, a tag breaks or the website and the CRM stop matching.
If you’d like someone else to go through yours, the Tracking Audit covers duplicate counting along with GTM, enhanced conversions, Consent Mode v2 and gaps between GA4 and Google Ads. It’s from £395 as a fixed price and ends with a traffic-light report, and you’re free to stop there. You can compare it with our other prices first.