Skip to content

Fix: GCLID arrives at your site but never reaches your CRM

finding google ads updated 2026.05.25 7 min read

Google Ads auto-tagging has been ON by default since 2018, so every paid click that hits your landing page already carries a gclid parameter in the URL [1]. The audit caught the other half of the loop: your forms, your CRM, or the redirect chain between them is dropping that gclid before it ever gets stored. The result is silent — campaigns keep spending, leads keep arriving, but offline conversion uploads can no longer be tied back to specific ad clicks, so Smart Bidding loses its highest-quality training signal.

Why this matters

Smart Bidding optimizes against whatever conversion signal you give it. If the only thing flowing back is form-submission count, Google's algorithm chases form-fills — including the ones from competitors, students, and bots. The whole point of plumbing gclid from landing URL → hidden form field → CRM record → OCI upload is to replace that noisy top-of-funnel signal with a clean closed-won signal further down the funnel. Without gclid capture, none of this works: there's no key to join the CRM row back to the original click.

The economic cost is two-sided. First, you can't run Offline Conversion Import at all without gclid on each row [3], which means your bidding model never learns which keywords/audiences/creatives produce paying customers vs. tire-kickers. Second, attribution reports inside Google Ads show inflated form-fill conversions but no revenue tie-back — so you can't defend budget to finance, and you can't compute true CPA or ROAS per campaign.

This rule fires for B2B SaaS, lead-gen, and any account with a sales cycle longer than the on-site session. It is one of the most common audit findings in 2026 because auto-tagging silently survives most CMS migrations, redirects, and consent-banner deployments — but the receiving side (hidden field, CRM mapping, server logging) usually doesn't.

How to verify the issue

  1. Click your own ad in an incognito window. Use a paid keyword that's actually running. Land on the page.
  2. Check the URL bar after the page settles. It should contain ?gclid=Cj0KCQ... (or &gclid=... if other params precede it). If the gclid is missing here, auto-tagging is broken or being stripped before the page loads — go to step 5.
  3. Open Chrome DevTools (F12) → Application tab → Cookies. Look for _gcl_aw. The Conversion Linker tag should have written the gclid into a first-party cookie [4]. If _gcl_aw is absent, your sitewide tag or Conversion Linker is not firing.
  4. Submit the form with a test lead. Then open the CRM record. You should see a gclid field populated with the exact value from the URL. If the field doesn't exist, or exists but is empty, the hidden input is not wired.
  5. Check for redirects that strip the query string. Use the Redirect Path Chrome extension on the landing URL. Any 301/302 that drops ?gclid=... is the bug — common offenders: marketing-team vanity-URL forwarders, Cloudflare page rules, and JS-based geo-redirects that rebuild the URL from scratch.
  6. Check your Google Ads diagnostic report. Navigate ToolsConversionsDiagnostics. A "Tag inactive" or "Recent conversions" gap on an Import action is a downstream symptom of broken gclid capture.

How to fix it

Total time: 2-3 days engineering + 1 day QA.

  1. Fix the auto-tagging side first if needed. Verify AdminAccount settingsAuto-tagging is ON. It has been default-ON since 2018, but legacy accounts sometimes have it off [1]. Save the change — gclids start appending immediately on next click.
  2. Eliminate any redirect that strips the query string. If a redirect is structurally required (e.g., example.com/landingexample.com/us/landing), update the rule to preserve query params. In Nginx: return 301 $scheme://$host/us/landing$is_args$args;. In Cloudflare page rules: enable "Preserve query string".
  3. Add a sitewide capture script. On every page, write the gclid from the URL to a first-party cookie (gclid_capture) with 90-day expiry. This handles the case where the user lands on page A, browses, and converts on page B. Pattern: read URLSearchParams, store, fall back to existing cookie on subsequent pages.
  4. Add a hidden form field. Use the canonical Google example [3]: <input type="hidden" id="gclid_field" name="gclid_field" value="">. On form render, populate value from the cookie. Do this on every form that produces a lead — demo request, contact, gated content, free trial.
  5. Map the field through to your CRM. Salesforce: create a gclid__c custom field on Lead and Opportunity, ensure your form integration writes to it, then mirror Lead → Opportunity on convert. HubSpot: create gclid contact property, map via the form's "field mapping". Pipedrive / Close / custom CRM: add a custom field and update your form-handler API call.
  6. Wire the upload pipeline. Use Data Manager (recommended for new builds) or the offline conversion API. Closed-won deals get uploaded daily with their original gclid, the conversion action of type "Import from Clicks", a value, and a conversion time. Window: 90 days from click for GCS/S3/HTTP/SFTP/Sheets sources, 14 days for direct DB sources [5].
  7. Stage the rollout. Push to a single landing template first, verify end-to-end with a real test lead, then mass-roll.

How to confirm the fix worked

  • Click → URL test: Live ad click in incognito → gclid present in URL bar after all redirects settle. Test 3 different landing templates.
  • Cookie test: _gcl_aw and your custom gclid_capture cookies both populated in DevTools.
  • Form-submit test: Submit test lead → CRM record has gclid field populated with the exact URL value.
  • CRM-to-Ads test: Mark a recent test lead as closed-won. Trigger your upload job (or wait for the daily run). Within 24-48h, the conversion appears in ToolsConversionsSummary against the right campaign.
  • No "Conversion date precedes click date" errors in the upload log [2]. If you see them, your timestamps are timezone-inconsistent — fix before counting the rollout done.
  • Verification window: Re-run the audit rule after 14 days. The diagnostic should clear once a baseline of OCI conversions has flowed in.

This rule almost never fires in isolation. It co-occurs with offline_conversion_import_inactive (no OCI action exists at all), dda_consistency_across_conversions (the OCI action exists but uses last-click attribution), and enhanced_conversions_for_leads_not_active (the modern alternative that uses hashed email instead of gclid). Fixing gclid capture is the upstream prerequisite for all three — without a reliable gclid → CRM bridge, the downstream conversion actions either don't fire or fire with garbage data, which then poisons Smart Bidding. Treat this as Day-1 work on any B2B / lead-gen audit; the bidding optimizations that follow are downstream of it.

Sources

  1. Google Ads Help — About auto-tagging. https://support.google.com/google-ads/answer/3095550 (accessed 2026-05-25)
  2. Google Ads Help — Offline conversion imports FAQs. https://support.google.com/google-ads/answer/10029210 (accessed 2026-05-25)
  3. Google Ads Help — Set up offline conversions using Google Click ID (GCLID). https://support.google.com/google-ads/answer/7012522 (accessed 2026-05-25)
  4. Google Ads Help — Troubleshoot your sitewide tagging. https://support.google.com/google-ads/answer/9148089 (accessed 2026-05-25)
  5. Analytics Mania — Google Ads Conversion Tracking Not Working? 28 reasons and fixes. https://www.analyticsmania.com/post/google-ads-conversion-tracking-not-working/ (accessed 2026-05-25)
// was this useful?
// anonymous · no personal data stored