Subdomains vs cross-domain: which tracking problem do you actually have?
blog.site.com and shop.site.com is a different tracking problem than site.com and checkout.otherbrand.com. Confusing the two leads to the wrong fix and split sessions.
Subdomains of the same registrable domain share cookies automatically, so GA4 tracks a visitor across them with no configuration at all. Genuinely different domains cannot share cookies at any level, so they need cross-domain configuration. Most people who think they have a cross-domain problem have a subdomain setup and are configuring something they do not need — while the ones who genuinely need it are quietly losing attribution.
Telling the two apart
The rule is the registrable domain — the part you bought.
Subdomains (share cookies automatically):
www.example.com ↔ shop.example.com
example.com ↔ app.example.com
uk.example.com ↔ de.example.com
Different domains (cannot share cookies):
example.com ↔ example.co.uk
example.com ↔ exampleshop.com
example.com ↔ bookings-provider.com
Country-code variants trip people up constantly: example.com and example.co.uk are entirely separate domains, not subdomains, despite looking related to a human.
What GA4 does by default
GA4 sets its cookie at the highest possible level of the registrable domain. A cookie set on www.example.com is written for .example.com, so shop.example.com reads the same client ID and the session continues seamlessly.
No configuration required. If you have added your own subdomains to the cross-domain list, it is harmless but pointless.
For genuinely separate domains, the cookie cannot be read, so GA4 sees a new visitor. The journey splits into two sessions and attribution for the second one is credited to a referral from your own first domain — the self-referral fingerprint.
Diagnosing which problem you have
Open your Traffic acquisition report and look at session sources:
- Your own domain appears as a referral → cross-domain problem. Configure it.
- Your own subdomain appears as a referral → unusual, and usually means something is interfering with cookie scope, such as a cookie set at too specific a level, a consent platform rewriting cookie scope, or a tag configured with an explicit narrow cookie domain.
- Neither appears → you probably do not have a problem, whatever anyone told you.
Second check, and the definitive one: navigate between the properties and compare the cid parameter on GA4 requests from each. Same client ID means the identity is continuing.
Subdomain issues that do exist
Subdomains work by default, but three things break them:
An explicitly configured cookie domain. If your GA4 tag specifies a cookie domain narrower than the registrable domain, subdomains stop sharing. The default of automatic is almost always correct.
Consent platforms rewriting cookies. Some CMPs set or clear cookies with different scoping per subdomain, which fragments the client ID. If your subdomains stopped sharing after a consent platform was installed, this is the first place to look.
Different measurement IDs per subdomain. Not a cookie problem — a configuration decision. Two subdomains reporting into two properties produce two disconnected data sets by design. Worth checking that it was actually a decision.
Configuring genuine cross-domain tracking
Two settings, both required:
- Admin → Data streams → Configure tag settings → Configure your domains. List every domain in the journey.
- List unwanted referrals, in the same tag settings. Add your own domains.
Skipping the second is the most common half-configuration: the client ID passes correctly, and the receiving domain still starts a new session attributed to a referral from the first. Cross-domain tracking in GA4 covers the full setup and verification.
The hostname dimension is your friend either way
Whether you run subdomains or separate domains, add hostname to your reporting habits. It answers questions that are otherwise surprisingly hard:
- Is staging sending data to production? A hostname that is not your live domain, appearing in your production property, means a test environment shares your measurement ID. Filtering that out is a five-minute fix once you can see it.
- Which subdomain does the converting traffic actually use? Blended reporting hides the answer.
- Is a staging or preview deployment being indexed? Unexpected hostnames with real organic traffic sometimes reveal a preview environment that search engines found.
Add it as a secondary dimension on your landing-page report and check it occasionally. On properties nobody has audited, it produces a surprise more often than not.
What neither approach fixes
Ad platform pixels. Google Ads and Meta need their tags present on the domain where the conversion happens. GA4 stitching a session does nothing for a pixel that is not on the converting page.
Third-party hosted checkouts you cannot instrument. If you cannot place a tag, no configuration helps. Server-side conversion tracking is the route there.
Cookie blocking. If the GA4 tag or its cookies are blocked, nothing works — cross-domain linking is not a workaround for blocked collection.
| Subdomains | Different domains | |
|---|---|---|
| Cookie sharing | Automatic | Impossible |
| GA4 config needed | None | Domains list + referral exclusions |
| Common failure | Explicit cookie domain, CMP interference | Missing referral exclusions |
| Symptom when broken | Subdomain as referral | Own domain as referral, split sessions |
FAQ
Do subdomains need cross-domain tracking in GA4?
No. Subdomains of the same registrable domain share cookies automatically. Configuring cross-domain tracking for them is unnecessary, though harmless.
Is example.co.uk a subdomain of example.com?
No — it is a completely different registrable domain and cannot share cookies with example.com at any level. It needs cross-domain configuration.
Why is my subdomain appearing as a referral source?
Usually an explicitly configured narrow cookie domain, or a consent platform rewriting cookie scope per subdomain. Check the tag's cookie domain setting first; automatic is almost always correct.
Should different subdomains use different GA4 properties?
Rarely. Separate properties mean separate data sets with no shared user journey. Use one property and a hostname dimension unless you have a genuine organisational reason to separate them.
Does cross-domain tracking fix my Google Ads conversions?
No. Ad platform pixels must be present on the domain where the conversion happens, independently of how GA4 stitches the session.
Check whether both your domains are loading the same GA4 property, and whether either loads it twice: the free tracking audit works on any URL.
See where your tracking stands
Run the same 13-check audit referenced in this post against any URL. No signup, results in seconds.