Data Schema (Confirmation Page)
Zonal PMS pushes the following data to the dataLayer when a guest completes a booking.
This fires on the confirmation page only:
URL: /hotel/your-hotel-slug/availability/confirm
Data Schema Topics
Schema
Copy
{
event: "purchase",
ecommerce: {
currency: "GBP",
value: [sum of all reservation prices],
coupon: [voucher code, if used],
items: [
{
item_name: [room type],
item_variant: [rate plan name],
affiliation: [hotel name],
check_in: [arrival date],
check_out: [arrival date + number of nights],
currency: "GBP",
price: [room price],
quantity: 1
}
// repeated for each room in the booking
]
},
cart: { ... }, // full cart object
guest: { ... }, // guest details
hotel: { ... }, // hotel details
request: { ... } // search parameters
}
Understanding Upsell Items
| Scenario | Price in dataLayer | What it Means |
|---|---|---|
| Room included in rate plan | null | Item is bundled — no separate charge |
| Guest added an upsell (e.g. breakfast) | £ value shown | Guest actively added this item |
The price behaviour above reflects the internal cart object shown while a guest is browsing (see Section 6). The confirmation-page ecommerce array (Section 4) currently reports this as a single item per room — Section 7 sets out how to extend it so each upsell reports individually in GA4.