Get your GCLID not captured tracking to 95%+ accuracy guaranteed in writing.
You're paying for the click, the visit happens, the lead comes in — and the record has no click ID on it. Google Ads can't tie the lead back to the ad, GA4 files the session under Direct, and offline uploads reject the row. We follow one real click from the ad through every redirect, cookie, form field and CRM property, then fix whichever hop is eating it.
Free30 minutesNo obligation
GCLID not captured · what breaks
Where the click ID actually disappears — GCLID not captured
- 01
The landing page redirects and the query string dies
A www-to-apex rule, a geo redirect, a trailing-slash rewrite or a CDN cache rule forwards the visitor without `?gclid=`. By the time your tags run, the page has no idea the visit came from an ad.
- 02
Conversion Linker never runs on the page that got the click
It's either missing from the landing page or gated behind ad_storage, so the `_gcl_aw` cookie is never written. Nothing persists, and every later page load looks like an organic visit.
- 03
gbraid and wbraid aren't handled at all
iOS app-to-web clicks arrive with gbraid or wbraid instead of gclid. Capture scripts that only look for the string "gclid" leave those leads with an empty field and no way to attribute them.
- 04
The CRM quietly truncates the click ID
A gclid can run well past 100 characters. Single-line text fields, form middleware and some URL-length limits cut it short, and a truncated ID fails on upload with "click not found."
GCLID not captured · the fix
What changes once the click ID survives the whole path — GCLID not captured
Paid sessions stop getting filed as Direct
With the query string and referrer intact through the redirect chain, GA4 attributes the session to google / cpc instead of dropping it into Direct / (none).
Every lead record carries the click that created it
gclid, gbraid or wbraid lands on the contact record in full, with the click timestamp and landing page next to it — which is exactly what an offline upload needs months later.
Enhanced Conversions has a fallback when the cookie is gone
For the visitors where the cookie genuinely can't survive — ITP, denied consent, a browser wipe — hashed email and phone go up with the conversion so Google still has something to match on.
Smart Bidding stops guessing which clicks turned into leads
Attribution stops depending on last-touch guesswork. The campaign, keyword and device behind each lead are recorded at the moment of the click, not reconstructed afterwards.
GCLID not captured · normal or broken
Some Direct traffic is normal. Direct beating paid clicks isn't.
Before anyone rebuilds anything, separate the two things that look identical in a GA4 report: attribution behaving the way it's designed to, and a click ID being physically destroyed on arrival. Only one of them is worth paying to fix.
Normal, not a fault
Google Ads clicks outnumber GA4 paid sessions
Someone taps the ad and leaves before the tag loads. That's a billed click with no session, and a steady gap in that direction is arithmetic. Ads counts clicks; GA4 counts sessions that survived long enough to be counted.
Some Direct traffic exists on every account
Typed URLs, bookmarks, desktop email clients, in-app browsers that strip the referrer, PDFs and QR codes all land as Direct / (none). Direct isn't supposed to be zero, and chasing it to zero wastes a week.
gclid disappears from the URL after the first page
The parameter belongs to the landing URL only. Once Conversion Linker writes `_gcl_aw`, clean URLs on every page after that are the design working. Check the cookie, not the address bar.
Auto-tagged paid URLs carry no utm parameters
Google Ads auto-tagging uses gclid, not utm_source. A paid landing page with a gclid and no UTMs is correctly tagged. Bolting UTMs on top is what usually creates the mismatch people then come to us about.
Actually broken
Direct outruns google / cpc on a heavy-spend account
When Direct / (none) is the largest channel in GA4 while most of the budget goes to Search, the click ID is being destroyed on arrival. That's a redirect or a consent gate, not customer behavior.
The gclid is in the ad URL and gone after landing
Click your own ad and watch the address bar. If `?gclid=` is present on the click and absent once the page paints, a 301, a 302 or a CDN rule stripped the query string before any tag could read it.
iOS leads have an empty click-ID field, desktop doesn't
Desktop leads carry a gclid, iPhone leads carry nothing at all. That is a capture script written to look for the literal string "gclid" and nothing else, so gbraid and wbraid land nowhere.
Offline uploads reject rows with "click not found"
The ID was stored, then truncated by a single-line CRM field or a URL length limit somewhere in the middleware. A gclid that stops mid-string is not a gclid, and Google says so on every row.
GCLID not captured · diagnose
Twenty minutes and one test parameter tells you which hop is guilty — GCLID not captured
You can run all of this yourself on a live site without touching GTM, and it will usually name the culprit before you call anyone.
- 01
Load your landing page with a fake gclid attached
Open `https://yoursite.com/your-landing-page?gclid=TEST12345` in a fresh incognito window and watch the address bar settle. If the parameter is gone, a redirect is eating it and nothing downstream can save you.
- 02
curl the URL and read every Location header
Run `curl -sIL "https://yoursite.com/your-landing-page?gclid=TEST12345"` and look at each hop. The first Location value that has no `gclid=` on it is your culprit, and it's a server config fix, not a tag fix.
- 03
Look for the _gcl_aw cookie in DevTools
With the test parameter still on the URL, open Application then Cookies. If there's no `_gcl_aw` on your own domain, Conversion Linker either isn't firing on that page or is being held behind ad_storage.
- 04
Submit the form yourself and inspect the payload
Fill in the form with an obvious test name, then find the POST request in the Network tab. If the hidden click-ID field is empty, or shorter than what was in the URL, the break sits between the page and the form.
- 05
Open that test lead in the CRM and count characters
Paste the stored click ID into any character counter and compare it to the value from the URL. Truncation is silent at every other layer and only ever becomes visible here.
- 06
Repeat the whole test once on an iPhone
Same walkthrough with `?gbraid=TEST12345` instead. If desktop stores the value and iOS stores nothing, your capture script predates gbraid and wbraid and is ignoring the traffic Apple sends you.
GCLID not captured · prove
How we prove a click ID survives the whole trip — GCLID not captured
Every claim we make about the click chain gets checked against two records neither of us controls: Google's click data and your own lead records. If they disagree, we say so.
Source of truth
Google Ads click data · your CRM lead records
- Click a live ad on desktop and on an iPhone, then follow that exact ID through URL, cookie, form payload and CRM record.
- Confirm the stored click ID is character-for-character identical to the one in the landing URL, tested with a full-length value.
- Compare Google Ads clicks to GA4 google / cpc sessions for the same window and confirm the gap is direction-correct and stable.
- Confirm Direct / (none) drops back to a plausible share once the redirect chain preserves the query string end to end.
- Match a week of CRM leads to Google Ads click data: every paid lead should carry a gclid, gbraid, wbraid, or a hashed fallback.
- Run a test offline upload of ten stored click IDs and confirm zero rows come back with click not found.
GCLID not captured · free audit
What we check in the free audit
- Load your landing page with a fake gclid attached
- curl the URL and read every Location header
- Look for the _gcl_aw cookie in DevTools
- Submit the form yourself and inspect the payload
- Open that test lead in the CRM and count characters
- Repeat the whole test once on an iPhone
Checked against
Google Ads click data · your CRM lead records
Free30 minutesNo obligation
GCLID not captured · when not to buy
When capturing the click ID isn't worth engineering
The click ID has to actually travel somewhere before it's worth paying to protect the trip.
- You're not running Google Ads yet. There is no click ID to capture, and every fix on this page solves a problem you don't have.
- One domain, no redirects, form on the landing page, conversion in the same session. Check GTM Preview once — you are probably already fine.
- Your redirect is deliberate and already preserves the query string. If curl shows gclid on every hop, the leak is somewhere else entirely.
- Every conversion completes in-session and you never upload offline. Auto-tagging plus Enhanced Conversions may already cover you.
GCLID not captured · what we deliver
What we build into the click-ID chain — GCLID not captured
A redirect map from ad click to form load
Every hop between the ad's final URL and the page holding the form, listed with what each one does to the query string and referrer. Most of the fix is knowing which hop to blame.
Conversion Linker at the right scope
Fires on all pages including the landing page, and writes `_gcl_aw` at the eTLD+1 so the cookie survives www, subdomains and a checkout host.
Capture for gclid, gbraid and wbraid
Reads all three from the URL, falls back to the `_gcl_aw` cookie, and writes into hidden form fields plus first-party storage so a later page still has it.
Cross-domain handoff for Calendly, Stripe and HubSpot
Linker decoration on outbound links, plus a server-side fallback for destinations that don't run your container and therefore can't read the `_gl` parameter.
A CRM field sized and mapped for the real thing
A long-text custom field on the lead or contact object, mapped from the form and tested with an actual 100-plus character click ID rather than a placeholder.
A live-fire test on your own ad
We click your ad, walk the funnel, and show you the ID at every stage: URL, cookie, form payload, CRM record. You get the screenshots.
Written guarantee
95%+ tracking accuracy
Measured against Google Ads click data · your CRM lead records. Miss it and we keep working at no cost.
FAQ
GCLID not captured questions, answered
Sometimes, and I'd rather you tried first. One domain, one landing page, no redirect, form on the same page: adding the Conversion Linker tag in GTM and a short script that copies gclid, gbraid and wbraid into hidden fields is genuinely an afternoon's work. It stops being a DIY job when the click has to survive a redirect chain, a third-party form in an iframe, a checkout on another host, or a CRM that truncates without telling you. Most of our hours on this go to tracing, not to writing code.
Usually a redirect. A server-side 301 or 302 forwards the visitor to the destination without the query string, and depending on the setup it can drop the referrer too. GA4 sees a page load with no gclid, no utm and no referrer, and Direct / (none) is the only bucket left. The fix is either preserving the query string through the redirect or removing the hop entirely.
No, and I want to be precise about that because the distinction matters. The leads and orders still happen. What you've lost is the record of which click caused them. The real cost is downstream: Smart Bidding optimizes against an incomplete picture, you can't tell which campaigns produce customers versus tire-kickers, and offline uploads have nothing to key on.
They're the parameters Google issues instead of gclid when Apple's App Tracking Transparency rules apply — typically iOS clicks that started in an app like YouTube or Search. gbraid is app-to-web, wbraid is web-to-web on iOS. They behave differently from gclid on upload, and a capture script written before 2021 usually ignores both.
They solve different problems. Enhanced Conversions helps Google match a conversion it already knows about to a click it recorded, using hashed email and phone. It does not give you a click ID to store on a CRM record and upload three weeks later when the deal closes. If your sales cycle outlives the session, you need both.
No. Google accepts click conversions inside a 90-day window and only for click IDs that were actually stored somewhere. If the ID was never captured, there's nothing to upload. Everything we build works from the day it goes live forward — the honest framing is that you're stopping the leak, not refilling the tank.
If you run a single domain with the form on the landing page, no redirects, and the conversion completes in the same session, your setup probably already works — check it in GTM Preview before you hire anyone. Same if you're spending a few hundred dollars a month on one manual-CPC Search campaign. The click ID has to travel before it's worth engineering the trip.
More on GCLID not captured
- Guidegclid Missing? The Click-ID Rescue Guide (Auto-Tagging, Redirects, Consent)
- GuideWhy Your Paid Traffic Shows Up as 'Direct' in GA4 (And How to Get Credit Back)
- gclid missing from leadsWhy is the gclid missing from my leads?
- Google click identifiersgclid, gbraid and wbraid
- Click ID testerTest whether your click IDs are arriving
Free · 30 min
Send me one ad URL and I'll tell you where the click ID dies
Free30 minutesNo obligation
