ULTRO NOTES Published Updated

What Is GCLID? How Google's Click ID Works and Why It Goes Missing

How the Google Ads click ID works, how conversion tracking, GA4 and offline conversion imports use it, what gbraid and wbraid are, where it's stored, how to find where it breaks, and what to watch for on Shopify.

In shortGCLID (Google Click Identifier) is an ID that Google Ads adds to your landing page URL when someone clicks an ad and auto-tagging is on. The Google tag on your site stores it in a first-party cookie (such as _gcl_aw), and when a purchase happens later, tells Google Ads which ad click it came from. GA4 uses it for Google Ads campaign data, and offline conversion imports use it to send in-store and phone sales back to Google Ads. On iOS, traffic from a handful of Google apps gets wbraid instead of gclid, and iOS 14.5+ clicks also get gbraid. The gclid usually goes missing because of redirects, sites that reject URL parameters, moving to another domain, or declined consent for ad cookies.

What is that ?gclid= string on your Google Ads landing page URLs? Is it safe to strip it? And when someone says the gclid isn’t being added, or disappears along the way, what should you check? Anyone running Google Ads gets these questions sooner or later.

This guide is for anyone running Google Ads or owning site tracking. It covers what a gclid is, what it’s used for, how it differs from gbraid and wbraid on iOS, the cookies that store it, why it goes missing and how to check, and how it behaves on Shopify. Specs follow Google’s help center and developer documentation as of October 2026. Screen and setting names come from the help center and may differ slightly from what you see.

What is GCLID (Google Click Identifier)?

A gclid is an ID that Google Ads appends to your landing page URL when someone clicks an ad and auto-tagging is on. It stands for Google Click Identifier. Google Ads Help gives the example of an ad pointing to www.example.com: after a click, the URL looks like www.example.com/?gclid=123xyz.

Auto-tagging is on by default in new Google Ads accounts. Here’s what Google’s help center documents about auto-tagging and the gclid:

ItemDetail
Where it’s addedAt the end of the final URL, before any fragment (the part after #). If there’s already a query string, it’s joined with &
LengthUp to 100 characters
When it’s createdSometimes at the time of an impression rather than a click. If the same user clicks the same ad again, the same gclid is used
ExceptionsApp campaigns don’t respect auto-tagging. Auto-tagging isn’t compatible with third-party ad serving (3PAS) ads

The gclid itself isn’t a readable string. The Google tag on your site picks it up, and Google matches it on its side to the specific campaign and click.

GCLID vs UTM parameters and similar parameters

A gclid is added by Google Ads automatically; UTM parameters are strings you write yourself. When both are present, GA4 uses the auto-tagged (gclid) values for source, medium and other traffic-source dimensions. Google’s ad products have a few similar parameters:

ParameterWhen it appearsSource
gclidGoogle Ads clicks (auto-tagging on)Google Ads Help
wbraidClicking an ad in an iOS app that leads to a web page. iOS traffic from a handful of Google apps gets this instead of gclidGoogle Ads API docs, Google Ads Help
gbraidClicking a web ad that leads to an iOS app. Google Ads Help also says it’s added to landing page URLs for iOS 14.5+ clicks. It can appear alongside gclidGoogle Ads API docs, Google Ads Help
dclidClicks from Campaign Manager, Display & Video 360 and similarGoogle tag docs, Google advertising cookies list
srsltidProduct results in Google Search (Merchant Center auto-tagging)Merchant Center Help

Other platforms have click IDs too, such as Meta’s fbclid.

What is GCLID used for?

A gclid has three jobs: Google Ads conversion tracking, Google Ads campaign data in GA4, and offline conversion imports. Google Ads Help says auto-tagging is required for all three.

UseWhat the gclid doesRequirement
Google Ads conversion trackingThe tag reads the click information stored in a site cookie at purchase time and passes it to Google AdsThe Google tag (or the Conversion Linker) runs on every page
Google Ads dimensions in GA4GA4 gets the Google Ads campaign, ad group name, keyword text and so on from URLs with a gclidGA4 is linked to Google Ads
Offline conversion importsYou store the gclid with the lead’s details at inquiry time, and later send in-store or phone sales back to Google AdsGCLIDs are retained for 90 days. New API integrations use the Data Manager API

How conversion tracking passes the gclid along

In conversion tracking, the gclid moves from the URL to a cookie, and from the cookie to the purchase tag. Based on Google Ads Help, it happens in three steps:

  1. Someone clicks the ad, and a gclid is added to the landing page URL.
  2. The Google tag on your site reads the gclid and stores it in a cookie on your domain.
  3. When the conversion tag fires on the thank you page, the purchase is sent to Google along with the click information from the cookie.

If the cookie disappears along the way, or the person buys on another device, the purchase isn’t tied to the ad click. Enhanced conversions fill part of that gap with hashed data such as the email address used at purchase. How that fits into conversion setup is in Google Ads conversion tracking.

How GA4 uses it

GA4 gets the Google Ads campaign, ad group, keyword and more from URLs with a gclid. When a URL has both a gclid and UTMs, the auto-tagged values win for source, medium and the other traffic-source dimensions; only manual ad content and manual term take the UTM values. When you link GA4 and Google Ads, the linking flow lets you enable auto-tagging.

According to GA4’s help center, if the gclid or dclid can’t be used as intended and the URL has even one UTM parameter, GA4 takes all the cross-channel source values from the UTMs. To tell why Google Ads dimensions show (not set), see why GA4 shows (not set).

What are gbraid and wbraid?

wbraid is the parameter iOS traffic from a handful of Google apps gets instead of a gclid. gbraid is added to landing page URLs for iOS 14.5+ clicks, and can appear alongside a gclid. Google added both in response to Apple’s App Tracking Transparency (ATT, which asks permission for cross-app tracking). If you see them in your URLs, auto-tagging isn’t broken.

Here’s what Google Ads Help’s “Updates to iOS 14 campaign measurement” says:

  • Since ATT took effect on April 26, 2021, Google no longer sends the gclid for iOS 14 traffic from ads on a handful of Google apps. Other Google traffic still gets a gclid.
  • For web conversions, the new wbraid parameter helps attribute conversions to ad campaigns, and works with conversion modeling (Google’s statistical estimate of conversions it couldn’t observe).
  • gbraid helps measure app conversions driven by ad campaigns on iOS. It’s added to landing page URLs for all iOS 14.5+ clicks when auto-tagging is on, and currently applies only to Search, Shopping, Display and Performance Max campaigns.
  • Most advertisers don’t need to change their site, but a small percentage may need to allow arbitrary URL parameters.

The Google Ads API docs define gbraid as a URL parameter present when a user clicks an ad on the web and is directed to your iOS app, and wbraid as one present when a user clicks an ad in an iOS app and is directed to your web page. The help center and API docs describe them from different angles, so if either shows up in your URLs, treat it as Google Ads click information and don’t strip it.

There are limits on conversions measured through wbraid and gbraid. The Google Ads API docs say Google Ads doesn’t support custom conversion variables in combination with wbraid or gbraid.

Where is the GCLID stored? _gcl_aw cookies and the Conversion Linker

The gclid is stored by the Google tag or the Conversion Linker in a first-party cookie on your domain, such as _gcl_aw. On the purchase page, the tag reads that cookie to tie the purchase to the click.

Tag Manager Help says the Conversion Linker automatically detects ad click information in your landing page URLs and stores it in first-party cookies named _gcl_*, such as _gcl_aw, _gcl_gs and _gcl_dc, and in the browser’s local storage (_gcl_ls). The main entries in Google’s advertising cookies list:

CookieProducts listedLifespan
_gcl_awGoogle Ads90 days
_gcl_auCampaign Manager, Display & Video 360, Google Ads, Search Ads 36090 days
_gcl_gb, _gcl_gs, _gcl_agGoogle Ads90 days
_gcl_dcCampaign Manager, Display & Video 360, Search Ads 36090 days
FPGCLAW, FPGCLGBGoogle Ads90 days

The list doesn’t describe what each cookie does, and we couldn’t confirm from official sources which parameter goes into which cookie. Cookies starting with “FP,” such as FPGCLAW, are names used with server-side tagging (see server-side GTM).

Do you need the Conversion Linker?

To track Google Ads conversions through GTM, you need either the Conversion Linker or a Google tag that runs on every page. Tag Manager Help says you don’t need the Conversion Linker if your container loads the Google tag on all pages. It recommends placing it on any page visitors may land on after an ad click, usually with the All Pages trigger.

When the gclid isn’t stored, or disappears early

Consent settings and browser protections can keep the gclid from being saved, or make it expire early.

  • Ad storage consent is denied: Google’s consent mode docs say that when ad_storage is denied, no new advertising cookies are set. Even then, turning on URL passthrough (url_passthrough) passes the gclid and similar values between pages on the same domain as URL parameters. What gets sent on denial also differs between basic and advanced consent mode.
  • Safari: cookies set with JavaScript last 7 days at most, and 24 hours on a page you land on from a domain classified as a tracker with parameters in the URL. The Google tag writes _gcl_aw in the browser, so these caps apply. In our view, landing pages from ad clicks often hit the 24-hour condition. More on this in third-party cookies.

Why the GCLID goes missing or isn’t added

Between the ad click and the purchase, the gclid can break at any of four points: being added to the URL, surviving to the landing page, being stored in a cookie, and carrying over to the purchase page.

Diagram of the four gates a gclid passes through from the ad click to the purchase. Gate 1 is the gclid being added to the URL; common causes of failure are auto-tagging being off, some iOS traffic getting wbraid instead of gclid by design, removal in Safari Private Browsing (reported), and third-party ad serving. Gate 2 is the gclid surviving to the landing page URL; causes are a redirect dropping the query string, a site that rejects arbitrary parameters and errors out, and case rewriting or the value being cut short of 100 characters. Gate 3 is the gclid being stored in a site cookie such as _gcl_aw; causes are no tag running on the landing page or the tag being in an iframe, denied ad storage consent, and Safari's 7-day cookie cap. Gate 4 is the gclid carrying over to the purchase page; causes are a landing page or checkout on a different domain and cross-domain linking not being set up. After all four, the tag on the thank you page sends the purchase with the click information.
The four points where a gclid breaks (As of October 2026. Created by ULTRO Inc. based on Google Ads Help, Google Analytics Help, Tag Manager Help and Google tag documentation. Click the image to enlarge.)

In table form:

Where it breaksCauseWhat happensFix
Not added to the URLAuto-tagging is offNo gclid; GA4 shows (not set) unless there are UTMsTurn on auto-tagging under Account settings > Auto-tagging
Not added to the URLiOS traffic from a handful of Google appswbraid instead of gclid. iOS 14.5+ clicks also get gbraid (sometimes with gclid)By design. Nothing to fix
Not added to the URLSafari Private BrowsingTracking parameters are removed from the URL before navigation. gclid is reported to be among themBy design. Use enhanced conversions to fill the gap
Dropped before landingA redirect (an automatic move from one URL to another; 301 and 302 are the response types) doesn’t carry the query string (the part after ?)The final page’s URL has no gclidPoint the ad at the final URL, or configure the server so redirects carry query parameters forward
Dropped before landingThe site doesn’t accept arbitrary URL parametersTurning on auto-tagging can produce error pagesTurn auto-tagging off temporarily, have your developer make the site accept parameters, then turn it back on
Dropped before landingThe server rewrites the URL and changes caseAnalytics can’t match the click to the session, and GA4 shows (not set)Don’t rewrite the gclid value
Dropped before landingLogs, storage or redirect systems truncate long valuesThe gclid gets cut offMake sure 100 characters fit
Not stored in a cookieNo tag runs on the landing page, or the tag is in an iframeThe gclid can’t be read. A child frame can’t read the parent page’s addressPut the tag on every landing page, in the parent page
Not stored in a cookieAd storage consent is deniedNo cookie is setBy design. Consider URL passthrough
Lost on another domainThe landing page and the purchase page are on different domainsThe new domain has no gclid cookieSet up cross-domain linking

On Safari Private Browsing, WebKit’s blog (July 2024) says Safari 17.0 and later remove a subset of query parameters identified as being used for cross-site tracking before navigation. WebKit hasn’t published the list, though. That gclid is on it has only been reported by third-party testing; we couldn’t confirm it from Apple’s own sources.

Most auto-tagging problems happen on the site side. When tracking suddenly breaks, the first thing we ask is whether the site’s redirects or URL structure changed around that time. Site redesigns and platform migrations are the usual culprits, and they break this kind of plumbing without raising any errors.

Manual UTMs and tracking templates

Adding UTM parameters doesn’t remove the gclid. GA4 gives priority to the gclid values, and only manual ad content and manual term use the values you tagged by hand.

What to watch is a tracking template (the Google Ads setting that adds tracking information to the click URL) that routes clicks through a third-party tracking service. If that service’s redirect doesn’t carry the query string, the gclid never reaches the final page. Both Google Ads and Merchant Center help say that when there’s a redirect, the gclid has to be passed through to the final page.

Landing pages on a different domain

If your ad points to a landing page on a different domain from your store, such as an advertorial page, the gclid cookie only exists on the landing page’s domain. Google tag docs say cross-domain measurement adds a _gl parameter to destination URLs to carry first-party cookie values from the original domain. The parameter is added at the time of the click and expires after two minutes.

In Tag Manager, turn on “Enable linking across domains” in the Conversion Linker and enter the destination domains under “Auto Link Domains.” The destination domain’s container needs linking across domains enabled too, so it can accept incoming linker parameters. For the GA4 side of the domain setup, see GA4 cross-domain tracking and unwanted referrals.

How to check whether the GCLID is getting through

Check in this order: the auto-tagging setting, the landing page URL, the tag request, then the GA4 reports. If it breaks at an early step, you can stop there.

  1. Check auto-tagging: in Google Ads, click the Admin icon, open Account settings, and in the Auto-tagging section, see whether “Tag the URL that people click through from my ad” is checked. If you have several accounts, check each one that runs ads.
  2. Check the gclid survives in the URL: following Analytics Help, append a test value such as gclid=TeSter-123 to your final URL (for example, https://your-store.com/?gclid=TeSter-123; if the URL already has a ?, join it with &) and open it, then see whether it’s still in the URL after the page loads. Open Chrome DevTools first (F12 on Windows, Option+Command+I on Mac) and select the Network tab before entering the URL, so the requests are recorded. If there’s a redirect, look for 301 or 302 responses in the Network tab and check that the gclid survives each leg. To test the 100-character case, use the long test value Google’s help article provides.
  3. Check the tag request includes it: in the same Network tab, filter for collect to find requests sent to GA4, and check that the page URL field (dl) includes the gclid. If there’s no request at all, the tag isn’t installed.
  4. Check the GA4 reports: look at Google Ads sessions and see whether Google Ads campaign and other dimensions show (not set).

A test value isn’t a real ad click. To check all the way to the conversion on the Google Ads side, connect Tag Assistant and place a test order. Google Ads Help also suggests clicking your own ad to check the site opens correctly, but those clicks cost money.

Using GCLID for offline conversion imports

For offline conversion imports, which send in-store or phone sales back to Google Ads, you capture the gclid at inquiry time and store it with the lead’s details. The usual approach is a hidden form field filled with the URL’s gclid value by JavaScript or GTM. When the deal closes, you send that gclid with the conversion action and time to Google Ads.

Here’s what Google’s help center and docs confirm:

ItemDetail
GCLID ageGoogle retains GCLIDs for only 90 days, so upload conversions within that window
How to uploadBy file or API. Since June 15, 2026, offline conversion imports are being moved to the Data Manager API and blocked in the Google Ads API. In the Google Ads API, developer tokens with no offline conversion uploads between December 17, 2025 and June 15, 2026 are restricted
IdentifiersThe Data Manager API’s offline docs send ad click identifiers along with other data. The Google Ads API docs say to send the gclid, if you have one, along with user identifiers
Using user-provided data tooGoogle Ads Help says advertisers who used first-party data such as email addresses and phone numbers with GCLIDs saw a median 10% increase in conversions compared with standard offline conversion imports

For an online store, this applies to phone orders and B2B orders that close after a quote. Ways to get web purchases the tags missed into Google Ads are compared in Google Ads conversion tracking.

How Shopify handles GCLID

On Shopify, connecting Google Ads through the Google & YouTube app installs the Google tag for you, so there’s no tag to paste into your theme to store the gclid. Beyond that, there are four Shopify-specific things to watch:

Watch out forWhat happensWhat to check
Shopify’s UTM reports don’t read gclidGoogle Ads traffic doesn’t show up in Shopify’s UTM-based reportsIf you want it in Shopify, add UTMs in the tracking template or final URL too
URL redirects only work from broken URLsShopify Help says you can redirect only from URLs that no longer load, and that URLs containing query strings might not work as expectedPoint ads at current URLs that don’t go through a redirect. Check no ads still point to old URLs
Custom pixels run in an iframeIf you install the GA4 tag in a custom pixel, the page URL it collects automatically isn’t the storefront page’s. GA4 uses the gclid in the URL to decide the sourcePass the storefront page’s page_location with your page view tag
Landing pages on another domainIf you build an advertorial landing page on a separate domain, the gclid cookie doesn’t carry over to the store’s domainSet up cross-domain linking, or build the landing page on the store’s domain

The behavior of Shopify’s UTM reports is what we saw in the Shopify admin; Shopify’s help center doesn’t describe how it determines the referrer. How to pass page_location from a custom pixel is in Shopify custom pixels. For the Google & YouTube app connection itself, see how to set up GA4 on Shopify.

If you load GTM in a custom pixel to track Google Ads conversions, also check that the Conversion Linker or the Google tag runs on every page. Installing a Google Ads purchase tag both through the Google & YouTube app and through another route causes double counting.

When Google Ads shows fewer purchases than Shopify

When Google Ads reports fewer purchases than Shopify has orders, first decide whether it’s a gclid problem or whether purchases aren’t reaching GA4 and your tags at all. No amount of gclid fixing adds purchases whose tag never ran.

Diagram that splits the problem in two by comparing GA4 purchases with Shopify orders when Google Ads shows fewer purchases than Shopify. If GA4 purchases are also lower than Shopify orders, the purchase tag may never have run, for example for buyers who don't return from off-site payment, ad blockers, or purchases completed inside AI or social apps; check next by matching each order ID with a GA4 transaction ID. If GA4 purchases are close to Shopify orders and only Google Ads is low, purchases arrive but aren't tied to ad clicks; check whether the gclid breaks along the way, ad storage consent, Safari's cookie cap and conversion windows. Google Ads and Shopify numbers never match exactly, so treat this as a rule of thumb.
How to split the problem when Google Ads shows fewer purchases than Shopify (As of October 2026. Created by ULTRO Inc. based on our own approach. Click the image to enlarge.)

Our dividing line is whether GA4 purchases are close to Shopify orders:

SituationLikely causeCheck next
GA4 purchases are also lower than Shopify ordersThe purchase tag never ran: buyers who don’t return from off-site payment, ad blockers, purchases completed inside AI or social apps, and so onMatch order IDs with GA4 transaction IDs one by one
GA4 purchases are close to Shopify orders, but Google Ads is lowPurchases arrive, but aren’t tied to ad clicksWhether the gclid breaks along the way, ad storage consent, Safari’s cookie cap, conversion windows

Google Ads and Shopify count on different dates and over different scopes, so their numbers never match exactly. Treat this split as a rule of thumb. The order of checks on the Google Ads side is in Google Ads conversion tracking.

If purchases aren’t reaching GA4 either, GA4 Not Tracking All Shopify Purchases? explains which purchases go missing and how to check. The mechanism for sending missing purchases to GA4 from a server is the Measurement Protocol.

One way to fill the GA4 side is our Shopify app, GapFill. It’s our own product, so read with that in mind. It recovers missing GA4 purchase events server-side and works alongside your existing tags. If your split lands in the first row (GA4 is low too), it matches Shopify orders against GA4 purchases by transaction ID and shows how many orders, and how much revenue, GA4 is missing. The missing purchases report is free. It adds purchases to GA4; it doesn’t send them to Google Ads directly.

Our Shopify appGapFill: Recover missing GA4 purchase events server-sideWorks alongside your existing tags. Free missing purchases report.See GapFill →

Sources

FAQ

What is a GCLID?

It's an ID Google Ads appends to your landing page URL when someone clicks an ad and auto-tagging is on. Short for Google Click Identifier, it looks like www.example.com/?gclid=123xyz. The Google tag on your site stores it in a cookie and uses it for conversion tracking and GA4 campaign data.

Can I stop Google Ads from adding gclid?

Yes. In Google Ads, go to Admin > Account settings > Auto-tagging and uncheck "Tag the URL that people click through from my ad." But conversion tracking, GA4 data and offline conversion imports depend on it, so you'd normally leave it on. It's on by default in new accounts.

Should I use gclid or UTM parameters?

Use auto-tagging (gclid) as the base for Google Ads. When both are present, GA4 uses the auto-tagged values for source, medium and other traffic-source dimensions. In our checks in the Shopify admin, though, Shopify's UTM-based reports don't read gclid, so if you want Google Ads sales in Shopify's reports, add UTMs too.

What are gbraid and wbraid, and how do they differ from gclid?

Both are Google Ads click parameters added in response to Apple's App Tracking Transparency. Google's help center says iOS traffic from a handful of Google apps doesn't get a gclid, and web conversions from it are measured with wbraid instead. gbraid is added to landing page URLs for iOS 14.5+ clicks when auto-tagging is on; it isn't a replacement for gclid, and the two can appear together.

Does a GCLID expire?

Google's list of advertising cookies gives _gcl_aw and related cookies a 90-day lifespan, and Google retains GCLIDs for offline conversion imports for only 90 days. In Safari, though, cookies set with JavaScript last 7 days at most, or 24 hours under some conditions, such as landing from an ad click.

My URL has a gclid, but GA4 shows (not set) for the Google Ads campaign. Why?

Common causes are GA4 and Google Ads not being linked, traffic from an unlinked Google Ads account, or a server rewriting the URL so the gclid's case changes. Google's help center says that if the case changes, Analytics can't match the click to the session, and campaign, ad group and keyword show (not set).

Key takeaways
  • GCLID is the click ID Google Ads auto-tagging adds to your landing page URL. It's stored in a first-party cookie (such as _gcl_aw) and ties purchases back to ad clicks.
  • It's used for three things: Google Ads conversion tracking, Google Ads campaign, ad group and keyword data in GA4, and offline conversion imports.
  • iOS traffic from a handful of Google apps gets wbraid instead of gclid. gbraid is added to iOS 14.5+ clicks, sometimes alongside gclid. Both are by design.
  • The gclid can break at four points: it isn't added to the URL, it's dropped before landing, it isn't stored in a cookie, or it doesn't carry over to another domain. Opening your URL with gclid=TeSter-123 appended lets you check.
  • When Google Ads shows fewer purchases than Shopify, first decide whether it's a gclid problem or whether purchases aren't reaching GA4 and your tags at all.

Written byRyushi Nagata

CEO, ULTRO Inc. (Tokyo)

Shopify Partner. Ryushi handles Shopify store builds, maintenance, advertising and CRM end to end, and has managed more than ¥4 billion in ad spend over his career. He holds Google Ads certifications (Search, Display, Video, Shopping, Apps, Performance Max, Measurement) and the Google Analytics certification.

How many purchases is GA4 missing in your store?

GapFill matches your Shopify orders against GA4 purchases, shows what GA4 missed, and recovers those purchase events server-side. It works alongside your existing tags, and the missing purchases report is free.

See GapFill →