← All articles

Blog

Your Conversion Fires but Google Ads Doesn't Count It? Understanding gclid and Click IDs

click idgclid not passing to ga4google ads conversion idgclid lost safari

You've confirmed the conversion tag fires. The thank-you page loads, the request goes out — and yet Google Ads still shows no conversion against your campaign. One of the most common reasons is a missing click ID: the gclid.

If you've already checked that your GA4 tag fires and it still isn't attributed in Google Ads, this is the layer to look at next. For the broader diagnostic starting from zero conversions, see No Conversions in Google Ads? A Step-by-Step Diagnostic Guide.

What is a gclid?

gclid stands for Google Click Identifier. When someone clicks your ad, Google Ads' auto-tagging appends a unique parameter to your landing page URL — for example:

https://example.com/?gclid=Tester123xyz

Google Ads creates a unique gclid for every single ad click. (GCLID: Definition) Auto-tagging is the setting that adds it, and it's enabled by default in most accounts. (About auto-tagging)

(Meta has an equivalent click ID called fbclid. The same principles below apply to it.)

How attribution actually works

Here's the chain that has to stay intact:

  1. A user clicks your ad → Google appends ?gclid=... to the landing URL
  2. Your site captures and stores that gclid (often as a cookie) for the session
  3. The user completes the action (purchase, lead) — possibly on a different page
  4. The conversion tag reads the stored gclid and sends it back to Google
  5. Google Ads matches that gclid to the original click and records the conversion

If the gclid is missing at any point in that chain, step 5 fails. The tag still fires — but Google Ads has nothing to attribute it to, so the conversion isn't recorded against your campaign. That's the gap that makes "the tag fires but Google Ads shows zero" so confusing.

The gclid has a 90-day expiration

A detail that catches many B2B advertisers off guard: Google retains each gclid for only 90 days from the click date. After that window, even a perfectly stored gclid can no longer be matched to a conversion — the import will return an EXPIRED_CLICK error.

This matters most for offline conversion imports and long sales cycles. If your average deal takes 120 days from click to close, the gclid expires before you can send the conversion back. The fix is to create conversion actions for earlier pipeline stages — "Qualified Lead," "Demo Completed," "Proposal Sent" — and upload those while the gclid is still valid. For more on sending offline sales data back to Google Ads, see our offline conversion import guide.

wbraid and gbraid: click IDs for iOS privacy

The article above focuses on gclid, but it's no longer the only click identifier Google Ads uses. On iOS traffic affected by Apple's App Tracking Transparency (ATT), Google replaces gclid with two privacy-compliant alternatives:

  • gbraid — used for web-to-app measurement
  • wbraid — used for app-to-web measurement

Unlike gclid, which identifies an individual click, gbraid and wbraid are aggregated and coarse-grained — they don't identify individual users, which keeps them compliant with Apple's privacy requirements. Crucially, Safari's Link Tracking Protection does not strip gbraid or wbraid, even in Private Browsing with full tracking protection enabled.

What this means in practice: if your reporting shows a growing share of iOS traffic with no gclid, that traffic is likely being tracked via gbraid/wbraid instead. Google Ads still attributes these conversions, but through modeled rather than deterministic matching. To strengthen iOS attribution further, enable Enhanced Conversions and consider server-side tagging. For a deeper look at Safari's impact on conversion tracking, see our Safari ITP guide.

Why the gclid goes missing

There are a few common ways the chain breaks:

1. Auto-tagging is turned off

No auto-tagging, no gclid. It's on by default in most accounts, but if it was disabled, attribution breaks at the source. Check Settings → Account settings → Auto-tagging.

2. A redirect strips the parameter

If your landing URL redirects (e.g. http→https, or through a marketing/redirect service) and that redirect doesn't carry query parameters through, the gclid is dropped before your page ever sees it.

Common pitfall: a redirect that "works" for users can still silently drop ?gclid=.... Test the actual ad's final URL, following redirects, and confirm the gclid survives to the landing page.

3. Cross-domain navigation without configuration

If the click lands on one domain but the conversion happens on another (e.g. a separate checkout domain), the gclid stored on the first domain won't be available on the second unless cross-domain tracking is configured.

4. The browser strips it (Safari / tracking protection)

Safari's Link Tracking Protection removes known click identifiers — including gclid and fbclid — from URLs in contexts like Private Browsing, Mail and Messages (with the scope expanding over time). UTMs generally pass through, but the click ID can be gone before your site loads. (GCLID loss in Safari)

How to check whether the gclid is getting through

You can verify this without clicking your own ad (which is against policy anyway):

  • Append a test gclid yourself. Open your landing URL with ?gclid=test123 and walk the flow. In DevTools → Network, confirm the conversion request includes that value. (Google's Tag Assistant lets you enter a URL with a gclid to inspect this.)
  • Check the landing URL after redirects. Load your ad's final URL and confirm ?gclid=... is still present once all redirects resolve.
  • Use Google Ads diagnostics. In Google Ads, the conversion action's "Diagnostics" can flag attribution issues.

How to fix and harden it

  • Turn auto-tagging on (Settings → Account settings → Auto-tagging).
  • Preserve query parameters through every redirect on the path to your landing page.
  • Configure cross-domain tracking if the journey spans domains.
  • Capture and store the gclid server-side or in a first-party cookie so it survives to the conversion page.
  • Enable Enhanced Conversions, which uses hashed first-party data (like email) to help match conversions back to clicks when the gclid is missing. Consider server-side tracking for resilience against browser stripping.

Capturing the gclid for offline conversions

If your conversions happen offline — phone calls that close deals, in-store visits, CRM pipeline stages — you need to capture and store the gclid at the moment of the initial web interaction so you can import the conversion later.

The typical flow:

  1. A visitor lands on your site with ?gclid=... in the URL
  2. JavaScript reads the gclid from the URL and writes it to a hidden form field or a first-party cookie
  3. When the visitor submits a form, the gclid is stored alongside their contact record in your CRM (e.g. a custom "GCLID" text field on the Lead object)
  4. When that lead converts offline (signs a contract, makes a purchase), you import the conversion back to Google Ads via the API, a CSV upload, or a CRM integration like the Salesforce connector

This closes the loop between ad clicks and real revenue — and lets Google's bidding algorithms optimize for actual business outcomes, not just form fills. See the full walkthrough in our offline conversion import guide.

Tip: Store the gclid in a field with at least 100 characters. The parameter can be long, and truncating it makes it unmatchable.

Quick checklist

  • Is auto-tagging on in Google Ads?
  • Does ?gclid=... survive to the landing page after all redirects?
  • If the journey crosses domains, is cross-domain tracking configured?
  • Does the conversion request actually include the stored gclid (check in DevTools)?
  • Are Enhanced Conversions (and ideally server-side) enabled to cushion browser stripping?

Frequently asked questions (FAQ)

Q. My tag fires but Google Ads shows no conversion — is gclid the cause? A. It's one of the most common causes. If the gclid never reached your page or wasn't passed back with the conversion, Google Ads has no click to attribute it to — so the tag fires but nothing is recorded against the campaign. Work through the checklist above.

Q. Where do I see the gclid? A. In the landing page URL after an ad click (?gclid=...), and in the outgoing conversion request. You can simulate it by adding ?gclid=test123 to your URL — no ad click needed.

Q. Does Safari really remove the gclid? A. Safari's Link Tracking Protection strips known click identifiers like gclid and fbclid in certain contexts, with the scope expanding over time. Server-side tracking and Enhanced Conversions help reduce the impact.

Q. Is this the same as the conversion ID / conversion label? A. No. The conversion ID/label identifies which conversion action in your account; the gclid identifies which ad click. Both must be correct for a conversion to record.

Conclusion

When a tag fires but Google Ads counts nothing, the click ID is one of the first things to check. Keep the chain intact — auto-tagging on, gclid surviving redirects and domains, passed back with the conversion — and harden it with Enhanced Conversions and server-side tracking.

And to confirm all of this end-to-end without clicking your own ad, ConversionOK runs your live page in an independent, isolated browser, walks the flow, and inspects the actual beacons and parameters leaving the page — including click-id pass-through — with zero risk to your ad account. Start with a free static check.