GCLID vs GBRAID vs WBRAID Explained
Google Ads now uses three different click IDs. Learn what gclid, gbraid, and wbraid are, how they differ, and why capturing all three matters for attribution.
Tilen Ledic
Written by
If you run Google Ads for an e-commerce store, you have probably noticed something odd in your landing page URLs. Some clicks arrive with a familiar gclid parameter. Others show up with gbraid or wbraid instead. And if your tracking setup only captures gclid, you are silently losing attribution data on a large chunk of your ad traffic.
I've been digging into this since we started building attribution tracking at Enalitica, and the short version is: Google now uses three different click identifiers depending on the device, the browser, and the user's privacy settings. Most e-commerce tracking setups only handle one of them.
This article breaks down what each parameter is, when Google sends it, and what happens to your attribution data if you only capture gclid. I will also cover how all three work with offline conversion tracking and the Google Ads API, because that is where it gets practical.
The Quick Comparison
Before diving into details, here is an overview of all three click IDs:
| GCLID | GBRAID | WBRAID | |
|---|---|---|---|
| Full name | Google Click Identifier | Google Browser/Brand Ad ID | Web Brand Ad ID |
| Introduced | 2005 | May 2021 | March 2021 |
| Tracking model | Deterministic (user-level) | Aggregated (cohort-level) | Aggregated (cohort-level) |
| Identifies individuals | ✓ | ✗ | ✗ |
| Platforms | Desktop, Android, opted-in iOS | iOS Safari, macOS Safari | iOS app-to-web |
| Character length | 25-100 | ~80-150 | ~80-150 |
| Google-side expiration | 90 days | 90 days | 90 days |
| Safari cookie lifespan | 24 hours (ITP) | 7 days (ITP) | 7 days (ITP) |
| Chrome cookie lifespan | Up to 90 days | Up to 90 days | Up to 90 days |
| Conversion processing time | Under 12 hours | Up to 72 hours | Up to 72 hours |
| Enhanced Conversions for Leads | ✓ | ✗ | ✗ |
| Campaign types | All | Search, Shopping, Display, PMax | YouTube, Display, Demand Gen |
The pattern is clear: gclid is the gold standard with full data, but it only works when Apple allows it. gbraid and wbraid are privacy-safe alternatives that Google created specifically for iOS users who denied tracking permission.
What Is GCLID?
GCLID (Google Click Identifier) is the original click tracking parameter that Google Ads has used since 2005. When someone clicks your ad and auto-tagging is enabled (which is the default), Google appends a unique identifier to the landing page URL:
https://your-store.com/product?gclid=EAIaIQobChMI5_Xq8pL2...
That encrypted string contains detailed data about the click: the campaign, ad group, keyword, match type, ad creative, device type, geographic location, and the exact timestamp. You cannot decode this yourself. Only Google's servers can read it. But when you send the gclid back to Google via conversion tracking, they match it to the original click and give you precise, click-level attribution.
GCLID is the backbone of how Google Ads tracks conversions. It allows exact click-to-conversion mapping. You know which keyword, which ad, and which campaign drove each sale.
Where GCLID works
GCLID gets generated on desktop browsers (Chrome, Firefox, Edge, Opera), Android devices, and iOS devices where the user has opted in to tracking via Apple's App Tracking Transparency prompt.
Where GCLID breaks
Here is the problem. Since iOS 14.5 (released April 2021), Apple requires every app to ask users for permission before tracking them across apps and websites. This is the ATT (App Tracking Transparency) framework. When a user taps "Ask App Not to Track," Google cannot generate a gclid for that click.
Current opt-in rates are roughly 25-35% on average. That means about 65-75% of iPhone users deny tracking, and their ad clicks arrive without a gclid.
In the United States, where iOS holds approximately 59% of mobile market share, this is a significant blind spot. If your store only captures gclid, you are potentially missing attribution on a large portion of your mobile Google Ads traffic.
There is another problem on top of that. Safari's Intelligent Tracking Prevention (ITP) classifies gclid as "link decoration" from a known tracking domain, reducing JavaScript cookie lifespan to just 24 hours. So even when a gclid is present, if the customer does not buy within 24 hours on Safari, you lose the ID.
What Is GBRAID?
GBRAID (Google Browser/Brand Ad ID) is a privacy-preserving click identifier that Google introduced in May 2021 as a direct response to Apple's ATT framework. When a user on iOS denies tracking permission and clicks a Google ad, the landing page URL gets a gbraid parameter instead of gclid:
https://your-store.com/product?gbraid=0AAAAADw7i1pQwFjZGE1YmU4...
The critical difference: gbraid does not identify individual users. It represents an aggregated, cohort-level signal. Google uses de-identification techniques so the parameter is privacy-safe under Apple's policies while still allowing conversions to be attributed to the correct campaign, ad group, and keyword.
How GBRAID differs from GCLID
With gclid, you get deterministic, user-level tracking. One click, one unique ID, one conversion path. With gbraid, attribution is modeled and aggregated. Google can still tell you which campaign drove the conversion and calculate your ROAS, but it cannot provide the same granular user journey analysis.
For most e-commerce stores, this difference does not matter in practice. You care about knowing which campaigns are profitable and which keywords convert. gbraid gives you that. What you lose is the ability to trace an individual customer's exact path from click to purchase, which is something few store owners actually do.
When Google sends GBRAID
gbraid appears on clicks from Search, Shopping, Display, and Performance Max campaigns when:
- The user is on iOS 14.5+ (all browsers, since Apple requires WebKit for all iOS browsers)
- The user denied ATT tracking permission
- Auto-tagging is enabled in Google Ads
It also appears on macOS Safari for the same privacy reasons.
GBRAID parameter length
The gbraid parameter is variable in length, typically between 80 and 150 characters. If you are storing it in a database, use a field of at least VARCHAR(255) to be safe. Google has not published an official maximum, and the length can vary across campaigns and regions.
What Is WBRAID?
WBRAID (Web Brand Ad ID) was introduced slightly earlier than gbraid, in March 2021. It serves a different flow: app-to-web conversion tracking on iOS.
Here is the specific scenario. A user is browsing YouTube, scrolling through Gmail, or viewing ads in Google Discover (all of these are apps). They see your ad and tap it. The link opens in their mobile browser, and the URL contains a wbraid parameter:
https://your-store.com/product?wbraid=CjkKCwjw8pu...
Like gbraid, the wbraid parameter is aggregated and privacy-preserving. It does not identify individual users. It uses the same cohort-level attribution model.
How WBRAID differs from GBRAID
The key distinction is the traffic source:
- GBRAID: web-to-web. User clicks ad in a browser (Google Search, Shopping, Display) and stays in the browser.
- WBRAID: app-to-web. User clicks ad in an app (YouTube, Gmail, Discover) and goes to the browser.
For e-commerce stores, gbraid is typically more common because most Google Ads traffic for e-commerce comes from Search and Shopping campaigns (web-to-web). But if you run YouTube ads, Demand Gen campaigns, or Display ads in app inventory, wbraid will show up in your landing page URLs.
WBRAID parameter length
Similar to gbraid, the wbraid parameter is typically 80 to 150 characters long. Use the same VARCHAR(255) database field recommendation.
Processing time
One practical note: conversions attributed via wbraid (and gbraid) can take up to 72 hours to process in Google Ads reporting. This is significantly longer than the typical under-12-hour processing for gclid conversions. So do not panic if your ROAS numbers look different on Monday morning for weekend iOS traffic.
Why This Matters for Your Store
Let me put some real numbers on this. If your store gets significant mobile traffic from Google Ads:
| Scenario | Desktop + Android | iOS (opted in) | iOS (opted out) |
|---|---|---|---|
| Click ID received | gclid | gclid | gbraid or wbraid |
| User-level data | ✓ | ✓ | ✗ |
| Campaign attribution | ✓ | ✓ | ✓ |
| ROAS calculation | ✓ | ✓ | ✓ |
If you only capture gclid, the entire "iOS (opted out)" column becomes invisible. Those customers still buy. Your ads still work. But your tracking says they came from "direct" or "organic" traffic. Your reported ROAS drops, you undervalue your Google Ads campaigns, and you might cut budget on campaigns that are actually profitable. This problem gets worse if you rely on last-click attribution alone. A multi-touch attribution approach that distributes credit across all three click IDs gives you a much more accurate picture of campaign performance.
How big is this gap? It depends on your market:
| Market | iOS mobile share | Estimated traffic with gbraid/wbraid |
|---|---|---|
| United States | ~59% | 35-45% of mobile ad clicks |
| United Kingdom | ~52% | 30-40% of mobile ad clicks |
| Australia | ~55% | 33-42% of mobile ad clicks |
| Germany | ~35% | 20-28% of mobile ad clicks |
| Slovenia | ~25% | 15-20% of mobile ad clicks |
In the US market, you could be blind to attribution on roughly 40% of your mobile Google Ads traffic if you only capture gclid. That is a significant gap.

How to Capture All Three Click IDs
The good news: capturing gbraid and wbraid works exactly the same way as capturing gclid. They are all URL parameters. Your tracking code just needs to look for all three.
If you are running a WooCommerce store, we wrote a complete guide to capturing click IDs in WooCommerce that covers three methods from simple to comprehensive. The JavaScript approach in that guide already handles gclid, fbclid, msclkid, and ttclid. Here is how you extend it to include gbraid and wbraid:
// Capture all Google Ads click IDs (gclid, gbraid, wbraid)
// plus Meta (fbclid), Microsoft (msclkid), TikTok (ttclid)
//
// IMPORTANT: In opt-in countries (EU/UK/CH/BR), this code must only
// run AFTER the user gives cookie consent.
(function() {
var params = ['gclid', 'gbraid', 'wbraid', 'fbclid', 'msclkid', 'ttclid'];
var url = new URL(window.location.href);
params.forEach(function(param) {
var value = url.searchParams.get(param);
if (value) {
localStorage.setItem('enalitica_' + param, JSON.stringify({
value: value,
timestamp: Date.now(),
expiry: Date.now() + (90 * 24 * 60 * 60 * 1000)
}));
document.cookie = 'enalitica_' + param + '=' + value +
'; path=/; max-age=86400; SameSite=Lax; Secure';
}
});
// Restore cookies from localStorage if Safari ITP cleared them
params.forEach(function(param) {
var stored = localStorage.getItem('enalitica_' + param);
if (stored) {
try {
var data = JSON.parse(stored);
if (data.expiry > Date.now()) {
if (!document.cookie.includes('enalitica_' + param)) {
document.cookie = 'enalitica_' + param + '=' + data.value +
'; path=/; max-age=86400; SameSite=Lax; Secure';
}
} else {
localStorage.removeItem('enalitica_' + param);
}
} catch(e) {}
}
});
})();
And the corresponding PHP to save all three to WooCommerce orders:
// Save all click IDs (including gbraid, wbraid) to order meta
add_action('woocommerce_checkout_order_created', function($order) {
$params = ['gclid', 'gbraid', 'wbraid', 'fbclid', 'msclkid', 'ttclid'];
foreach ($params as $param) {
$cookie_name = 'enalitica_' . $param;
if (isset($_COOKIE[$cookie_name]) && !empty($_COOKIE[$cookie_name])) {
$value = sanitize_text_field($_COOKIE[$cookie_name]);
$order->update_meta_data('_' . $param, $value);
}
}
$order->save();
});
For Shopify stores, the approach is different. Shopify uses cart attributes written via JavaScript. The same principle applies: read all three parameters from the URL and store them as cart attributes so they persist through checkout.
Database field sizing
If you are designing a custom solution, here are the recommended field sizes:
| Parameter | Minimum field size | Recommended field size |
|---|---|---|
| gclid | VARCHAR(100) | VARCHAR(255) |
| gbraid | VARCHAR(150) | VARCHAR(255) |
| wbraid | VARCHAR(150) | VARCHAR(255) |
| fbclid | VARCHAR(150) | VARCHAR(255) |
Google has not published official maximum lengths for gbraid and wbraid. Using VARCHAR(255) for all click ID fields is the safest approach.
Sending Click IDs Back to Google Ads (Offline Conversions)
All three click IDs can be sent back to Google Ads for offline or server-side conversion tracking. This is how you close the attribution loop: capture the click ID at landing, store it with the order, then send it back to Google with the conversion value.
How it works with the Google Ads API
When uploading a ClickConversion to the Google Ads API, you set one of these fields:
gclidfor standard click conversionsgbraidfor iOS browser-to-browser conversionswbraidfor iOS app-to-web conversions
As of October 2025, Google now allows gclid and gbraid to be set simultaneously on the same ClickConversion message. Previously, setting both would return a FieldError.VALUE_MUST_BE_UNSET error.
What you cannot do with GBRAID and WBRAID
There are important limitations:
| Feature | GCLID | GBRAID | WBRAID |
|---|---|---|---|
| Upload offline conversions | ✓ | ✓ | ✓ |
| Enhanced Conversions for Leads | ✓ | ✗ | ✗ |
| Custom conversion variables | ✓ | ✗ | ✗ |
| One-per-click conversion counting | ✓ | ✗ | ✗ |
| User identifiers forwarded | ✓ | ✗ | ✗ |
The biggest practical limitation: Enhanced Conversions for Leads does not work with gbraid or wbraid. If your business relies on lead-form conversions (rather than e-commerce purchases), this is a gap you need to plan around.
For e-commerce stores, the standard offline conversion upload works fine with all three IDs. You send the click ID, conversion timestamp, conversion value, and currency code. Google handles the attribution.
Privacy and Consent
The consent requirements for click ID tracking vary dramatically by country. In the EU, UK, Switzerland, and Brazil, all three click IDs require user consent before you can store or process them. In the US, Australia, and most of Canada, you can track by default with an opt-out option.
One important nuance: even though gbraid and wbraid are privacy-preserving from Apple's perspective, they still count as non-essential tracking under the ePrivacy Directive. Storing any click ID in cookies or localStorage requires consent in opt-in countries. The "privacy-safe" label refers to how Google handles the data on their side, not whether you need consent to collect it.
Google Consent Mode v2
When a user denies consent in an opt-in country, Google Consent Mode v2 redacts all click IDs from network requests. This means no gclid, no gbraid, and no wbraid. Google then applies conversion modeling to estimate the missed conversions, but this requires a minimum of 700 ad clicks over 7 days per country and domain.
What Is Coming: iOS 26 and Safari 26
Apple announced at WWDC in June 2025 that Safari 26 (shipping with iOS 26) will expand its Link Tracking Protection feature. Here is what the testing shows:
- In Private Browsing mode, Safari strips
gclid,dclid,fbclid,msclkid, andttclidfrom URLs automatically - In regular browsing,
gclidis not stripped by default, but users can enable "Tracking & Fingerprint Protection" in Safari Advanced settings to strip it gbraidandwbraidsurvive across all browsing modes, including Private Browsing with full protection enabled- UTM parameters are not affected by any of these changes
This reinforces the trend: gclid is becoming less reliable on Apple devices with each iOS update, while gbraid and wbraid are designed to work within Apple's privacy framework. If you are not capturing all three today, the gap in your attribution data will only grow.
Frequently Asked Questions
What is gbraid and what does it stand for?
gbraid stands for Google Browser/Brand Ad ID. It is a privacy-preserving click identifier that Google appends to landing page URLs when a user on iOS (or macOS Safari) clicks an ad but has denied tracking permission via Apple's App Tracking Transparency. Unlike gclid, it does not identify individual users. It uses aggregated, cohort-level data to attribute conversions to the correct campaign and keyword while complying with Apple's privacy requirements.
What is the difference between gbraid and wbraid?
The difference is the traffic flow. gbraid handles web-to-web clicks: a user searches on Google in their browser, clicks your ad, and stays in the browser. wbraid handles app-to-web clicks: a user sees your ad inside an app (YouTube, Gmail, Google Discover), taps it, and the link opens in their browser. For e-commerce stores, gbraid is more common because most Google Shopping and Search traffic is web-to-web.
What is the maximum length of gbraid and wbraid parameters?
Google has not published official maximum lengths. In practice, gbraid values range from approximately 80 to 150 characters, and wbraid values fall in the same range. For comparison, gclid can be 25 to 100 characters. If you are designing a database schema, use VARCHAR(255) for all click ID fields to be safe.
Can I use gbraid and wbraid with offline conversion tracking?
Yes. Both gbraid and wbraid can be uploaded to the Google Ads API as ClickConversion entries for offline conversion tracking. You set the gbraid or wbraid field (instead of gclid) along with the conversion timestamp, value, and currency code. Since October 2025, you can even set gclid and gbraid simultaneously on the same conversion entry.
Do gbraid and wbraid work with Enhanced Conversions for Leads?
No. This is a significant limitation. Enhanced Conversions for Leads, custom conversion variables, and one-per-click conversion counting are only supported with gclid. If your business depends on lead-based conversions, this is a gap to be aware of. For standard e-commerce conversion tracking (purchase events with a value), all three click IDs work.
Does Google Analytics 4 recognize gbraid and wbraid?
Yes. GA4 can read gbraid and wbraid parameters from landing page URLs. However, because these are aggregated identifiers, GA4 uses modeled attribution for the associated conversions rather than deterministic tracking. You will see the traffic and conversions in your GA4 reports, but the user-level journey data will not be as detailed as with gclid traffic.
What does a gbraid value look like in a URL?
A typical URL with gbraid looks like this:
https://your-store.com/product?gbraid=0AAAAADw7i1pQwFjZGE1YmU4LTRhODktNGRmZS05ZjZhLWVjZmU4NzE3YmZmZQ
The value is a Base64-encoded string that Google generates. You cannot decode it or extract any meaningful data from it. It is meant to be stored and sent back to Google's conversion tracking API.
Why do some URLs show both gad_source=1 and gbraid?
The gad_source parameter is a separate Google Ads parameter that indicates the ad click came from a Google property. It is not a click ID and does not replace gclid, gbraid, or wbraid. You may see URLs like ?gad_source=1&gbraid=0AAAA... where both are present. Your tracking should capture the click ID (gbraid in this case) and can ignore gad_source.
How long does it take for gbraid/wbraid conversions to appear in Google Ads?
Conversions tracked via gbraid or wbraid can take up to 72 hours to process and appear in Google Ads reporting. This is significantly longer than gclid conversions, which typically process in under 12 hours. Plan your reporting accordingly, especially if you are checking weekend or campaign launch performance.
Will gbraid and wbraid survive iOS 26's Link Tracking Protection?
Based on testing with iOS 26 betas, yes. Apple's expanded Link Tracking Protection in Safari 26 targets known cross-site tracking parameters like gclid, fbclid, and msclkid in Private Browsing mode. However, gbraid and wbraid are designed to comply with Apple's privacy framework and are not stripped. This makes them increasingly important as Apple tightens tracking restrictions.
Should I store gclid, gbraid, and wbraid in separate database fields?
You could use a single field with a "type" column, but separate fields are simpler and more common. A typical schema uses three columns: _gclid VARCHAR(255), _gbraid VARCHAR(255), and _wbraid VARCHAR(255). Only one will be populated per click. When sending conversions back to Google Ads API, you set the corresponding field based on which value is present.
I only see gclid in my data. Does that mean gbraid/wbraid is not working?
Not necessarily. If your traffic is mostly desktop or Android, gclid will dominate. gbraid and wbraid only appear for iOS and macOS Safari traffic where the user denied ATT tracking. Check your Google Ads reports for the "Device" segment. If you have significant iOS traffic but zero gbraid/wbraid values in your order data, your tracking code is probably not capturing those parameters.
See your real numbers
Enalitica tracks orders server-side and shows you exactly which campaigns drive revenue. See what's possible in your market.
Book a Demo