Your hotel booking engine and your Google Analytics account are two of the most important tools in your direct booking strategy — but in most hotels, they operate in complete isolation. Analytics does not know that a booking was completed. The booking engine does not know where the guest came from. And you, the marketer, cannot connect marketing spend to actual revenue.
Fixing this connection is one of the highest-value technical improvements a hotel can make. This guide explains how to integrate the most common booking engines with GA4, handle cross-domain tracking, and validate that your setup is actually working.
Unlike a standard e-commerce website where checkout happens entirely within your domain, hotel booking engines often run on a different domain entirely. When a guest clicks Book Now on yourhotel.com, they may be redirected to book.yourhotel.com, yourhotel.reztrip.com, or an entirely separate URL managed by your booking engine provider.
This cross-domain journey breaks standard Analytics tracking. By default, GA4 treats the redirect as a new session from a “referral” source — losing all information about where the guest originally came from.
→ Example: A hotel running a Google Ads campaign generated 200 clicks. Only 3 bookings appeared in GA4 as attributed to Google Ads. The remaining 34 bookings showed as referral from the booking engine domain. Without cross-domain tracking, they were dramatically under-valuing their Ads spend.
Most major booking engine providers now offer native GA4 integration. This is always the preferred method — officially supported, more accurate, and requires no custom development.
Siteminder: Go to Settings → Marketing → Google Analytics. Enter your GA4 Measurement ID. Siteminder fires standard GA4 e-commerce events (view_item, begin_checkout, purchase) automatically.
Little Hotelier: Navigate to Settings → Integrations → Google Analytics and enter your Measurement ID.
Cloudbeds: Settings → Apps & Integrations → Google Analytics. The integration fires a purchase event on booking confirmation, passing transaction_id, value, and currency.
RoomRaccoon: Dashboard → Marketplace → Google Analytics. Enter your GA4 Measurement ID.
Guestline / Rezlynx: Requires a custom GTM implementation. Contact your Guestline account manager for their current GA4 integration documentation.
Validation: make a test booking and check GA4 DebugView in real time. You should see a purchase or booking_complete event appear within seconds.
If your booking engine does not offer native GA4 integration, configure cross-domain tracking:
Important limitation: you can only configure cross-domain tracking if GA4 runs on both domains. If your booking engine does not allow you to add your GA4 tag, cross-domain tracking is not possible without native integration.
Most booking confirmation pages display the booking total somewhere on the page. You can extract this value using a GTM Custom JavaScript variable that reads the total from the DOM and passes it as the “value” parameter in your booking_complete event tag.
The cleanest solution for custom tracking is asking your booking engine provider to push a dataLayer event on the confirmation page:
dataLayer.push({ event: “booking_complete”, booking_value: 485.00, room_type: “King Deluxe”, nights: 2, check_in: “2026-06-14” });
GTM reads this dataLayer push and fires your GA4 event with all the relevant parameters — no scraping required.
All bookings show as “direct” or “(not set)”: Cross-domain tracking is not configured or the booking engine domain is not included in your GA4 domain list.
Booking value is 0 or missing: The revenue variable is not being captured. Use GTM Preview mode to check what the value variable returns on the confirmation page.
Duplicate booking events: The booking_complete event fires twice — once from your custom GTM tag and once from the native booking engine integration. Disable one source.
Bookings in PMS don’t match GA4: Normal to have a 3–8% discrepancy. Discrepancies above 15% indicate a tracking configuration problem.
The Lobby specialises in cross-domain tracking and booking engine integration for independent hotels.