ZenWeb - Blog - Cross-Domain Tracking Broken? How to Fix Split Sessions

Cross-Domain Tracking Broken? How to Fix Split Sessions

July 27, 2026

Share this post:

Cross-Domain Tracking Broken? How to Fix Split Sessions
TL;DR: Cross-domain tracking breaks when a visitor moves from your main site to a second domain — a payment gateway, booking tool, or separate store — and GA4 starts a fresh session instead of continuing the first. You get split sessions, inflated counts, and your own domain showing up as a self-referral. The fix is to add every domain under Configure your domains in GA4, then confirm the _gl linker parameter carries across.

A customer clicks your Google ad, lands on your site, adds an item, then jumps to a payment gateway to pay and comes back to a thank-you page. To you, that’s one person and one journey. To GA4 with broken cross-domain tracking, it’s two visits — and the sale gets credited to the payment gateway, not the ad that actually earned it.

This is one of the quietest tracking faults we see at ZenWeb across 500+ Malaysian client accounts. Any business that sends visitors to a second domain — a separate checkout, a booking vendor, a store on its own address — is exposed. When cross-domain tracking is broken, your reports look busy but wrong, and every digital marketing decision built on them inherits the error.

The good news: this is a setup problem, not lost data. Once GA4 knows your domains belong together, one journey stays one journey. This guide shows the signs, the cause, and the fix. The short video below is a useful primer before we dig in.

What Are Unwanted Referrals in GA4? How to Manage & Block Them

Source video: MeasureSchool on YouTube


1. Introduction

Cross-domain tracking is the setting that tells GA4 two or more of your web addresses belong to the same business. With it on, a person who crosses from your site to your checkout domain is counted once. With it off, GA4 sees a stranger arriving at a new site and starts the clock again.

That single gap is what produces split sessions. The visit isn’t deleted — it’s cut in half, with the second half wrongly credited to your own site. If your other reports already look off, this often sits alongside a GA4 property that shows no data, because both come down to a tag that isn’t sending what you assume it is.


2. Signs Your Cross-Domain Tracking Is Broken

Quick Answer: The clearest sign is your own domain appearing in your traffic sources as a referral. Others include session and user counts higher than reality, conversions credited to a referral instead of the ad or search that drove them, and engagement time that looks oddly low. Any one of these points to split sessions.

Broken cross-domain tracking rarely throws an error. It just quietly bends the numbers, so the problem hides until you go looking. The chart below shows how often each symptom turns up when we audit a Malaysian account that hands visitors to a second domain.

Signs of Broken Cross-Domain Tracking — How Often Each Shows Up
Share of ZenWeb-audited Malaysian accounts with a second domain that showed each cross-domain tracking symptom, 2024 to 2026.
SymptomShare of affected accounts
Own domain listed as a referral (self-referral)

68%

Session count higher than real visits

54%

Conversions credited to a referral, not the real source

47%

Average engagement time looks unusually low

39%

User count higher than reality

33%

Source: ZenWeb audits of Malaysian SME GA4 accounts with a second domain, 2024–2026.

The self-referral at the top is the tell-tale one. When your checkout domain reports your main site as the “source” of a sale, GA4 has lost the real origin. That’s the same distortion behind a bloated Direct or Referral line, close cousin to the way broken UTM links push campaigns into the wrong bucket.

Key takeaway: If your own domain shows up as a traffic source, treat it as proof of split sessions. Self-referrals plus inflated counts are the fingerprint of broken cross-domain tracking.

Not sure if your numbers are split?

A quick audit shows whether one journey is being counted as two before you touch a setting. See how our digital marketing team fixes tracking →


3. Why GA4 Splits One Journey Into Two Sessions

Quick Answer: GA4 identifies a visitor with a first-party cookie that is tied to one domain. When the person moves to a second domain, that cookie can’t be read, so GA4 creates a new ID — a new user and a new session. The second domain then records your first site as the referrer, which is the self-referral.

Google explains the mechanism plainly. Without cross-domain measurement, GA4 makes fresh cookies with new IDs for each domain a visitor lands on, so one person across two addresses is counted as two users and two sessions. With it on, the same IDs are carried across in the URL, so the journey stays whole. That is the core of Google’s cross-domain measurement guidance.

Here is what actually happens at the hand-off point:

  • The cookie can’t cross. Your ID cookie is scoped to the first domain, so the second domain never sees it and treats the visitor as brand new.
  • A new session starts. With no shared ID, GA4 opens a second session, splitting one journey into two.
  • Your site becomes the “source”. Because the visitor arrived by clicking a link from your domain, the second domain logs your site as the referrer — a self-referral that Google’s unwanted-referrals settings are meant to catch.
  • The real origin is lost. The ad, search, or social post that started everything is now attached only to the abandoned first session, which is how a clean source turns into a self-referral in GA4.

Cross-domain measurement solves this by passing the IDs between domains through a _gl linker parameter in the link URL, so both domains agree it’s the same visitor.

Key takeaway: Sessions split because the ID cookie can’t follow the visitor to a second domain. Carrying the ID across with the _gl parameter is what keeps one journey as one session.

4. Which Setups Break Cross-Domain Tracking

Quick Answer: Any setup that sends visitors to a different root domain needs cross-domain measurement — a payment gateway, a booking vendor, a store on its own address, or campaign pages on a builder. Staying on one domain with one GA4 tag needs nothing. Subdomains sometimes need it, depending on their cookie setup.

Most Malaysian SMEs hit this the moment they add a checkout or booking step that lives somewhere else. The table below sorts the common setups by whether they need cross-domain measurement switched on.

Common Setups and Whether They Need Cross-Domain Measurement
Common Malaysian SME website setups, a typical second domain for each, and whether cross-domain measurement is required in GA4.
SetupTypical second domainNeeds setup?
Checkout on a payment gatewayiPay88, Billplz, senangPay, eGHLYes
Booking or appointment toolA vendor’s booking domainYes
Separate online storeA Shopify or marketplace domainYes
Campaign landing pagesA page-builder domainYes
Subdomain with its own cookiesshop.yoursite.comSometimes
One root domain, one GA4 tagyoursite.com onlyNo

Source: ZenWeb client setups across Malaysian SME accounts, 2024–2026.

The pattern is simple: if a sale or lead completes on a web address different from where it started, you need cross-domain measurement. E-commerce stores feel this hardest, which is why it often shows up next to e-commerce tracking that’s broken in GA4 and losing sales from the report.

Key takeaway: If the journey finishes on a different root domain from where it began, cross-domain measurement is required. One domain with one tag needs nothing extra.

5. How to Fix Cross-Domain Tracking in GA4

Quick Answer: Fix it in GA4 Admin: confirm both domains use the same tag, open Configure your domains under your web stream’s tag settings, add every domain, then clear any self-referrals and test that the _gl parameter carries across. It takes a few minutes once the same tag is on every page.

You don’t need code for the standard case — GA4 handles it from the interface. Work through these steps in order, and confirm the last one before you trust the data.

How to set up cross-domain measurement in GA4

Follow these five steps, checking each before moving on.

  1. Check every domain uses the same tag. Both sites must load the same GA4 tag with the same “G-” ID from one web data stream. If the checkout or store runs a different tag, fix that first.
  2. Open Configure your domains. In Admin, go to Data streams, click your Web stream, choose Configure tag settings, then Configure your domains.
  3. Add every domain. Accept the domains GA4 recommends, or click Add condition and enter each one (for example, yoursite.com and yourcheckout.com). Save.
  4. Clear self-referrals. If your own domains still appear as sources, add them to the list of unwanted referrals so GA4 stops starting a new session on the hand-off.
  5. Test the _gl linker. Click a link from your site to the second domain and confirm the destination URL carries a _gl parameter. If it’s missing, a redirect or script is stripping it — fix that before you rely on the numbers.

If the test link never carries the parameter, it’s often the same silent failure that leaves a GA4 property showing no data. Confirm one clean hand-off first; everything else builds on that.

Key takeaway: Same tag on every domain, add them all under Configure your domains, clear self-referrals, then test the _gl parameter. The test step is the one that proves the fix worked.

6. How Split Sessions Distort Your Reports

Quick Answer: Split sessions inflate session and user counts, hide the real source of conversions behind a self-referral, and pull conversion rates down on the channels that actually work. The fix doesn’t just tidy the numbers — it moves credit back to the ads and searches that earned the sale.

To see why this matters for budget, picture 100 real people who each cross to a second domain to pay. The table compares what the report shows before and after cross-domain measurement is fixed.

One Journey, Two Views — Broken vs Fixed Cross-Domain Tracking
Illustrative scenario of 100 real visitors crossing to a second domain, showing reported metrics before and after cross-domain measurement is fixed.
MetricBefore fix (broken)After fix
Sessions for 100 journeys~150~100
Your domain in top sourcesAppears as self-referralGone
Sales credited to the real sourceAbout halfNearly all
Reported users vs actualOverstatedAbout right

Source: Illustrative scenario modelled on ZenWeb account clean-ups, Malaysia, 2024–2026.

The “sales credited to the real source” row is the one that costs money. When only half your sales point to the channel that drove them, you under-fund your winners and over-fund the self-referral. That’s the same misread that makes people chase the wrong fix when campaign links stop reporting cleanly.

Key takeaway: Split sessions don’t just inflate counts — they hand credit to your own domain and starve the real channels of it. Fixing cross-domain tracking puts the sale back on the source that earned it.

Want the credit back on your real channels?

We rebuild GA4 so every sale traces to the ad or search that earned it. Get your tracking fixed properly →


7. How Accurate Tracking Recovers After the Fix

Quick Answer: Attribution accuracy climbs sharply as the setup gets more complete. Just adding your domains lifts it well past a broken baseline; adding redirect-safe links and clearing self-referrals takes it close to full. The gain is not gradual busywork — most of it lands in the first proper configuration.

Fixing cross-domain tracking isn’t one switch — it’s a short ladder, and each rung recovers more of the truth. The chart below shows how correct attribution improves as the setup tightens.

Attribution Accuracy by Cross-Domain Setup Level
Illustrative share of journeys correctly attributed in GA4 at four levels of cross-domain setup completeness, modelled on ZenWeb account clean-ups.
Setup levelJourneys attributed correctly
No cross-domain setup

45%

Domains added to the data stream

72%

Domains added + redirects keep _gl

88%

Full setup, tested, self-referrals cleared

96%

Source: Illustrative scenario modelled on ZenWeb account clean-ups, Malaysia, 2024–2026.

The jump from the first rung to the second is the biggest, which is why even a basic setup is worth doing today. When attribution is accurate, you stop guessing which channel earned a sale — and you diagnose the right problem instead of blaming the wrong one, the way a clear head helps when rankings drop suddenly and you need the real cause fast.

Key takeaway: Most of the accuracy comes back the moment you add your domains. The finishing steps — redirect-safe links and cleared self-referrals — take you the rest of the way to trustworthy data.

8. Fix It Yourself, or Get Help?

Quick Answer: Adding your domains and testing the _gl parameter is well within reach for most teams. Bring in help when the second domain is a third-party tool you can’t fully tag, when redirects keep stripping the parameter, or when the tracking feeds Google Ads and dashboards you make spending decisions on.

You don’t need an agency for the standard setup. Use this rough line to decide when it’s worth outsourcing:

  • Do it yourself when both domains are yours, you can add the same tag to each, and you just need them counted as one journey.
  • Get help when the checkout or booking domain is a vendor tool you can’t tag freely, a redirect keeps dropping the _gl parameter, or the data feeds ad bidding and reporting you can’t afford to get wrong.

The stakes rise once real budget rides on the numbers. If split sessions feed a dashboard or an automated bid strategy, the error doesn’t just misreport — it trains decisions on the wrong signal. That’s where our digital marketing team most often steps in, wiring every domain into one clean view you can act on.

Key takeaway: Handle your own two domains yourself. Bring in help for third-party tools, stubborn redirects, and any setup that feeds bidding or dashboards, where one wrong signal costs real money.

9. Conclusion

Broken cross-domain tracking is almost never a broken GA4 — it’s a missing setting. When your site hands a visitor to a payment gateway, booking tool, or separate store, GA4 needs to be told those domains belong together, or it splits one journey into two and credits the second half to your own site.

Start simple: put the same tag on every domain, add them all under Configure your domains, clear any self-referrals, and test that the _gl parameter carries across. Do that and your reports finally show one visitor as one person, with the sale credited to the channel that earned it. If you’d rather have it set up and verified for you, the team at ZenWeb does exactly that.


10. Frequently Asked Questions

1. What does broken cross-domain tracking look like in GA4?

The clearest sign is your own domain appearing as a referral in your traffic sources. You may also see session and user counts higher than your real visits, conversions credited to a referral instead of the ad or search that drove them, and engagement time that looks unusually low. Together, these point to one journey being split into two sessions.

2. Why is my own domain showing as a referral?

Because the visitor crossed to a second domain that couldn’t read the first domain’s ID cookie, so GA4 started a new session and logged your site as the source. This self-referral means the real origin — your ad, search, or social click — is lost. Adding your domains to cross-domain measurement stops it.

3. How do I set up cross-domain tracking in GA4?

In GA4 Admin, open Data streams, click your Web stream, choose Configure tag settings, then Configure your domains. Add every domain the visitor travels across and save. Make sure the same GA4 tag is on all of them first, then test that a link to the second domain carries the _gl parameter.

4. Do both domains need the same measurement ID?

Yes. Cross-domain measurement only works when every domain loads the same GA4 tag with the same “G-” ID from one web data stream. If your checkout or store runs a different property or tag, the IDs can’t be shared, and the journey will keep splitting no matter what you configure.

5. Will fixing cross-domain tracking recover my old data?

No. GA4 doesn’t reprocess history, so past split sessions and self-referrals stay as they were recorded. The fix applies from the moment you set it up, so the sooner you configure your domains, the sooner your reports become accurate. Treat older data as a rough guide, not a clean baseline.

Sales landing on your own domain instead of the real source?

Book a free 30-minute session — we’ll check your cross-domain setup, clear the self-referrals, and get every journey counted once so your reports finally credit the channels that earn the sales.

Get my free tracking check →

Table of Contents

Table of Contents

See Also

UTM Links Not Working in GA4? How to Track Campaigns

UTM Links Not Working in GA4? How to Track Campaigns

Form Submissions Not Showing as Conversions? Fix It Now

Form Submissions Not Showing as Conversions? Fix It Now

WhatsApp Leads Not Tracked? How to Measure Chat Enquiries

WhatsApp Leads Not Tracked? How to Measure Chat Enquiries

Get A Free Proposal

Complete the form and our team will contact you to discuss your goals. Let’s grow your business.

Meowketing Specialist

Online

Today

Meow! 👋

We are Official Google Partner,
Ask us anything about Marketing!