Duplicate Conversions in Google Ads 2026: Find and Fix Overcounting
Plenty has been written about conversions that disappear. Almost nothing about the opposite failure — and the opposite failure is worse. When conversions drop, you notice and you go fix it. When conversions read higher than reality, you celebrate, raise budgets, and spend months paying for results that were never there. Duplicate conversions in Google Ads are not an exotic edge case; they are one of the most common reasons the platform’s numbers and your CRM disagree.
This guide covers eight mechanisms that turn one sale into two or three, a 30-minute diagnostic sequence, deduplication at the tag, action and pipeline levels, and exactly how overcounting corrupts Smart Bidding from the inside.
How to tell you are overcounting
The first symptom is a persistent gap between Google Ads and your system of record. A small gap is always normal — attribution, conversion windows, modelling, blockers. What is not normal is the platform systematically reporting more conversions than you have orders at all.
| Symptom | Most likely cause |
|---|---|
| Google Ads reports more conversions than total CRM orders | Genuine duplicate: one action counted repeatedly |
| “Conversions” column noticeably lower than “All conversions” | Normal: the second includes secondary actions |
| Conversion rate above 100% in some ad groups | Duplicate, or “Every” counting where “One” belongs |
| Fractional conversion values like 1.33 | Normal: attribution distributing credit |
| Conversion spike on the exact day of a site release | Tag double-firing after deployment |
| Conversion count matches thank-you pageview count | Reloads and back-navigation being counted |
A fast arithmetic check: pull 30 days of CRM orders tagged as Google Ads (by GCLID) and compare with platform conversions for the same period, adjusted for your conversion window. A 15–20% overage usually means attribution loss on the CRM side. A 60–100% overage is a duplicate, and the sources are below.
Eight mechanisms that double your conversions
1. The tag lives both in the page and in GTM
The classic. A developer hardcoded gtag into the thank-you page template; months later a marketer added the same conversion tag in Google Tag Manager. Both fire on the same event, and your conversion count is exactly doubled.
How to check: load the thank-you page with Tag Assistant open and count how many conversion requests go out with the same send_to. Anything above one is a duplicate.
2. Client-side and server-side firing at the same time
The most common migration mistake: server-side conversion sending is enabled, but the client-side tag is never disabled. Both reach Google, both count. It is especially insidious when a contractor set up the server container while the old client tag stayed in a legacy GTM container everyone forgot about. The correct migration sequence is in the guide to server-side tagging with sGTM.
3. “Every” instead of “One” on lead forms
Each conversion action has a Count setting: Every or One. For e-commerce purchases, Every is correct — five orders should be five conversions. For form fills, calls and sign-ups, Every is almost always wrong: a user who submits the form three times because no confirmation appeared gives you three leads in the report and one in the CRM.
Rule of thumb: use Every only for actions that genuinely repeat with value — purchases, subscription renewals. Everything else gets One.
4. Thank-you page reloads
If the conversion is tied to a URL pageview, every refresh, every back-button press, and every visit from browser history counts again. A user who emails a colleague a link to the confirmation page is quietly adding conversions for you.
Fix: move the conversion from pageview to a form-submit event with identifier-based deduplication, or add a single-use parameter to the thank-you URL that cannot be reproduced.
5. Overlapping offline conversion imports
Automation exports deals from the CRM on a schedule. If the export window overlaps — for instance, uploading “the last 3 days” every day — the same deal ships three times. Google deduplicates on the combination of click ID and conversion time, so if the timestamp shifts even slightly between runs, each upload is accepted as a distinct conversion.
Fix: stamp the conversion time once in the CRM and never recompute it on re-export; maintain an “already uploaded” flag on your side. The full mechanics are in offline conversion import.
6. One deal counted both online and offline
The least obvious case. A user submits a form and a web conversion “Lead” fires. A week later the deal closes and you import an offline conversion “Sale”. Those are two legitimately different actions — that part is correct. But if both are marked primary and both roll into the Conversions column, Smart Bidding believes one click produced two results. The fix is to keep only the action you optimise toward as primary and demote the other to secondary. The full logic is in primary and secondary conversions.
7. Duplicate conversion actions accumulated over time
Over the years an account collects “Lead”, “Lead (new)”, “Form_2024”, “Lead — GA4 import”. Frequently the same event is imported both by the Google Ads tag directly and through the GA4 link. In the Conversions column they simply add up.
How to check: open the conversion action summary, sort by volume over 30 days, and look for two actions with suspiciously identical trend lines. Matching curves are almost always one event wearing two hats.
8. Cross-account conversion actions in an MCC
If a conversion action exists both at manager-account level and inside the child account, the same conversion can land in reporting twice. The rule is simple: conversion actions live either at MCC level or at account level, never both. The hierarchy is covered in the Google Ads manager account guide.
A 30-minute diagnostic sequence
- 5 min — conversion action summary. List every action, sort by volume. Flag the ones you do not recognise and the ones with identical trends.
- 5 min — check the Count setting. Every lead action should be set to One. If it is set to Every, that is your first candidate.
- 5 min — check the source. For each action, note where it comes from: website tag, GA4 import, file import, Analytics link. Two sources for one event is a duplicate.
- 5 min — Tag Assistant. Walk the conversion path on the live site and count outbound conversion requests. There should be exactly one per action.
- 5 min — CRM comparison. Thirty days, broken out by day. Look for days with anomalous overage rather than the average gap — they point to the date something broke.
- 5 min — change history. If the anomaly starts on a specific day, open Google Ads change history and line it up against site deployments and account edits.
Deduplication: three layers of defence
Layer 1 — at the tag
Pass a unique transaction identifier with every conversion. For purchases that is transaction_id in the purchase event; for leads, a server-generated submission ID. Google uses it to discard repeats: a conversion carrying an already-seen transaction ID does not count twice.
This is the cheapest and most reliable layer. Implement only this and you close most reload and double-fire scenarios.
Layer 2 — at the conversion action
- Count setting: One for leads, Every only for genuinely repeatable purchases.
- Primary / secondary: the Conversions column should contain exactly what you optimise toward and nothing else.
- Conversion window: an excessively long window on a lead action raises the chance that one click accumulates several separate events.
- Value: under value-based bidding a duplicate doubles not just count but revenue, and reported ROAS becomes fiction.
Layer 3 — in the data pipeline
When conversions arrive from a CRM or a server container, deduplication has to live in the pipeline itself: a “sent” flag on the deal, a frozen conversion timestamp, an idempotent request key. Nothing on Google’s side rescues you from an export that re-sends last week every morning. If you already run a BigQuery export, a duplicate check is one query grouped by deal ID.
Telling a real duplicate from a normal discrepancy
Not every overage is overcounting. Rule out four legitimate causes before you start pulling tags apart.
- Conversion window. A conversion is credited to the date of the click, not the date of purchase. With a 30-day window and a week-long sales cycle, yesterday’s report keeps filling in for another month. Compare periods with a lag or you will manufacture a false gap. Mechanics in conversion windows and conversion lag.
- Modelling. Google statistically models a share of conversions — for consentless users and cross-device journeys. Those conversions are real, but they will never appear in your CRM with a GCLID, because the identifier never made it there.
- Lost click identifier. Redirects, caching CDNs and iframed forms routinely strip
gclid. The deal exists in the CRM but is attributed to “direct”, so a source-based comparison undercounts exactly the orders Google Ads did produce. - Time zone mismatch. Your Google Ads account and your CRM may run in different zones. On a daily breakdown that produces a systematic shift that reads like an anomaly at day boundaries.
Practical rule: measure the gap over 60–90 days at month granularity first. If Google still reports 1.5× more after correcting for these four, you have a duplicate, and the diagnostic above applies.
What duplicate conversions in Google Ads actually cost you
It is tempting to treat duplicates as cosmetic — “the number is inflated, I mentally halve it”. That is a mistake, because the damage runs deeper than reporting.
- Smart Bidding trains on false data. The algorithm sees that a particular query, hour or device “produces” twice as many conversions and shifts budget there. Duplicates are almost never evenly distributed — often only desktop orders double — so the bias is systematic, not random.
- tCPA stops meaning anything. A $30 target CPA under 2× overcounting is a real CPA of $60. You are literally setting a goal twice as expensive as you believe.
- Scaling decisions invert. A genuinely unprofitable campaign looks strong and gets more budget; a clean campaign next to it looks weak and gets cut.
- Value-based bidding breaks entirely. Doubled revenue against unchanged cost pushes tROAS to expand aggressively into unprofitable inventory.
- Audiences and models get contaminated. “Purchaser” lists fill with people added on a phantom event, and predictive models train on that noise — see GA4 predictive audiences for why input quality decides model quality.
Missing conversions cost you nerves. Duplicates cost you money. The first gets fixed the same day because you can see the drop; the second can run quietly for months, because it looks like growth.
A worked example
A B2B service business running lead generation on $12,000 a month. The platform reports 640 conversions and an $18.75 CPA. The CRM shows 310 Google Ads leads for the same period, and sales confirm nothing is being lost.
What was found: the “Lead” conversion arrived from two sources — a web tag in GTM and a GA4 event import — both marked primary. On top of that, the web tag was set to Count: Every, and a share of users submitted the form twice.
What was changed: the GA4 import was demoted to secondary (kept for analysis), the web tag was switched to One, and the form began passing a transaction_id carrying a unique submission ID.
Result after three weeks: reported conversions settled at 318 per month and the true CPA was $37.70. Campaigns that had looked best turned out to be average; two ad groups running at a loss were switched off. Total spend did not increase, and real lead volume rose 11% the following month purely because Smart Bidding stopped optimising toward phantom conversions.
That is the typical arc: cleaning duplicates does not generate new leads by itself, but it restores an accurate picture of the world to the algorithm, and the algorithm then does its job.
Prevention: what to check on a schedule
- After every site release — walk the conversion path with Tag Assistant. Five minutes that catch 80% of duplicates.
- Quarterly — audit the conversion action list: remove unused actions, consolidate duplicates, verify primary/secondary status.
- Monthly — reconcile against the CRM daily, not as a month total. Totals hide anomalies.
- When changing agencies — inventory every GTM container and hardcoded tag on the site. A forgotten container from a previous agency is duplicate source number one.
- When setting up any import — test with ten deals and confirm that re-running the job creates no additional conversions.
A broader list of what to inspect beyond conversions is in the Google Ads account audit checklist. For the opposite problem — conversions not arriving at all — follow the 30-minute conversion tracking diagnosis. And to read the market context around your numbers once they are clean, use the Google Ads Insights page and demand forecasts.
When the data is too thin to conclude anything
At low volume, telling a duplicate from statistical noise is hard: 12 platform conversions against 8 CRM records could be either. In that case, fix signal collection first — unique identifiers, sane windows, a clean primary/secondary split — and draw conclusions over a 90-day horizon. How to build reliable first-party signal is covered in enhanced conversions.
If the account is separately constrained by serving limits or an unfinished business verification, no amount of tracking hygiene compensates for it — that is what agency Google Ads accounts from PPC Rebels exist to solve.
FAQ: duplicate conversions in Google Ads
What is the fastest way to confirm conversions are duplicated?
Compare 30 days of Google Ads conversions against CRM orders or leads tagged as Google Ads. A 15–20% gap is explained by attribution. A 1.5–2× overage is almost always a duplicate.
The “Conversions” and “All conversions” columns differ — is that a duplicate?
No, that is expected. “Conversions” includes only actions marked primary; “All conversions” includes every action, primary and secondary. A difference between them is by design.
Should I use “Every” or “One”?
Every belongs to actions a user can genuinely repeat with value: purchases, payments, renewals. One belongs to leads, calls, sign-ups and downloads. A mistaken Every on a lead form is among the most common causes of overcounting.
How does transaction_id deduplication work?
When you pass a unique transaction identifier with the conversion, Google matches it against identifiers already received and discards repeats. The ID must be genuinely unique and stable for a given deal — an order number works, a timestamp does not.
Can offline conversions duplicate on re-upload?
Yes, if the conversion time differs between uploads. Google deduplicates on click ID plus conversion time, so the timestamp must be stamped once and never recomputed.
Is a conversion counted twice if the user clicked two of my ads?
No. A single conversion event is distributed across clicks by the attribution model and can appear as fractional credit, but it still totals one conversion. Fractional values indicate distributed attribution, not duplication.
Does the GA4 import cause duplicates?
It is one of the most frequent causes. If the same event arrives both through the Google Ads tag and through the GA4 link, and both actions are primary, they add up. Keep exactly one source as primary.
How do duplicates affect Smart Bidding?
The algorithm optimises toward an inflated signal, bidding up where duplicates concentrate and down where they do not. Your target CPA no longer maps to reality, and under value-based strategies ROAS is distorted as well.
Should I delete old conversion actions?
Usually not — deleting historical actions costs you comparability. Demoting them to secondary and stopping collection is enough, and it preserves the history in reporting.
Will Google recalculate historical conversions after I fix the setup?
No. Configuration changes affect only data received after the change. The historical period stays inflated, so annotate the fix date — otherwise a period comparison will show a “drop” that never happened.
Can a thank-you page reload create a duplicate?
Yes, if the conversion is tied to a pageview and not protected by a unique identifier. Every refresh, back-navigation or bookmarked visit counts again. The fix is an event-based conversion plus identifier deduplication.
How do I count how many times a tag fires?
Walk the conversion path on the live site with Tag Assistant or the browser network console open and count outbound conversion requests carrying the same conversion ID. There should be exactly as many as there were real conversion actions — normally one.