If Google Ads shows conversions but your CRM has no matching leads, trace one conversion from the ad report to the actual enquiry. A conversion is an event you configured. It can be a phone-number tap, a button click, a duplicate tag or a spam submission. None of those automatically means a new customer contacted you.

Start with the event trail before changing bids or adding exclusions. The useful question is: what exactly had to happen for this conversion to count?

Match the symptom to the first check

Where reported conversions can part company with real enquiries
What you seeCheck firstWhat to change
Conversions, no form recordsButton-click triggers, validation errors, form delivery and CRM syncCount a successful server-accepted submission; separately verify the CRM received it
Calls reported, nobody answeredPhone-number click versus a measured call; call duration and routingKeep phone taps separate from connected or qualified calls
More conversions than enquiriesMultiple primary actions, GA4 plus native Ads tags, repeat submissionsChoose the intended bidding outcome and remove duplicate delivery paths
CRM records, fake contact detailsServer validation, verification and source concentrationReject invalid submissions before firing and feed back qualified leads
Real enquiries, few salesSearch intent, service area, pricing, follow-up and sales delayMeasure qualified-lead and closed-sale rates; a price shopper is not automatically a bot

1. Trace one test lead end to end

Use GTM Preview or Tag Assistant and submit your form once. Record the server-generated lead ID and timestamp. Check five things:

  1. Failed validation: submitting an empty or invalid form must not trigger the successful-lead tag.
  2. Server result: the form endpoint accepted and stored the record. A green animation in the browser is not enough.
  3. Business receipt: find that ID in the CRM or lead inbox. A broken email integration can lose a valid enquiry after the tag fires.
  4. Tag count: inspect how many times the Google Ads and GA4 events fire. Reload the confirmation page and navigate back to it.
  5. Source: retain the permitted click identifier and campaign context with the lead. Use the same timezone when comparing records.

A direct test checks the form and tag path; it does not prove Google will attribute that test to an ad. Do not click your own paid ad just to generate a conversion.

If redirects strip the click ID or campaign parameters, compare the before-and-after URLs with the free landing URL checker. It checks the URLs you paste; use the ad platform's URL test to verify the live journey.

2. Check the goals the campaign actually bids toward

In Goals → Conversions → Summary, list the conversion actions, their sources, their primary/secondary setting and their counting method. Then inspect the goals selected inside the affected campaign. Account defaults and campaign-specific goals can differ.

Use the free conversion-action audit to review an exported settings list. Its read-only Google Ads script exports action IDs, sources, primary settings and counting rules. Paste the result into the tool to find primary cart/checkout events, GA4/native overlap and lead-counting settings to inspect.

  • Primary: used in the Conversions column and bidding when the campaign uses the associated standard goal.
  • Secondary: normally appears in All conversions for observation.
  • Custom-goal exception: an action included in a custom goal can be used for bidding even when marked secondary.

If a campaign counts a form-button click, a form submission and a qualified lead as primary outcomes, its total mixes three different stages. Choose the stage you want bidding to pursue and keep the other stages available for diagnosis. For a purchase campaign, do not count add-to-cart, checkout and the purchase as three interchangeable wins.

Google Ads Help: About conversion goals and campaign-specific conversion goals, checked November 3, 2026.

Running Demand Gen? Check ad-event attribution and VTC bidding compatibility before expecting every reported conversion to match a click-through CRM lead.

3. Remove duplicate conversion paths

A native Google Ads conversion tag and an imported GA4 event can represent the same enquiry as two separate actions. Matching names do not merge them. Choose one action for that outcome in bidding, then test whether another tag, plugin, server integration or thank-you-page trigger is sending it again.

Google's One count setting is often appropriate for a lead action; Every can suit separate purchases. The count setting is per conversion action. It will not combine a native Ads action and a GA4 action into one, and a setting change does not rewrite historical totals.

Google Ads Help: conversion counting options.

If you maintain a delivery log, this query finds repeated successful sends for the same lead, destination and action. Adapt the table and column names to your system. It identifies records to inspect; retries may already be deduplicated by the destination.

-- Read-only example for your own event-log table.
-- lead_id is your opaque CRM ID, never an email address.
SELECT lead_id, destination, conversion_action, COUNT(*) AS sends
FROM conversion_delivery_log
WHERE status = 'succeeded' AND lead_id IS NOT NULL
GROUP BY lead_id, destination, conversion_action
HAVING COUNT(*) > 1
ORDER BY sends DESC;

Use a stable identifier for each real business event and follow each destination's deduplication rules. Keep a new sale separate from a retry of the same sale. Do not send customer contact details as event labels or URLs.

4. Fire the lead event after the server accepts it

A submit-button trigger records an attempt. A successful-lead trigger should follow a successful server response. Here is the browser-side pattern for a form you control:

// Run after your server has validated and stored the lead.
// accepted and leadId come from your server response, not the form fields.
if (result.accepted === true && result.leadId) {
  window.dataLayer = window.dataLayer || [];
  window.dataLayer.push({
    event: 'lead_accepted',
    lead_id: result.leadId
  });
}
// In GTM, trigger the lead tag on the custom event lead_accepted.
// Do not also fire it on the submit-button click or every thank-you page view.
// A stored lead is not yet a CRM-qualified lead.

The server does the work first: validate required fields and formats, verify any anti-bot challenge server-side, apply sensible rate limits, store the enquiry once and return an opaque lead ID. A client-side regex or hidden field alone is easy to bypass. Repeated HTTP requests must not create repeated lead records or conversion jobs.

Use the runnable form-acceptance and retry example to test lost responses, changed payloads and a queue failure. It commits the lead and pending job together, then keeps CRM qualification and platform delivery as separate checkpoints.

Keep marketing consent and tag consent checks in place. This snippet names a GTM custom event; configure its trigger and field mapping in your own container. It does not automatically enable Google Ads deduplication or qualify a lead.

For a query that disappears before the landing tag can collect it, use the GCLID and UTM redirect diagnostic. Its local HTTP demo distinguishes a missing parameter, a corrupted value and an intact query.

5. Give bidding a qualified-lead feedback loop

Separate received, verified contact, qualified and closed sale in your CRM. Define qualification in business terms: a reachable person, the right service, an eligible location and a genuine request. An email address that passes a format check has not passed those tests.

Send the chosen qualified or converted-lead outcome back through a supported offline import or enhanced-conversions-for-leads setup. Preserve matching information with appropriate consent, use the correct action and timestamps, and inspect import diagnostics. An accepted upload and an attributed conversion are separate checkpoints.

Accepted call uploads missing from reports? Use the call-conversion reconciliation checklist and free CSV worksheet to review source eligibility, matching fields and reporting scope.

Before switching the bidding goal, assess how often the new event occurs and how long it takes to arrive. A business closing a handful of jobs each month needs a different signal plan from one qualifying dozens of enquiries each day. Google's current lead guidance considers volume, freshness and conversion delay; it recommends regular imports, ideally daily. Do not invent extra conversions just to give bidding more data.

Google Ads Help: high-quality lead generation and offline conversion imports.

If only a few leads qualify, use the qualified-lead bidding review to check volume, delay and reporting before changing goals.

If the reported volume changed after a consent banner release, run the four consent and reporting tests before interpreting the new total.

6. Investigate the traffic behind the fake leads

Once the event path works, group rejected and qualified leads by campaign, network, device, landing page and time. Look for a source that contributes a large share of rejected leads and little qualified business. Inspect visits and server logs around those submissions instead of declaring every short session fraudulent.

For Search campaigns, compare Google Search and Search Partners. For Performance Max, review its available channel and placement reporting and your content exclusions. Treat placement and IP exclusions as source controls; they do not repair a conversion tag that fires on an invalid form.

Build a placement exclusion list from the sources you reviewed

Paste the websites, app-store links or specific YouTube placements you have decided to exclude. The free PMax placement tool cleans the list; it does not decide which placements are fraudulent. Apply PMax exclusions at account level and review the effect on other eligible campaigns.

Runs in your browser. Your placement report stays here.

Paste website URLs, Google Play or App Store links, mobileapp IDs, or specific YouTube video/channel URLs. CSV and tab-separated reports work too. Start with placements you have decided to exclude.

Investigate repeat addresses and datacenter visits

Have IP addresses or server logs to inspect? Use the free Google Ads IP exclusion list builder below. It removes repeated addresses and can count distinct ad click IDs in log lines. Review the evidence before applying the output to an ad account: cloud and shared networks can also carry real visitors.

Free tool

Build your IP exclusion list

Paste addresses from a log, a CSV export or a report, in any layout. You get a clean list in the format Google Ads accepts, with repeats removed and the most active addresses first. Paste a server log to count distinct GCLIDs from each address.

addresses share the first three parts

0 entries

Runs in your browser. Nothing you paste is sent anywhere.

Account-level IP exclusions can reach Performance Max. Campaign-level IP exclusions are not available for PMax. Google's IP exclusion instructions explain where each list applies. The guide to spending the IP exclusion slots covers list maintenance.

If the PMax report points to specific mobile apps, use the app placement guide to verify the ID and scope before applying an exclusion.

7. Compare real lead cost before and after the fix

Keep a dated change log. Compare cohorts that have had enough time to qualify, using the same definition and sales follow-up process. A useful worksheet has these columns:

period,campaign,spend,received_leads,qualified_leads,closed_sales,rejected_leads
  • Qualified-lead rate: qualified leads ÷ received leads.
  • Cost per qualified lead: spend ÷ qualified leads.
  • Close rate: closed sales ÷ qualified leads.

When the denominator is zero, report no qualified leads or sales; do not show a zero acquisition cost. Fewer reported conversions after removing duplicates can be a correction in measurement. Judge the result by real enquiries and sales.

Inspect the visit. Control what gets sent.

AdProtektor's traffic audit lets you investigate returning visitors, classifications and available recordings. ConversionOS checks supported events for duplicates and, with fraud protection enabled, can withhold events linked to blocked visitors or crawlers before delivery to configured destinations.

Use that evidence alongside CRM qualification. Start with one site, inspect the events and keep fake submissions out of the signal you use for bidding.

Start a free AdProtektor trial →

For the broader source problem, read how to investigate fake Google Ads leads. If Google Ads shows clicks but no conversions at all, start with the clicks-without-leads checklist. Find the browser tools in the free Google Ads tools hub.

For repeated purchase sends or native Google Ads plus GA4 imports, follow the duplicate-conversion diagnostic to inspect transaction identity, campaign goals and supported multi-source delivery.

For CRM outcomes uploaded successfully but absent from reports, follow the offline-conversion diagnostic to separate row results, matching, processing and the selected reporting scope.

If CAPTCHA appears to pass while fake enquiries continue, use the server-acceptance diagnostic and local lab to separate the widget, actual verification and business qualification.