Skip to main content
gbraid and wbraid attribution issuesDiagnosis and fix

Why do gbraid and wbraid break my Google Ads attribution?

gbraid and wbraid are Google click identifiers that arrive in place of gclid on iOS traffic where Apple's privacy rules prevent the usual user-level identifier. They are not drop-in replacements: they identify a group of clicks rather than an individual, they cannot be combined with user-provided data the way gclid can, and capture code that names only gclid ignores them entirely. The result is a growing share of iOS conversions that never get uploaded, which looks like iOS performing badly rather than iOS not being measured. The fix is to capture all three parameters, store whichever arrived, and upload against the right one.

Free30 minutesNo obligation

gbraid and wbraid attribution issues · what breaks

What this looks like when it's happening to you — gbraid and wbraid attribution issues

  1. 01

    iOS campaigns look far worse than Android

    Not because they perform worse, but because a share of their conversions never gets recorded at all.

  2. 02

    Offline uploads rejecting rows with no clear reason

    Rows uploaded against the wrong identifier type fail, and the error text does not always make the cause obvious.

  3. 03

    Identifier coverage that fell over time with no code change

    As iOS traffic share grew, the proportion of clicks arriving with gclid shrank.

gbraid and wbraid attribution issues · the fix

What changes once it's fixed — gbraid and wbraid attribution issues

  • All three identifiers captured

    gclid, gbraid and wbraid, with whichever arrived stored on the record.

  • Uploads sent against the correct identifier

    Each row using the parameter that actually arrived, not a guess.

  • Honest reporting of what cannot be joined

    gbraid and wbraid do not identify a person. Enhanced conversions for leads does not apply to them the way it does to gclid, and pretending otherwise produces silent failures.

gbraid and wbraid attribution issues · architecture

Why your conversion data was wrong in the first place — gbraid and wbraid attribution issues

Fixing this specific fault is worth doing. But it is worth understanding why it happened, because the same underlying weakness produces a different symptom every few months — and the reason your conversion data is wrong is almost never the tag itself.

  1. 1

    Your conversion depends on a browser that is being restricted on purpose

    A browser-side tag has to survive the page loading, the visitor staying, the script executing and the request leaving. Every one of those is now contested. The order in your database is certain; the browser event reporting it is not, and that gap is where wrong numbers come from.

  2. 2

    Safari caps the cookie your attribution depends on

    Intelligent Tracking Prevention limits cookies written by JavaScript to seven days, whatever expiry you set. Any customer who takes longer than a week to decide comes back as a stranger, so the sale is recorded and credited to nobody. A cookie your own server writes in an HTTP response is not subject to that cap — which is the single largest practical difference between browser-side and first-party server-side tracking.

  3. 3

    Ad blockers remove the tag before it can run

    A blocked pixel does not error, retry or warn anyone. The visitor buys, the order lands in your store, and no platform ever hears about it. First-party events sent from your own subdomain aren't filtered the same way, because they are not a third-party request.

  4. 4

    Consent banners stop tags, sometimes when they didn't need to

    Where consent is genuinely required, losing the event is correct. What is not correct — and what we find repeatedly on US-majority accounts — is an EU-style prior-consent banner applied to every visitor, discarding conversions no law asked you to discard. A server container enforces the real decision at the container rather than hoping each vendor script honours a flag.

  5. 5

    The checkout can end somewhere your tag isn't

    Wallets and hosted payment pages can be abandoned after the money moves. The customer paid; the confirmation page never rendered; the browser event never fired. Sending the purchase from the order record instead means the conversion arrives whether or not anyone came back to your site.

  6. 6

    What that adds up to

    Each of these is a separate route to gbraid and wbraid attribution issues, and they compound. First-party server-side tracking doesn't patch them one at a time — it moves the money event off the browser entirely, so the order in your backend is what gets reported. That is why we reconcile against your own order records and put 95%+ accuracy in writing: with the event sourced from the order, the number is checkable rather than hopeful.

gbraid and wbraid attribution issues · normal or broken

Some of this is supposed to happen — gbraid and wbraid attribution issues

Half the time nothing is broken and the number is being read wrong. Knowing which is which stops you paying to fix something that was never a fault.

Normal, not a fault

  • Working

    Records carry whichever of the three identifiers arrived, with the type stored alongside, and uploads route by type.

  • Broken

    Records carry gclid or nothing. iOS conversions look like they did not happen.

  • Broken but invisible

    Coverage looks acceptable overall because desktop traffic dominates the average, while the iOS segment specifically is close to zero.

Actually broken

  • Capture code written before gbraid and wbraid existed

    The overwhelmingly common cause. The code works, has always worked, and quietly stopped covering a growing share of traffic.

  • A third-party plugin or tag template that only knows gclid

    Plenty of form and CRM integrations still capture one parameter. Check what yours actually reads rather than what its documentation implies.

  • Auto-tagging disabled

    No identifier of any kind arrives. Worth ruling out first because it takes thirty seconds and explains everything at once.

  • Uploads sent with the value in the gclid field regardless of type

    Rows fail and the failure is reported as unmatched rather than as a format problem.

  • Redirects or a landing page framework stripping query parameters

    The parameter arrives and is discarded before anything reads it.

gbraid and wbraid attribution issues · diagnose

How we find out why do gbraid and wbraid break my google ads attribution

Always in this order. Each step eliminates a class of cause, so by the last one there is usually a single explanation standing.

  1. 01

    Confirm auto-tagging is on in every Google Ads account

    One setting, and switching it off removes conversion attribution, enhanced conversions and offline import together.

  2. 02

    Pull your last few hundred records and count identifier types

    How many carry gclid, how many gbraid, how many wbraid, how many nothing. That distribution is the whole diagnosis.

  3. 03

    Read the capture code and check which parameter names it reads

    If gbraid and wbraid are not in it, you have found the cause and can stop.

  4. 04

    Compare the identifier distribution against your iOS traffic share

    They should be broadly consistent. A large iOS share with almost no gbraid or wbraid means capture, not traffic.

  5. 05

    Check the upload's failure rows, not its success count

    A file can upload successfully and match nothing. The per-row errors say which.

  6. 06

    Test a live iOS click end to end

    Click an ad from an iPhone, complete a conversion, and follow the identifier through to the record.

gbraid and wbraid attribution issues · prove

How we prove it's actually fixed — gbraid and wbraid attribution issues

The tag firing again proves the tag fires. These prove the numbers are right.

Source of truth

Your own records, counted by identifier type, next to your Google Ads traffic split by device and platform

  • The identifier type distribution measured across your last few hundred conversions, before and after the fix.
  • A live iOS click followed end to end, with the parameter that arrived confirmed on the record and in the upload.
  • Reconciled against your own records, counted by identifier type, next to your google ads traffic split by device and platform for a fully closed window, matched on ID rather than on totals.
  • No record counted twice, checked across the whole window rather than spot-checked.
  • The same check repeated 30 days later, because a fix that holds once and drifts is the harder failure to catch.

gbraid and wbraid attribution issues · free audit

What we check in the free audit

  • Confirm auto-tagging is on in every Google Ads account
  • Pull your last few hundred records and count identifier types
  • Read the capture code and check which parameter names it reads
  • Compare the identifier distribution against your iOS traffic share
  • Check the upload's failure rows, not its success count
  • Test a live iOS click end to end

Checked against

Your own records, counted by identifier type, next to your Google Ads traffic split by device and platform

Get my free conversion tracking audit

Free30 minutesNo obligation

gbraid and wbraid attribution issues · when not to buy

When you don't need us for this — gbraid and wbraid attribution issues

Most of these you can do yourself, and we would rather you did.

  • Confirm auto-tagging is enabled in every account. Thirty seconds, and it is a surprisingly common cause.
  • Search your capture code for the string gbraid. If it is not there, you have your answer without any further investigation.
  • Count the identifier types on your last hundred conversions. That single number tells you the size of the problem.

gbraid and wbraid attribution issues · what we deliver

What we do about it — gbraid and wbraid attribution issues

  • Widen the capture to all three parameters

    One line of logic instead of one parameter name. This alone recovers most of the loss.

  • Store which type arrived

    The upload needs to know whether it is sending a gclid, a gbraid or a wbraid. Storing the value without the type creates a problem later.

  • Route uploads by identifier type

    Google's import accepts each, in its own field. Mixing them produces rejected rows.

  • Set expectations on what wbraid can and cannot do

    It is a privacy-preserving aggregate identifier. Some user-level features are unavailable with it by design, and that is not a bug to work around.

Pricing

Pick the package that fits your ad spend

Browser-side starter

$400One-time fee · lifetime ownership

We fix the fault in your existing browser-side setup and verify it on a live transaction. Honest disclosure: this repairs what you have, it does not make it durable. If you spend $1K+/month on paid media, the fault will recur the next time Safari, a consent banner or a checkout change moves under you — the server-side tier is what stops that.

  • Root cause found and fixed, not worked around
  • Verified on a live transaction, not in preview
  • Reconciled against your own order records
  • Written handover documenting what changed and why
Fix what I have

1st-party server-side

Recommended

$800One-time fee · most popular

The tier that removes the whole class of failure rather than this instance of it. Your money events stop depending on the browser: they are sent from your order records through a first-party server container on your own subdomain, so iOS, ad blockers, consent banners and interrupted payment redirects can no longer take them away. Built in 2–4 days. You own the stack outright — no monthly SaaS.

  • First-party server container on your own subdomain
  • Purchases sent from your order records, not the browser
  • Meta, Google, TikTok, Microsoft and LinkedIn all fed server-side
  • Deduplicated on a shared event ID, verified at every destination
  • First-party cookies beyond Safari's 7-day cap on JavaScript-set cookies
  • 95%+ conversion accuracy and 8+ Meta EMQ, guaranteed in writing
Rebuild it server-side

Full 1st-party stack

$1,800One-time fee · lifetime ownership

Every paid-media channel server-side, end to end, plus the offline loop. For advertisers whose spend makes an attribution leak more expensive than the build. Pay once, own everything.

  • Everything in 1st-party server-side
  • Pinterest, Snapchat, Reddit and LinkedIn CAPI
  • CRM and offline conversion loop, so closed revenue reaches bidding
  • Refunds and cancellations reversed at every destination
  • Klaviyo identity stitching, BigQuery and Looker Studio
  • Monitoring, so the next break surfaces in days rather than a quarter
Get the full stack

FAQ

gbraid and wbraid attribution issues questions, answered

Both arrive on iOS traffic where a user-level identifier is not available. In broad terms they cover different traffic contexts — gbraid on app-related traffic and wbraid on web traffic under those privacy constraints. For implementation purposes the important part is that both are aggregate rather than user-level, both must be captured, and each must be uploaded in its own field. Check Google's current documentation for the precise definitions, which have been refined over time.

Free · 30 min

Get gbraid and wbraid attribution issues diagnosed properly

Free30 minutesNo obligation