The 90-day clock — and the 63-day exception
Google Ads Help states it plainly: "We retain the GCLID for only 90 days." That single sentence sets the deadline for every offline conversion workflow you'll build. You can upload any conversion keyed to a gclid so long as the click is no older than 90 days; past that, the import fails with "This click is too old for its conversion to be imported."
Here's the part most guides flatten into a single number. Enhanced conversions for leads — the flow that uploads hashed personally identifiable information rather than a gclid — has a shorter 63-day limit. Two different paths, two different deadlines. If your sales cycle runs past two months, which mechanism you chose decides whether the conversion lands at all.
Takeaway: if your click-to-close cycle is long, don't wait for the final sale. Upload an intermediate event that reliably happens inside the window — a qualified lead, a demo booked — and optimise toward that instead.
gclid means paid. Always.
gclid only ever appears on a paid Google Ads click with auto-tagging enabled. It is never appended to an organic search result. That makes it a genuinely reliable paid-traffic signal in analytics — and it's the sharpest contrast with Meta's fbclid, which Meta appends to organic post and Messenger links as well as ads.
So the two parameters demand opposite instincts: an fbclid in your logs proves nothing about whether money was spent, while a gclid proves it was.
iOS: gbraid and wbraid
Under Apple's App Tracking Transparency, a user-level gclid isn't available on iOS without consent, so Google issues aggregate identifiers instead — gbraid for web-to-app journeys and wbraid for app-to-web. These feed conversion modeling rather than one-to-one matching, which means iOS numbers should be read as modeled estimates, not deterministic counts.
A single click can carry both gclid and gbraid. Capture and pass whichever are present rather than assuming one excludes the other.
Capturing gclid for offline conversions
Google's own setup guidance is a three-step pattern, and it's the same shape as every other click ID:
- Enable auto-tagging. Without it there is no
gclidto capture, and offline conversion import isn't available at all. - Capture and store on landing. Read
gclidfrom the query string and persist it — cookie or local storage — then carry it into a hidden field on your forms. - Store it against the record. Write the
gclidalongside the prospect in your CRM so the conversion can be uploaded later with the click it belongs to.
Google's suggested capture script uses a 90-day expiry on the stored value, which lines up with the retention window — sensible, and worth matching rather than inventing your own TTL.
Common gclid failure modes
- Auto-tagging off. Silently produces no
gclidat all. Check it first when offline imports return nothing. - Missing the window. A long sales cycle plus a late upload equals a conversion Google will refuse. Track the age of the click, not just the conversion.
- Assuming 90 days everywhere. Enhanced conversions for leads is 63. Using the wrong number silently drops the tail of your conversions.
- Redirect stripping. As with every click ID, an affiliate redirect that discards unknown parameters breaks the chain before you ever store it.
- Ignoring Brave. Brave strips
gclid,gbraidandwbraidby default for every user — see the Click ID Survival Matrix.
For the wider landscape, see the click ID explainer; for the full build, the tracking-setup playbook.