The Situation
A B2B SaaS company with a marketing site on www.company.com and an app on app.company.com was seeing 30% of their sign-ups attributed to "direct" traffic in GA4. The marketing team suspected their campaigns were driving more conversions than the data showed, but couldn't prove it.
What We Found
- GA4 cross-domain tracking was configured for the root domain but the
_gllinker parameter was being stripped by their CDN's URL normalization rules on subdomain redirects - Users who clicked a Google Ad, landed on
www., and then signed up onapp.were losing their attribution data at the handoff - Enhanced measurement was auto-tracking outbound clicks and creating duplicate events
What We Did
- Fixed the CDN configuration to preserve
_glparameters on subdomain redirects - Implemented server-side session stitching via sGTM as a backup for cases where the linker parameter still gets stripped
- Cleaned up Enhanced Measurement settings to prevent duplicate event tracking
- Built a BigQuery validation query that compares GA4 attribution against the CRM source field
Before & After
| Metric | Before | After |
|---|---|---|
| Traffic attributed to "direct" | 34% of sign-ups | 11% of sign-ups |
| Google Ads attributed conversions | 89/month | 142/month (+60%) |
| Attribution confidence (GA4 vs CRM match) | 52% agreement | 91% agreement |
Outcome
Marketing could finally prove ROI on their Google Ads spend. The 60% increase in attributed conversions wasn't new conversions — they were already happening. The team had been underreporting performance and was close to cutting budget on their best-performing channel.