One user counted as two: cross-domain measurement in GA4
When the journey jumps between domains, GA4 may create a new client_id on the second one. How to configure the domains and check that _gl gets through.
- The user browses brand.com and clicks to book on a second domain, bookings-brand.com.
- On the second domain GA4 creates another _ga cookie: a new client_id, a new session and brand.com as the referrer.
- The cause: the domain is not in the tag settings, or a redirect drops the _gl parameter.
- The fix: with both domains configured, the link carries _gl and the destination reuses the same client_id.
- To check it, follow the real link through all its redirects and compare the client_id on both domains.
Many companies spread the buying experience across several domains: the brand site on one, bookings or payment on another, a blog on a third. For the user it is a single journey. For GA4, unless it is configured, they are separate visits from different users, because cookies set on one domain can’t be read from another.
What happens when the user jumps to another domain
The user browses brand.com and clicks to book on bookings-brand.com. Their _ga cookie doesn’t exist on the second domain, so GA4 creates a new one with another client_id. The result:
- One user counts as two.
- The session breaks at the jump between domains.
- The conversion on the second domain is credited to
brand.com / referral, that is, to your own site, instead of to the campaign or channel that brought the user.
Why GA4 creates a new client_id on the second domain
GA4 solves this with the _gl linker parameter, which the tag adds to links between configured domains and which carries the user’s identifier. It usually fails for one of two reasons:
- The domains are not configured in the Google tag, so links are not decorated with
_gl. - The parameter gets lost on the way. A server redirect that drops URL parameters, a link built by JavaScript after the tag has decorated the page, or a form that isn’t decorated can land the user on the destination without
_gl.
How to spot broken cross-domain tracking
- Click the real link between domains and look at the destination URL: it must include
?_gl=1*…. Check the final URL after any redirect, too. - Compare the
_gacookie on both domains. The middle number (theclient_id) must be identical. - In the reports, look for your own domain as a referral source:
brand.com / referralwith conversions is a clear sign.
How to set up cross-domain measurement in GA4
- Admin → Data streams → web stream → Configure tag settings → Configure your domains.
- Add every domain that is part of the journey, with the right condition (for example, contains
brand.comand containsbookings-brand.com). - Make sure redirects keep URL parameters, and that links built dynamically exist before the user clicks them.
Both domains must send data to the same web stream with the same Google tag. If each domain has its own property, cross-domain linking can’t join the journeys.
Google’s documentation: Set up cross-domain measurement.
How to check that _gl gets through
- Follow the whole journey with DebugView open: the user must appear with the same identifier before and after the jump.
- The
client_idin the_gacookie must match on both domains. - Over the following days, your own domain should stop showing up as the referral source of conversions.
Domains configured for cross-domain measurement are no longer treated as referrals, so there is no need to add them to the unwanted referrals list as well.