Skip to main content
Cross-Domain TrackingIdentity across the hop

Get your Cross-Domain Tracking tracking to 95%+ accuracy guaranteed in writing.

The moment a visitor leaves your domain for a hosted checkout, a booking widget or a payment gateway, the browser treats the return trip as a brand new visit from a new referrer. The ad click that paid for the sale is attached to a session that ended two pages ago. We make the identity survive the hop — and clean up the self-referrals already polluting your reports.

Free30 minutesNo obligation

Cross-Domain Tracking · what breaks

The tell-tale signs of a broken hop — Cross-Domain Tracking

  1. 01

    checkout.stripe.com or paypal.com is a top referrer

    A self-referral means the session was cut and restarted at the return leg. Every purchase that follows gets credited to the payment page, and your paid campaigns look worse than they are while direct traffic mysteriously converts brilliantly.

  2. 02

    Sessions per user is inflated and duration is nonsense

    One human buying one thing registers as two or three sessions — arrive, bounce to checkout, return, complete. Your funnel reports, engagement metrics and any audience built on session behavior are working from a split person.

  3. 03

    Someone "fixed" it with referral exclusions alone

    Excluding the gateway domain stops the new session from being labeled a referral, so it becomes direct instead. The session is still broken; you've only changed what the report calls it. The linker parameter is what actually stitches the visit together.

  4. 04

    Subdomain and cross-domain treated as the same problem

    shop.yoursite.com and yoursite.com share a registrable domain and just need the right cookie scope. yoursite.com and yourbooking.io are genuinely different origins and need the linker. Applying the wrong fix to the wrong case wastes a week and leaves the gap open.

Cross-Domain Tracking · the fix

What changes when the visit stays one visit — Cross-Domain Tracking

  • One session, one user, from ad click to receipt

    The linker passes the client ID and session ID across the hop so GA4 stitches the journey. Landing page, campaign and source stay attached to the purchase instead of resetting at the gateway.

  • Your gateway disappears from the source report

    With the linker doing the work and exclusions configured to match, the payment or booking domain stops appearing as a traffic source at all — because it was never a traffic source, only a detour.

  • gclid and fbclid survive the round trip

    Click IDs captured at landing are persisted first-party and re-read at conversion, so the Google Ads and Meta conversions carry the click even when the purchase completes on someone else's domain.

  • Multi-domain businesses get one honest funnel

    If you run a marketing site, a separate app domain and a third-party scheduler, they finally report as one property with one user journey rather than three unrelated audiences.

Cross-Domain Tracking · architecture

How one visit stays one visit across three different domains

There are only three fixes here and they are not interchangeable: cookie scope for subdomains, the linker for true cross-domain hops, and a server-side path for gateways that give you nothing.

  1. 1

    Map every hostname between click and receipt

    Trace real buyer journeys and list every domain and subdomain they touch, including the legacy scheduler and the financing partner nobody remembers.

  2. 2

    Decide per hop: cookie scope or linker

    Subdomains share a registrable domain and need the cookie set there. Genuinely different origins need the linker, and applying either fix to the wrong case wastes a week.

  3. 3

    Decorate on the way out, read on the way in

    The sending page appends the _gl parameter to the outbound link and the receiving container reads it, adopting the same client ID and session ID.

  4. 4

    Persist click IDs independently of the hop

    gclid, wbraid, gbraid, fbclid and msclkid are stored first-party at landing so the conversion still carries the click even when the linker is stripped.

  5. 5

    Fire the conversion from the order webhook

    Where the gateway offers no tag slot at all, the backend sends the conversion server-side, which needs no cooperation from the vendor.

Cross-Domain Tracking · events

What happens at each hop, and what carries the identity — Cross-Domain Tracking

The last row is the symptom you are paying to remove, not something we build.

page_view (landing)The ad click arrives on your domaingclid, wbraid, gbraid, fbclid, msclkid, page_referrerBrowser, stored first-party
begin_checkoutThe visitor leaves for the hosted checkoutvalue, currency, items[], client_id and session_id passed in _glBrowser, on the decorated link
checkout_returnThe buyer lands back on your confirmation URL_gl accepted, client_id adopted, session continuedBrowser
purchaseThe gateway webhook confirms paymentvalue, currency, transaction_id, items[], stored gclid and fbclidServer
appointment_bookedA third-party scheduler confirms the slotbooking_id, value, currency, stored click IDsServer, from the scheduler webhook
consent_updateA CMP choice is made on either domainad_storage, analytics_storage, ad_user_data, ad_personalizationBrowser, on both domains
session_start (unwanted)The return leg arrives without the linkerpage_referrer = checkout.stripe.com or paypal.comBrowser, the symptom we remove

Cross-Domain Tracking · prove

How we confirm the hop stopped cutting the session — Cross-Domain Tracking

This one is easy to verify and easy to fake. A clean referral report alone proves nothing if the exclusions are doing the hiding.

Source of truth

Charges in your payment gateway, or confirmed appointments in your booking tool

  • Check the GA4 referral report: after launch the gateway and booking domains should not appear as sources at all.
  • Run a real purchase through each gateway and watch client_id stay constant across the hop in DebugView.
  • Repeat on Safari and in the Instagram and Facebook in-app browsers, where the linker fails differently.
  • Compare GA4 purchases with gateway charges by day, and watch sessions per user fall back toward normal.
  • Strip the _gl parameter deliberately and confirm the conversion still carries gclid from the server-side path.
  • Reread the referral exclusion list against the domain map and delete entries that no longer describe a real hop.

Cross-Domain Tracking · free audit

What we check in the free audit

  • checkout.stripe.com or paypal.com is a top referrer
  • Sessions per user is inflated and duration is nonsense
  • Someone "fixed" it with referral exclusions alone
  • Subdomain and cross-domain treated as the same problem

Checked against

Charges in your payment gateway, or confirmed appointments in your booking tool

Get my free conversion tracking audit

Free30 minutesNo obligation

Cross-Domain Tracking · when not to buy

When there is no hop worth paying us to fix — Cross-Domain Tracking

Check your own referral report before you book anything.

  • Your whole funnel lives on one domain and checkout is embedded on-site. There is no hop, so there is nothing to stitch.
  • Your referral report is clean and sessions per user looks sane. That is the diagnosis; spend the budget elsewhere.
  • You want historical reports corrected. GA4 does not reprocess, so this fixes data going forward and nobody can fix the past.
  • The only break is between subdomains you control. That is a cookie-scope change your own developer can make in an afternoon.

Cross-Domain Tracking · what we deliver

What the cross-domain build includes

  • Domain map of the full conversion path

    Every hostname a buyer touches between ad click and confirmation, including the ones nobody remembers — the legacy scheduler, the financing partner, the older campaign microsite still running ads.

  • Linker configured on both sides of every hop

    Cross-domain works only when the sending page decorates the link and the receiving page reads the parameter. We configure both ends, including on hops where we only control one side and have to work with the vendor's settings.

  • Cookie scope corrected for subdomains

    Where the hop is between subdomains, we set the cookie at the registrable domain so the client ID persists naturally — and remove any linker misapplied there, which causes its own problems.

  • Referral exclusions aligned with the linker

    Exclusion lists updated to match the real domain map, so they support the linker instead of masking its absence. We document why each entry exists, which is what stops someone re-adding noise in six months.

  • Click ID persistence and server-side continuity

    gclid, wbraid, gbraid, fbclid and msclkid captured at landing and stored first-party through your own subdomain, then attached to the conversion event server-side regardless of which domain it completed on.

  • Live-fire validation on real payment paths

    We run genuine transactions through each gateway and each device combination, including Safari and in-app browsers, and show you the session staying intact in the DebugView and the report.

Written guarantee

95%+ tracking accuracy

Measured against Charges in your payment gateway, or confirmed appointments in your booking tool. Miss it and we keep working at no cost.

Get my free conversion tracking audit

FAQ

Cross-Domain Tracking questions, answered

Usually, yes. Most hosted checkouts and booking tools expose either a GTM slot, a cross-domain setting, or the ability to append parameters to the return URL. Where the vendor gives you none of those, the fallback is server-side: capture the click ID at landing, store it first-party, and fire the conversion from your backend when the order webhook arrives. That path doesn't need the vendor's cooperation at all.

Free · 30 min

Check your referral report before we talk

Free30 minutesNo obligation