Here's a number that should make you uncomfortable: across the Google Ads accounts we've audited, 74% have at least one conversion tracking problem significant enough to meaningfully corrupt Smart Bidding decisions.
Most of these clients had no idea. Their dashboards showed conversions. Their account managers reported month-over-month improvement. But under the hood, the algorithm was learning on garbage data — and making every bid decision slightly (or massively) wrong because of it.
// why this matters
Smart Bidding — tCPA, tROAS, Maximize Conversions — optimizes based entirely on your conversion signal. If that signal is wrong, your bids are wrong. Your budget allocation is wrong. Your audience targeting is wrong. Everything downstream from bad tracking is corrupted.
This guide walks through the five most common conversion tracking problems, how to diagnose them, and exactly how to fix them — in order of how often we see them and how much damage they cause.
Duplicate conversion events
This is the most common problem by a wide margin. A conversion fires multiple times for the same user action. Google counts each fire as a separate conversion. Smart Bidding thinks you're getting 3× the conversions you actually are — so it sets bids 3× too high relative to your real economics.
How to spot it
Go to Tools > Conversions in Google Ads. For each conversion action, look at "Count" — if it's set to "Every" and you're tracking lead form submissions, you almost certainly have duplicates. Then check the conversion volume vs. your actual form submissions in your CRM. If Google Ads shows 3× more conversions than your backend, you have a duplicate problem.
Common causes
- Tag fires on both GTM and hardcoded in the page — especially common after a website migration where someone added a new tracking tag but forgot to remove the old one
- Multiple GTM containers on the same page — legacy container never got removed, new one added during a redesign
- Conversion action set to "Every" instead of "One" for lead gen
- Firing on page load instead of form submit — if your thank-you page is accessible directly, you get conversion fires from direct visits
The fix
For lead generation, your conversion action count should almost always be set to "One" — one conversion per click window. Change this in the conversion settings first.
Then audit your GTM implementation. Use the GTM Preview tool to verify that your conversion tag fires exactly once when a form is submitted — not on page load, not multiple times.
Trigger type: Form Submission
Fire on: All Forms (or specific form ID)
Condition: Page URL contains /thank-you
// NOT: Page View trigger on the thank-you page
// (accessible directly = duplicates)
Firing on page load, not form submit
Close cousin of the duplicate problem, but distinct. The conversion fires when the thank-you page loads — not when the form actually submits. This means:
- Direct visits to the thank-you page fire conversions
- Browser refreshes on the thank-you page fire additional conversions
- You get no conversion data for in-page AJAX forms (form submits without a page reload)
The fix
Use a Form Submission trigger in GTM that fires on the form's submit event, with a condition that validates the form actually succeeded. For AJAX forms, you'll need a custom trigger that listens for the JavaScript event your form fires on successful submission.
// pro tip
Ask your developer what event the form fires on success. Most modern form libraries dispatch a custom JavaScript event. Listening for that event is more reliable than listening for a page load and far more accurate for AJAX forms.
Cookie loss killing your conversion visibility
Safari's ITP and Firefox's cookie restrictions limit first-party cookies to 7 days. If someone clicks your ad, goes away, and converts 8 days later — Google never sees it. The conversion exists in your CRM but is invisible to Smart Bidding.
For B2B or any business with a longer sales cycle, this can mean 20–40% of your real conversions are invisible to the algorithm.
The fix: Enhanced Conversions for Leads
Enhanced Conversions for Leads lets you send hashed first-party data (email address) directly to Google when a conversion happens. Google can then match that against their signed-in user data to recover conversions that cookie loss would have missed.
Setup requires two things:
- Enable Enhanced Conversions in your Google Ads conversion settings
- Pass the user's email (hashed with SHA-256) in your conversion tag via GTM's User-Provided Data variable
For most businesses running lead gen, this alone typically recovers 15–30% of conversions that were previously untracked. The algorithm gets better data. Bids improve. Performance improves.
PMax stealing credit from branded Search
This one is less about broken tracking and more about attribution distortion. When you run Performance Max alongside branded Search campaigns, Google's attribution model tends to credit PMax campaigns for conversions that branded Search drove — because PMax is eligible to serve on brand queries unless you explicitly exclude them.
How to spot it
In your Search Terms report, look for brand keyword traffic appearing in your PMax insights. If brand terms are showing up under PMax, the campaign is intercepting searches for your own brand name and claiming credit for the easy conversions.
The fix
Add your brand terms as negative keywords in PMax via your campaign's brand exclusions (in the PMax settings, not the same as standard negative keyword lists). This forces brand-intent traffic to your branded Search campaigns where it belongs.
No offline conversion import
If your conversion journey includes any step after the web form — a phone call, a CRM qualification step, a manual review — Google has no idea that happened. It optimized to get you the form submission. What actually made you money is invisible.
This is especially common in B2B (form → sales call → closed deal), local services (form → appointment), education (inquiry → enrollment), and vacation rentals (form → booking in PMS).
The fix
Offline Conversion Import (OCI) lets you send conversion data back to Google after the fact — with the GCLID that identifies which click drove that conversion. The workflow:
- Capture and store the GCLID parameter from every inbound click
- Pass GCLID through to your CRM or booking system with every lead
- When a downstream conversion happens, upload that GCLID back to Google with the conversion value
- Google attributes it to the correct click and uses it to improve Smart Bidding
// important: GCLID expiry
GCLIDs expire after 90 days. If your sales cycle is longer than that, offline conversion import won't work for late-stage conversions. Consider building a first-party data model instead using Enhanced Conversions.
Quick audit checklist
Before you call your tracking clean, run through this list:
- Conversion count set to "One" for all lead gen actions
- Conversion fires on form submit, not page load
- Thank-you page not directly accessible without form submission
- No duplicate GTM containers on the same page
- Enhanced Conversions for Leads enabled and sending email data
- Brand terms excluded from Performance Max campaigns
- GCLID captured and stored on every inbound click
- Offline conversions imported for all post-form conversion events
- Conversion volumes match CRM/backend within ±15%
If you can't check all nine of those boxes with confidence, your tracking has problems — and those problems are costing you performance every day they go unfixed.
If you want us to run this audit on your accounts, we do it for free. Get a free audit here — we turn it around in 48 hours and give you a specific list of what to fix.