Google Ads server-side: gclid, gbraid, wbraid and Enhanced Conversions
24 Sep 2026 · 3 min read · Neill Brookman
Google Ads conversion tracking rests on two things: the click identifier that arrives with the visitor, and, for Enhanced Conversions, hashed customer data that lets Google match a conversion when the click is missing. Both are easy to lose in the browser and straightforward to keep on the server.
Three click IDs, not one
With auto-tagging on, Google adds a click identifier to the landing URL:
- `gclid` for most clicks;
- `gbraid` and `wbraid` for some iOS traffic, where Google uses aggregated identifiers instead.
Like every click ID, they appear only on the landing page. In a browser setup the conversion linker reads them into JavaScript cookies, which are lost when the Google tag is blocked and deleted by Safari after 7 days without a return visit.
Datafly.js reads gclid, gbraid and wbraid on landing, and the gateway stores them in a server-set first-party cookie on your own domain for up to 400 days. A conversion weeks later is matched to the click that started it.
Enhanced Conversions: the hashing has to be exact
Enhanced Conversions (and Customer Match) match on SHA-256 hashes of customer data: email, phone, first name, last name and address fields. The normalisation before hashing is where most implementations go wrong:
- trim whitespace and lower-case before hashing;
- phone numbers in E.164 format;
- Gmail addresses have extra rules for dots and
+aliases before the@; - country code and postal code stay unhashed.
A different character means a different hash and a silent non-match. Datafly Signal applies these rules once, in the organisation’s data layer, before delivery, so raw customer data never leaves your infrastructure and every Google integration hashes the same way.
Offline conversions and Enhanced Conversions for Leads
For lead generation, the valuable conversion is usually offline: a qualified lead or a closed deal in your CRM. The same pipeline that collects web events accepts server-to-server events from your CRM and matches them to the original gclid when it is known, or to hashed customer data through Enhanced Conversions for Leads when it is not. Smart bidding can then optimise towards revenue rather than form fills.
Consent
For users in the EEA, the UK and Switzerland, Google expects Consent Mode v2 signals with conversions. Server-side, the signals that count are ad_user_data and ad_personalization; see Consent Mode v2 server-side. Datafly Signal decides consent on the server before delivery and sets those signals from the same decision.
Do you still need gtag.js and the conversion linker?
For conversion tracking, no. Their jobs (reading click IDs into cookies, firing conversions) move to the server, which removes 80 KB or more of JavaScript per page. Run both paths during migration, then switch the browser tag off conversion by conversion.
Checklist
- Make sure auto-tagging is on.
- Capture
gclid,gbraidandwbraidon landing and keep them for your buying cycle. - Normalise customer data exactly before hashing.
- Send CRM milestones as offline conversions.
- Send
ad_user_dataandad_personalizationfrom your consent decision.
See how Google Ads server-side tracking works in Datafly Signal, or read the Google Ads integration docs.
Want more posts like this?
No spam newsletter, no drip campaigns. If you want technical posts on server-side data infrastructure, bookmark /blog or follow the RSS feed.