Safari broke GCLID. Google broke it more. Now they’re fixing it.
If you’ve been on LinkedIn or Reddit the past weeks, you’ve seen the panic. Safari’s privacy changes made GCLID tracking unreliable. That meant broken attribution pipelines everywhere.
Google’s answer was GBRAID and WBRAID, their “privacy-safe” IDs. The problem? Half of Google’s own stack didn’t work with them. Enhanced Conversions for Leads failed. One-per-click counting failed. Custom variables failed.
Teams like ours spent weeks building workarounds. Dual upload systems. Split pipelines. Documentation full of strange error codes. It wasn’t pretty.
Here are the key conflicts we kept running into:
Only one click ID per conversion. If you sent gclid and gbraid together, Google rejected it.
Enhanced Conversions couldn’t run with gbraid or wbraid.
Custom variables broke if braid parameters were present.
One-per-click actions weren’t allowed with braid at all.
Duplicate or expired clicks triggered endless retries.
Some of these errors weren’t even in the developer docs. They just happened.
In the table below we listed all the known conflicts for Google Ads API conversion monitoring, and the once we encountered. This will be updated once we have received new information. The last update is from the 16th of September 2025
Conflict Type | Conflicting Fields/Values | Error Message | Resolution |
---|---|---|---|
Click ID Conflicts |
+
|
| Use only one click ID per conversion |
+
|
| Use only one click ID per conversion | |
+
|
| Use only one click ID per conversion | |
Enhanced Conversions for Leads |
/
+
|
| Remove
field when using gbraid/wbraid |
/
+ Enhanced Conversions for Leads |
| Enhanced Conversions for Leads cannot use gbraid/wbraid | |
Conversion Action Type |
/
+ One-per-click counting |
| Change to
counting |
Wrong conversion action type for Enhanced Conversions |
| Ensure conversion action type is
| |
Custom Variables |
/
+
|
| Remove
when using gbraid/wbraid |
Enhanced Conversions for Web |
/
+ Enhanced Conversions for Web |
| Enhanced Conversions for Web not supported with gbraid/wbraid |
Temporal Conflicts |
before click time |
| Set conversion time after click time |
Click older than lookback window |
| Use conversion action with longer lookback window | |
Duplicate Conflicts | Same
for multiple conversions |
| Use unique order IDs |
Same click ID + conversion time + action |
| Adjust conversion_date_time or verify if retry | |
Multiple conversions in same request |
| Remove duplicates from request | |
Account/Access Conflicts | Wrong customer ID for click |
| Use correct customer ID that owns the click |
Conversion action not found/enabled |
| Enable conversion action in correct account | |
Customer data terms not accepted |
| Accept customer data terms | |
Consent Conflicts | Setting consent to
|
| Set to
if consent status unknown |
Call Conversion Conflicts |
= false for call conversions |
| Set to true for WEBSITE_CALL/AD_CALL types |
Attribution Model Conflicts | Invalid attribution model |
| Use only
or
|
What changed on October 3
Google quietly rolled out support for GCLID + GBRAID together. That’s big. Instead of patching leaks, we can now rebuild for completeness. link
On top of that, a new attribute appeared: session_attributes (support documentation). It gives additional context when click IDs are missing. Think:
Campaign source and ID
Landing page URL and referrer
Session start timestamp
User agent
No cookies required. You can capture it with a small JavaScript helper or pipe it into Offline Conversion Import as key/value pairs.
This matters because when GCLID fails, Google’s AI can still model conversions from these rich signals. That means more attributed conversions, better bidding, and a setup that can handle future privacy shifts.
What we’re doing at Spectacle
We’ve been capturing all of these events since 1 August. Every Spectacle account now sends:
Click IDs (gclid, gbraid, wbraid)
Session attributes for extra context
Conversion metadata like order ID and timestamp
All of this flows through server-side conversion tracking. That means cleaner, deduplicated events go straight from your Spectacle account into Google.
The result:
Better conversion monitoring — fewer gaps in your reporting.
Stronger ad signals — platforms optimise on real outcomes, not partial data.
Improved marketing performance — smarter bids, more revenue impact.
For us, this shift has actually made things easier. By sending higher-quality data directly, our pipelines are simpler and our attribution more durable.
Why this matters
The story isn’t just “Safari broke GCLID.” It’s that most conversion architectures were fragile. Google’s fixes (finally) give us tools to build something more durable.
At Spectacle, we’ll keep documenting conflicts and resolutions so our clients don’t have to reinvent the wheel. Next up, we’ll share example code snippets and GTM recipes you can use to capture session_attributes yourself.