The problem
Google Ads says you got 40 conversions last month, but your inbox and phone log show maybe half of that. Or the opposite: leads are coming in and the account shows almost nothing. Either way, Smart Bidding is optimizing toward numbers that do not match reality, and you cannot trust your cost per lead.
Where this comes up: Reddit r/PPC, Facebook groups and client questions
Quick answer
Most Google Ads conversion tracking problems come from five places: duplicate tags firing for the same action, the wrong actions set as primary, thank-you page triggers that fire on reloads or never fire at all, calls that are not tracked or are counted too loosely, and missing consent or offline data. Audit in that order: list every conversion action, confirm which are primary, test each one live with Tag Assistant and GTM Preview, then reconcile Google Ads numbers against your CRM for the same date range.
The order I use to audit Google Ads conversion tracking
With Smart Bidding, conversion data is the steering wheel: if the wrong actions count, the algorithm buys more of the wrong thing. That is why I check tracking before keywords or bids, especially when an account shows clicks but no leads or a sudden jump in cost per lead. I follow the same sequence every time:
- Inventory: open Goals > Conversions > Summary and list every conversion action, its source (Google tag, GA4 import, phone calls, import from clicks), status, counting setting and whether it is primary or secondary.
- Primary vs secondary: confirm only real business outcomes are primary.
- Duplicates: look for two actions measuring the same event (for example, a native form tag and a GA4 "generate_lead" import).
- Live testing: submit forms, click phone numbers and complete bookings while running Tag Assistant and GTM Preview.
- Calls: check call extensions, website call conversions and minimum call length.
- Data quality layers: Enhanced Conversions, consent mode and offline imports.
- Reconciliation: compare a recent 30-day window in Google Ads against the CRM or lead sheet.
The sections below walk through what goes wrong at each step and how to fix it.
Why is Google Ads double counting conversions?
Double counting is the most common problem I find. It usually has one of these causes:
- Native tag plus GA4 import, both primary. A Google Ads form-submit tag and an imported GA4 key event fire for the same submission, and both count toward "Conversions".
- The tag is installed twice. Once hard-coded by a developer or plugin, once in GTM. Tag Assistant will show the same conversion ID and label firing twice.
- Counting set to "Every" for leads. For lead generation, counting should almost always be One per click. "Every" is meant for purchases.
- Thank-you page reloads. A visitor refreshes or bookmarks the confirmation page, and the tag fires again.
- Multiple steps tracked as separate primary goals. For example, "form start", "form submit" and "booking confirmed" all set as primary for the same person.
How to fix it: choose one source of truth for each action. For most lead-gen accounts I prefer the native Google Ads tag (via GTM) as the primary lead conversion, because it supports Enhanced Conversions directly and attributes cleanly to the click. Keep the GA4 import as secondary for reference, or remove it. Switch lead actions to "One" counting.
Are the wrong conversions set as primary?
Primary actions are what Smart Bidding optimizes toward and what shows in the "Conversions" column. Secondary actions are only observed in "All conv." This one setting causes a lot of damage when it is wrong.
Common examples of actions that should not be primary for a local-service business:
- Page views of the contact page
- Scroll depth or engaged sessions imported from GA4
- Clicks on an email link or a "Get Directions" button
- Auto-created actions such as "Local actions" or store visits, unless you have deliberately chosen them
- Chat widget opens (as opposed to a chat that produces contact details)
Also check the campaign-level goal settings. A campaign can be set to use account-default goals or a specific set. I regularly find campaigns optimizing toward a goal that was added months ago for testing and never removed.
A simple rule: if you would not be happy paying your target cost per lead for that action, it should not be primary.
Form and thank-you page tracking issues
Forms break tracking in quiet ways. The typical problems:
- No real thank-you page. Many form builders show an inline success message without a URL change, so a "Page View contains /thank-you" trigger never fires.
- The thank-you page is reachable without submitting. It is linked in the menu, indexed by Google or shared in emails, so visits get counted as leads.
- Form submission triggers that fire on failed submits. GTM's built-in form trigger can fire even when validation fails, unless "Check Validation" is enabled and the form actually supports it.
- Embedded forms in iframes (some scheduling and CRM forms) that GTM on your site cannot see.
Better options, in order of reliability:
- A
dataLayer.pushevent fired by the form's own success callback (many form plugins and CRMs support this). - A unique thank-you URL that is set to noindex, not linked anywhere, and only reached via a successful submit.
- An element visibility trigger on the success message, as a fallback.
For iframed booking tools, check whether the vendor offers a native Google Ads integration or posts a message to the parent page you can listen for.
How to track phone calls correctly in Google Ads
For home services, legal and healthcare, calls are often the majority of leads. Yet I often see accounts tracking only forms. There are three distinct call sources, and each needs its own setup:
| Call source | How it is tracked | Common mistake |
|---|---|---|
| Calls from ads (call assets) | Google forwarding number, "Calls from ads" action | Minimum length left at default when most real calls are longer, or forwarding number disabled |
| Calls from website | Website call conversion with dynamic number swap | Swap snippet not installed, so the action exists but records nothing |
| Clicks on phone number (mobile) | Click-to-call trigger in GTM | Counted as primary, so taps that never connect are treated as leads |
My usual approach: make calls from ads and website calls with a sensible minimum duration primary, and keep click-to-call taps as secondary. A tap tells you intent, not a conversation. If you use a third-party call tracking platform, import qualified calls through its Google Ads integration and avoid also counting the same calls through Google's forwarding numbers.
Enhanced Conversions and consent mode: the gaps they close
Enhanced Conversions for leads sends hashed first-party data (email, phone) with the conversion. It improves match rates when cookies are blocked or the person switches devices, and it is also the foundation for importing offline outcomes without relying only on the GCLID. Check the diagnostics in the conversion action: if it reports that user-provided data is not being detected, your GTM variable is probably pointing at the wrong field or reading it after the form clears.
Consent mode v2 matters if you have visitors in the EEA or UK, or if you run a consent banner for any reason. Without it, Google receives no signal from people who decline cookies, and you lose modeled conversions. Check that:
- Your consent banner sets default consent states before any Google tags fire.
- The
ad_user_dataandad_personalizationparameters are included, not justad_storageandanalytics_storage. - The banner actually updates consent when someone accepts, which you can see in Tag Assistant's consent tab.
A banner that blocks all tags until consent, with no consent mode signals, is a frequent reason accounts show far fewer conversions than they really get.
Offline conversion imports: tracking what happens after the lead
Even perfect form and call tracking only tells Google that someone made contact. It does not say whether they booked, showed up or paid. That is why so many accounts end up optimizing toward low-quality leads.
Offline conversion import closes that loop. The basic setup:
- Capture the GCLID (and ideally GBRAID/WBRAID) in a hidden form field and store it in your CRM with the lead.
- Create conversion actions for later stages, for example "Qualified lead" and "Job booked".
- Upload those stages from the CRM, either via a native integration, scheduled upload or Zapier-style connector, ideally within a few days of the event.
- Once volume is consistent, consider making the qualified stage primary so Smart Bidding optimizes toward it.
Enhanced Conversions for leads lets you match uploads using hashed email or phone as well, which helps when the GCLID was not captured. Watch the upload diagnostics for rejected rows; expired or malformed click IDs are common.
How to verify tracking with Tag Assistant and GTM Preview
Never assume a conversion works because the status says "Recording conversions". Test it.
- Open GTM Preview (or Tag Assistant at tagassistant.google.com) and connect to your site.
- Complete the real action: submit the form with test details, click the phone number, finish a booking.
- In the GTM debug pane, confirm the conversion tag fired once, on the right event, and not on page load.
- In Tag Assistant, check the Google Ads hit shows the correct conversion ID and label, and that user-provided data is present if Enhanced Conversions is on.
- Reload the thank-you page and confirm the tag does not fire again (or that your logic prevents it).
- Check the consent state shown for the hit.
- Within a day or two, compare test submissions with what appears in Google Ads (segment by conversion action).
Then do the reconciliation: pick 30 days, count real leads in the CRM that came from Google Ads, and compare to primary conversions. A small gap is normal because of attribution windows and consent. A large gap in either direction means something is still wrong.
When to get a second pair of eyes
If you have worked through this and the numbers still do not line up, or you are not sure which actions should drive bidding, a structured audit is usually faster than trial and error. I cover this as part of my conversion tracking setup and audit service, and you can see how a rebuild is approached in the case studies. If you would like me to look at your account, you can request a tracking review.
Quick diagnostic checklist
- List every conversion action and note source, counting and primary/secondary status
- Make sure only real leads (forms, qualified calls, bookings) are primary
- Remove or demote duplicate GA4 imports that mirror native tags
- Set lead actions to count "One" per click
- Test each form with GTM Preview and confirm the tag fires once
- Confirm the thank-you page is noindex and unreachable without submitting
- Track calls from ads and website calls with a realistic minimum duration
- Check Enhanced Conversions diagnostics for user-provided data
- Verify consent mode v2 signals in Tag Assistant
- Reconcile 30 days of Google Ads conversions against CRM leads
Frequently asked questions
Should I use GA4 imported conversions or the Google Ads tag?
For lead generation, I usually make the native Google Ads tag primary because it attributes directly to the ad click and supports Enhanced Conversions cleanly. GA4 imports are fine as secondary actions for reference. The key is not to have both counting the same lead as primary.
Why does Google Ads show conversions with decimals?
Decimals come from data-driven attribution splitting credit across multiple ad clicks, or from modeled conversions under consent mode. They are expected and not a sign of broken tracking on their own.
Why do my Google Ads conversions not match my CRM?
Google Ads reports conversions by the date of the ad click, not the date of the lead, and it uses attribution windows and modeling. Your CRM records actual contacts on the day they happen. Compare longer windows, and look for large, consistent gaps rather than small differences.
Do I need offline conversion imports if my form tracking is accurate?
Accurate form tracking tells Google who contacted you, not who became a customer. If lead quality varies a lot, importing qualified or booked stages from your CRM gives Smart Bidding a far better target. It is one of the most effective fixes for spam and low-intent leads.
How long does it take Smart Bidding to adjust after I fix tracking?
Changing primary conversion actions puts bid strategies back into a learning phase, which often takes one to two weeks depending on volume. Avoid making several other major changes at the same time so you can see the effect of the tracking fix.