Google Analytics shipped a new diagnostic alert in the last days of July that flags properties where ad-click URLs are missing the GBRAID and gad_ aggregate identifiers. These are the parameters Google Ads attaches to a click so GA4 can stitch that click back to a campaign. Strip them out — through a redirect, a URL rewrite, a CDN rule, or an app deep link that drops query parameters — and the session doesn’t error out. It just quietly reclassifies itself as organic, or worse, “(not set)”. Your campaign reports keep working. They’re just wrong.
That’s what makes this a tracking problem rather than a one-off bug fix. Nothing crashes, nothing alerts, and the traffic doesn’t disappear — it moves. A team optimising acquisition spend off a dashboard that’s been silently under-counting paid conversions for months can end up cutting a channel that was actually working, or scaling one that wasn’t. Google surfacing this as a built-in diagnostic is itself a signal that the failure mode is common enough to warrant a native check, which means it’s worth auditing deliberately rather than waiting to be told.
Data Points to Track
- Presence of
gbraidandgad_source/gad_campaignidon landing-page and deep-link URLs immediately after an ad click, checked at the point of arrival rather than assumed from the ad platform’s side - Session default-channel-group distribution over time, watching for a step change in “Organic Search” or “(not set)” share that isn’t explained by a real shift in traffic mix
- Redirect and CDN rule inventory for any hop between the ad click and the landing page, since query-parameter stripping usually happens at a redirect, link shortener, or CDN edge rule rather than in application code
- App deep-link parameter survival rate, tracked separately from web, since Android/iOS deep-link handlers frequently drop query strings that a browser would preserve
- GA4’s own campaign diagnostics alert status for the property, checked on a schedule rather than only when someone happens to open Admin
Setup Steps
- Pull a sample of live ad-click URLs across your active Google Ads campaigns and confirm
gbraid(iOS/app) orgad_source/gclid(web) parameters are present at the point they reach your landing page or app, not just at the point Google Ads generates them. - Trace every redirect and CDN rule in the path between ad click and final destination — 301s, App Links intent filters, and edge rewrite rules are the most common places parameters get silently dropped.
- Add an automated check that fires when a session lands from a known ad-platform referrer but arrives without the expected attribution parameters, rather than relying on GA4’s own diagnostic to catch it after the fact.
- Segment channel-group trend reports by campaign launch/change dates, so a genuine dip in paid share isn’t confused with a parameter-stripping regression introduced by an unrelated infrastructure change.
- Re-test after any redirect, CDN, or deep-link configuration change, since this class of bug is almost always introduced by infrastructure teams who have no visibility into what a marketing attribution parameter is for.
Actionable Insights
A sudden rise in “(not set)” or organic share right after a CDN migration, redirect consolidation, or app deep-link update is close to diagnostic on its own — check parameter survival before assuming the traffic mix genuinely changed. Comparing paid spend against GA4-reported paid sessions and Google Ads’ own click counts for the same campaign and date range is a fast sanity check: a persistent gap between the two, where Ads reports clicks GA4 never attributes, points straight at parameter loss rather than a real drop in conversion. And once fixed, expect a step change back in the other direction — campaigns that looked underwater on a broken attribution pipeline can turn out to have been performing fine all along.
Related Resources
Need help tracking this in your app?
Our team sets up analytics pipelines for mobile and web teams every day. Talk to us and get your first events flowing in under an hour.
Talk to an expert