gclid is the Google Click Identifier: a URL parameter Google Ads adds to your landing page URL on each ad click when auto-tagging is on. It identifies that one click, so a later conversion, on your site or offline, can be credited to the campaign, ad group and keyword behind it.
If a sale can happen away from the page the ad points to, on a call, in a CRM or on another domain, I'd store the gclid with the lead from day one.
Most Google Ads accounts never think about the gclid, because the Google tag handles it on the page and the conversion fires in the browser. It starts to matter the day the sale moves somewhere the tag can't see. A lead form that closes on the phone a week later. A checkout on another domain. A subscription that only counts once the trial converts.
Picture a lead-gen account where Google Ads optimizes for form fills because that's the only thing it can see, while the deals that pay close on the phone days later. The campaign learns to buy form fills. Uploading the closed deals against the gclid is how you teach it to buy customers instead, and that only works if someone kept the gclid when the form was filled.
What is gclid?
Google defines it as "a URL parameter passed with ad clicks" that "identifies the campaign along with other attributes of the click associated with the ad" (Google Ads Help). It is one kind of click ID, and on a landing page it looks like this:
https://yourbrand.com/offer?gclid=Cj0KCQjw...BwE
You never write it yourself. Auto-tagging adds a new value to every click, and the value only means something to Google. Two things to know before you store it: it's case sensitive, so never lowercase it, and it's long, so give it a text column rather than a short field (Google Ads Help, offline conversions).
What gclid is used for
Google names three jobs for it: website conversion tracking, linking Google Ads with Google Analytics, and offline conversion imports.
| Use | What reads the gclid | When you need to care |
|---|---|---|
| Website conversion tracking | The Google tag, from the URL and its _gcl_aw cookie | When the conversion happens on a page the tag isn't on |
| Google Ads and Google Analytics link | Google Analytics, to report the Google Ads click and campaign | When redirects strip the gclid and paid clicks show up as other traffic |
| Offline conversion import | You: stored with the lead or order, uploaded later | Phone sales, CRM deals, trials, anything closed after the visit |
The third one is where the gclid stops being plumbing and starts being money. It lets the campaign learn from the outcome you actually care about instead of the first thing that happened on the page.
How to check the gclid on your ads
Click one of your live ads, or use the ad preview, and look at the address bar on the landing page. With auto-tagging on, the URL ends in gclid= and a long value. If it's missing:
- Check auto-tagging. It's an account setting in Google Ads, and Google says the gclid "is activated by turning on the auto-tagging setting".
- Follow the redirects. A tracking redirect, a link shortener or a server rule that rebuilds the URL can drop the query string before the page loads.
- Check the page with the parameter. Some sites answer an unknown query parameter with an error page or a redirect home. Open your landing URL with
?gclid=teston the end and see what loads. - Remember Safari. In Private Browsing, Safari removes known tracking parameters from links (WebKit, Safari 17). A share of iPhone clicks will arrive without one however well you set things up.
gclid, gbraid and wbraid
On some iOS traffic you'll see two other parameters in place of the gclid. Google added them to measure iOS campaigns within Apple's privacy rules (Google Ads Help, iOS measurement).

| Parameter | When Google adds it | Per click? |
|---|---|---|
gclid | Ad clicks with auto-tagging on | Yes |
gbraid | An ad click on the web that leads to your iOS app | No, aggregated |
wbraid | An ad click in an iOS app that leads to your website | No, aggregated |
For a website, the one to plan for next to the gclid is wbraid. Capture all three on arrival. When you upload a conversion through the Google Ads API, it takes exactly one of them (Google Ads API), so store which one you got.
How long a gclid is valid
Google says it retains the gclid for only 90 days, and you can upload a conversion with a gclid as long as it's no more than 90 days after the click (Google Ads Help, offline imports FAQ). In the browser, the Google tag keeps it in the _gcl_aw cookie, which also expires after 90 days (Google, ads cookies).
The conversion action has its own window on top of that, from 1 to 90 days for Search, Shopping and Display. If your sales cycle is longer than your conversion window, the upload succeeds and the sale still doesn't count. When uploads look fine and the numbers don't move, that's the first thing I'd check.
How to capture gclid for offline conversions
This is the part that decides whether offline imports work. Google's own guide describes the same pattern (Google Ads Help):

- Keep it on the first page. Read
gclid(orwbraid) from the landing URL and store it in a first-party cookie or local storage, so it survives the visitor browsing to other pages before converting. - Put it in a hidden field. Every form that creates a lead or an order gets a hidden
gclidfield filled from that cookie. - Store it with the lead. Your CRM or database keeps the gclid on the contact or deal, unchanged.
- Create the conversion action first. Google asks you to wait 4 to 6 hours after creating a new conversion action before uploading to it.
- Upload when the sale closes. Send the gclid, the conversion action, the conversion time with its time zone, and the value and currency, within the 90 days. A file, a scheduled import or the Google Ads API all work.
A capture script that covers steps 1 and 2 on a page you control:
<script>
var p = new URLSearchParams(location.search);
var id = p.get('gclid') || p.get('wbraid');
if (id) document.cookie = 'ef_gclid=' + encodeURIComponent(id) +
'; path=/; max-age=' + 60 * 60 * 24 * 90 + '; SameSite=Lax; Secure';
var m = document.cookie.match(/(?:^|; )ef_gclid=([^;]*)/);
document.querySelectorAll('input[name="gclid"]').forEach(function (f) {
if (m) f.value = decodeURIComponent(m[1]);
});
</script>
In production, keep a note of whether the stored value was a gclid or a wbraid, since the upload needs to say which it is.
gclid vs UTM parameters
They aren't competitors. UTM parameters are labels you choose, readable by any analytics tool and by people. The gclid is a key only Google can open. Keep both on: UTMs so your own reports know the campaign without asking Google, the gclid so Google can learn from your conversions.
| gclid | UTM parameters | |
|---|---|---|
| Who sets it | Google Ads auto-tagging | You, in the final URL or tracking template |
| Unique per click | Yes | No, per campaign or ad |
| Readable by | Google only | Any tool, any person |
| Used for | Conversion tracking and uploads to Google Ads | Your own source and campaign reporting |
gclid vs fbclid vs ttclid
Meta and TikTok have their own click IDs that do the same job with their own rules. Meta's fbclid goes back as the fbc value in the Conversions API, and TikTok's ttclid goes back through the Events API.
| gclid | fbclid | ttclid | |
|---|---|---|---|
| Platform | Google Ads | Meta | TikTok |
| Browser cookie | _gcl_aw, 90 days | _fbc, 90 days | ttclid |
| Sent back through | Conversion upload (file, import or API) | Conversions API | Events API |
| iOS variants | gbraid, wbraid | None | None |
gclid in ElasticFunnels
When we built tracking into ElasticFunnels, we made the landing page keep every click ID it sees, not only the one for the channel you're running today, because the day you add a channel is the worst day to rebuild tracking.
- Captured on arrival. Pages hosted on ElasticFunnels read
gclid,gbraidandwbraidfrom the landing URL on the first visit and store them with that visit on our side, next to the UTMs and the other platforms' click IDs. - Spend next to revenue. The Google Ads integration imports your ad spend, so each campaign shows cost next to the revenue your funnel recorded, and you can pause campaigns and change budgets from the same report.
Every feature is on every plan.
- If you import offline conversions, check the gclid on ten real leads in your CRM before you check anything in Google Ads. An empty or lowercased gclid explains most "the upload worked but nothing changed" problems.
- Set the conversion window to your real sales cycle, not the default you never looked at.
- Don't turn auto-tagging off because an old redirect breaks with the extra parameter. Fix the redirect.
- Upload the conversion you actually want more of. Uploading form fills teaches the campaign to buy form fills.
The gclid is Google's half of a deal: it tells you which click it was, and you tell it what that click turned into. Keep your half, and the bidding starts working for the business you have instead of the one the tag can see.



