Google Analytics

Created 20 August 2026 • Updated 20 August 2026

Cross Domain Tracking

Because the booking engine runs on a different domain (live.high-level-software.com) to your hotel website, GA4 treats these as separate sessions by default, which breaks the end-to-end journey. Cross domain tracking fixes this, stitching both domains together so GA4 recognises the guest's full path from your website through to booking completion.

Cross Domain Tracking Topics

Setup

Cross domain tracking is the most common reason purchase data does not appear in GA4. Complete this step even if pageviews are already showing correctly

Step 1 - Configure GA4

Navigate to Admin → Data Streams → Select Your Stream

Follow these steps to configure GA4:

  1. Click Configure Tag Settings | Configure Your Domains

  2. Add both domains:

    • Your hotel website

      and

    • high-level-software.com

  3. Click Save

Step 2 - Add Ads Conversion Linker (if running Google Ads)

In GTM, create an Ads Conversion Linker tag and add both your hotel domain and high-level-software.com to the domain list. Set the trigger to fire on all pages across both domains.

Step 3 - Keep the original traffic source across the domain jump

Adding both domains in Step A is only half the job. GA4 also has to carry the visitor’s identity - and with it their original source (Organic, Paid, Direct, etc.) - across the jump from your hotel website to the booking engine. It does this by adding a linker parameter (_gl=…) to the booking link at the moment the guest clicks it. If that parameter does not travel with the guest, GA4 starts a brand-new session on the booking domain and records the booking as a referral from high-level-software.com instead of the source that originally brought the guest to your site.

This is the most common cause of bookings being attributed to “high-level-software.com / referral” instead of the real source. It almost always comes down to the ‘Book Now’ link on your website not passing the _gl parameter through to the booking engine

For the linker to work, all of the following must be true:

  • The same GA4 property and Measurement ID (G-XXXXXXXXXX) is used on both your hotel website and the booking engine. Cross-domain stitching only works within a single property — two different IDs can never be joined.
  • Both domains are listed under Configure your domains (Step A) — including every hotel or venue website that links into the booking engine, not just your main site.
  • The ‘Book Now’ link is a standard clickable link (an <a href> pointing at high-level-software.com) that is present when the page loads. GA4 automatically adds _gl to links like these.
  • The link does NOT pass through a redirect, button script or pop-up that drops the query string. A JavaScript redirect, a form submit, a link-shortener, or a ‘book’ vanity domain that forwards to the booking engine will all strip _gl and break attribution.
  • Analytics consent is granted (see the note below) without it the visitor’s ID may not persist across the two domains.
Quick test: click your live 'Book Now' link and look at the address bar once the booking engine loads. If the URL contains a _gl=… parameter, link decoration is working. If it does not, the link is stripping it - fix the link on your website before looking anywhere else

Step 4 - Exclude the booking domain as a referral

As a safeguard, tell GA4 never to treat the booking engine as a traffic source.

Navigate to Admin → Data Streams → Select Your Stream
  1. Click Configure Tag Settings

  2. List Unwanted Referrals - Add high-level-software.com

    This stops the booking domain being logged as a referral in the rare event that a session does restart

How to diagnose a cross-domain attribution problem

If bookings are still being credited to the wrong source, run a live test booking with GTM Preview and GA4 DebugView both open, and check the following in order:

  • On your website, click the ‘Book Now’ link and confirm the destination URL gains a _gl=… parameter (Step 3)

  • In DebugView, confirm the booking-engine session shows the same client ID as the website session — not a brand-new one

  • On the confirmation page, open the purchase event in DebugView and read session_source / session_medium. This is the true attribution - judge success here, not in the standard reports

  • Confirm the Measurement ID firing on the booking engine matches the one on your website

Quick test: click your live 'Book Now' link and look at the address bar once the booking engine loads. If the URL contains a _gl=… parameter, link decoration is working. If it does not, the link is stripping it - fix the link on your website before looking anywhere else