---
title: 'GBRAID vs WBRAID vs GCLID: differences and URL checks'
description: 'Learn what GBRAID and WBRAID mean in Google Ads, how they differ from GCLID, and how to check that redirects and lead forms preserve them.'
canonical: 'https://plainrouter.com/library/gbraid-wbraid'
format: Guide
published_at: '2026-09-19'
last_updated: '2026-10-08'
---

# GBRAID vs WBRAID vs GCLID: differences and URL checks

**GBRAID and WBRAID are Google Ads measurement parameters that can appear in URLs.** Google's iOS guidance introduces GBRAID for web-to-app measurement and WBRAID for app-to-web measurement. They are distinct from GCLID: keep the original parameter names when handling them. [Google's iOS measurement guidance](<https://support.google.com/analytics/answer/11367152>).

GBRAID is not limited to app journeys. Google's current offline-conversion guidance also covers website campaigns where GCLID might be lost. A missing ` gclid ` is therefore a reason to inspect the actual landing URL, not immediately declare tracking broken. [Google's GBRAID setup guide](<https://support.google.com/google-ads/answer/17371255>).

## What is the difference between GCLID and GBRAID?

GCLID is Google's click identifier, while GBRAID supports aggregate measurement and is not unique to a user or individual event. Keep GBRAID in its own field rather than substituting it for GCLID; [Google's GBRAID definition](<https://support.google.com/google-ads/answer/16297842>) explains this distinction.

## What is the difference between GBRAID, WBRAID, and GCLID?

| Parameter | Measurement context | Implementation consequence |
| --- | --- | --- |
| ` gclid ` | Google's click identifier for ad measurement | Keep it in its own field; see the [GCLID reference](</library/gclid>) for click-ID and redirect examples. |
| ` gbraid ` | Web-to-app measurement in Google's iOS explanation; also website campaign measurement in its current GBRAID setup guide | Preserve it even when ` gclid ` is present. Do not make it a unique user or event key. |
| ` wbraid ` | App-to-web measurement in Google's iOS explanation | Preserve the ` wbraid ` field instead of putting its value into ` gclid `. |
| ` utm_campaign ` and other UTMs | Campaign labels chosen by the advertiser | Keep labels separately; they do not replace Google's measurement parameters. |

The web-to-app/app-to-web distinction explains the original iOS flows; it is not an exhaustive rule for every URL you will encounter. Google's [conversion-import reference](<https://developers.google.com/google-ads/api/docs/conversions/upload-offline>) also describes cases where both GCLID and GBRAID belong to a conversion.

These are Google measurement parameters; Meta's [fbclid](</library/fbclid>) is a separate click identifier in a landing URL.

## Is GBRAID unique to each click or user?

**No. Google describes GBRAID as non-unique, without a link to an individual user or event. It is also case-sensitive.** Do not use it as a database primary key, a customer identifier, or the sole key for deduplicating purchases. [Google's GBRAID definition](<https://support.google.com/google-ads/answer/16297842>).

For example, a table with a unique constraint on ` gbraid ` could reject a later legitimate lead carrying the same value. Give your business records their own IDs and keep measurement fields as context. This is an application-design consequence of the documented non-unique behavior, not a Google-prescribed database schema.

Do not assume that WBRAID is a unique business-event identifier either. Use your own order or lead identity to distinguish actions, and the destination's documented rules to handle conversion retries.

## What do GBRAID and WBRAID look like in a URL?

These values are fictional and only demonstrate query handling:

```text
https://shop.example/start?plan=team&gbraid=Demo-Braid_123#plans
https://shop.example/start?plan=team&wbraid=Demo-Web_456#plans
```

The query starts at ` ? `; ` & ` separates parameters; ` #plans ` is a fragment. The parameter name tells you which field you received. The value should be handled as opaque data, rather than decoded into a campaign name or customer identity.

Keep the original value, including case. A fictional value can test your redirects and forms, but cannot establish a real Google Ads conversion. Do not paste these samples into live campaign settings or replace real values with them.

## How do you check whether redirects preserve the parameters?

Use a staging page or another test destination you control. You do not need to click a paid ad.

1. Open browser developer tools, select **Network**, and enable **Preserve log**.
1. Load the first synthetic URL above, adapted to your test domain.
1. Inspect each document redirect's ` Location ` header and the following request URL.
1. Compare the final decoded parameter value with the original. Also check that ` plan=team ` still arrives.
1. Repeat with the WBRAID example. Then test a URL containing both a fictional ` gclid ` and ` gbraid ` to catch code that keeps only the first recognized field.
1. Check any client-side navigation after the page loads. A router can remove the query even when the HTTP redirects preserve it.

A broken redirect might produce:

```text
Before: /start?plan=team&wbraid=Demo-Web_456
After:  /pricing?plan=team
```

The expected destination retains the field:

```text
/pricing?plan=team&wbraid=Demo-Web_456
```

Find the first hop that drops it. Inspect hostname, HTTPS, locale, short-link, and login-return rules there. Google's [missing Ads data guidance](<https://support.google.com/analytics/answer/13367418>) recommends testing whether a fictional GCLID survives with its symbols and capitalization intact. Apply the same transport check to these synthetic parameters.

## What should your form or CRM preserve?

Check the whole path from landing URL to the record your integration uses:

- **Separate fields:** retain ` gclid `, ` gbraid `, and ` wbraid ` under their actual names. A single fallback field such as “first available click ID” loses which kind it was.
- **Original values:** do not lowercase, uppercase, truncate, or double-decode identifiers. Use a URL parser rather than splitting the query manually.
- **Ambiguous input:** flag repeated values for the same parameter name during testing; do not silently choose a different one at each layer.
- **Business identity:** keep the lead/order ID separate from the measurement parameters.
- **Collection controls:** apply your existing consent and retention rules before persisting or forwarding advertising context. A parameter in a URL is not a consent signal.

Google's [GBRAID setup instructions](<https://support.google.com/google-ads/answer/17371255>) cover passing it through forms and retaining it alongside other available signals. Follow the contract of the import method you actually use. Google currently recommends Data Manager for GBRAID imports; this guide is about inspecting the context, not a complete upload implementation.

## Why is the parameter present but a conversion missing?

| Observation | Next check |
| --- | --- |
| Parameter disappears before the landing page | First redirect or URL-rewrite rule that removes it |
| URL contains it but the submitted form does not | Form field mapping and whether navigation removed the context |
| Backend receives it under ` gclid ` | Field mapping: restore the original identifier type |
| Two leads have the same GBRAID | Do not discard one solely on that basis; check their business IDs |
| Synthetic value survives every hop | URL transport works; this does not test real attribution |
| Real context arrives but a conversion is absent | Conversion-action configuration, permitted collection, import diagnostics, and the selected method's supported fields |

For setup choices, compare [server-side tracking tools](</library/server-side-tracking-tools>). These Google measurement guides do not describe a Plainrouter Google Ads delivery integration.

## Should you add GBRAID or WBRAID manually to ads?

Do not invent values. Preserve the identifiers Google supplies. For campaign labels, configure UTMs and supported placeholders using the [Google Ads tracking-template guide](</library/google-ads-tracking-template>). For a landing URL containing GCLID instead, use the [GCLID redirect checks](</library/gclid>).

## Frequently asked questions

### What is WBRAID?

WBRAID is a Google Ads measurement parameter introduced for app-to-web measurement in Google's iOS guidance. It can appear in a landing URL and should remain in its own ` wbraid ` field; see [Google's iOS measurement guidance](<https://support.google.com/analytics/answer/11367152>).

### What does a GBRAID look like?

In a URL it appears as ` gbraid= ` followed by an opaque value, for example the clearly synthetic ` https://shop.example/start?gbraid=EXAMPLEgbraid123 `. See [the existing URL examples](<#what-do-gbraid-and-wbraid-look-like-in-a-url>); preserve the value's case and do not interpret it as a customer identity.

### What does gad\_campaignid mean?

` gad_campaignid ` identifies the Google Ads campaign that drove the click; it is not a unique visitor or click identifier. Google's [aggregate identifiers guidance](<https://support.google.com/analytics/answer/16479993>) says conversions from the same campaign share the value and recommends preserving ` gad_* ` parameters through redirects.

## Sources

Official references checked September 19, 2026:

- [Google Analytics: iOS campaign measurement](<https://support.google.com/analytics/answer/11367152>)
- [Google Ads: GBRAID URL parameter](<https://support.google.com/google-ads/answer/16297842>)
- [Google Ads: set up offline conversions using GBRAID](<https://support.google.com/google-ads/answer/17371255>)
- [Google Ads API: manage offline conversions](<https://developers.google.com/google-ads/api/docs/conversions/upload-offline>)
- [Google Analytics: missing Ads data and redirect checks](<https://support.google.com/analytics/answer/13367418>)
