Skip to main content
Data layer events

begin_checkout

A user begins checkout.

Status: Active

Triggered when a user begins checkout.

GA4 docs: https://developers.google.com/analytics/devguides/collection/ga4/reference/events?client_type=gtag#begin_checkout

Source: checkout portal flow (PMS). This is emitted when the Stay step is shown.

If a CMS search snapshot cookie is present, a top-level search object is included.

Checkout portal emits a booking snapshot with totals and guest group counts (status = concept).

Sample data layer snippet

dataLayer.push({ ecommerce: null });  // Clear the previous ecommerce object. 
 dataLayer.push({
  "event": "begin_checkout",
  "ecommerce": {
    "currency": "EUR",
    "value": 350.0,
    "coupon": "SUMMER10",
    "items": [
      {
        "item_id": "123123",
        "item_name": "4-Person Luxury Villa",
        "item_brand": "Administration Name",
        "item_category": "Accommodation",
        "item_category2": "house",
        "item_variant": "single_night",
        "item_list_id": "checkout",
        "item_list_name": "Checkout",
        "coupon": "SUMMER10",
        "discount": 25.0,
        "price": 350.0,
        "quantity": 1,
        "index": 1,
        "item_country": "Netherlands",
        "item_region": "Twente",
        "item_city": "Enschede",
        "administration_id": "321321",
        "administration_name": "Administration Name",
        "start_date": "2026-02-20",
        "end_date": "2026-02-22",
        "google_business_vertical": "hotel_rental"
      }
    ]
  },
  "booking": {
    "status": "concept",
    "final": false,
    "guest_group": {
      "seniors": 0,
      "adults": 2,
      "adolescents": 0,
      "children": 1,
      "babies": 0,
      "pets": 0,
      "total": 3
    },
    "currency": "EUR",
    "total": 350,
    "base_rent_total": 350,
    "upgrade_total": 0,
    "preference_total": 0,
    "deposit_total": 0,
    "deferred_deposit_total": 0,
    "security_deposit_total": 0,
    "tourist_taxes_total": 0,
    "vat_total": 50
  }
});

We do not auto-clear booking. If you map booking outside booking events, clear it manually with dataLayer.push({ booking: null }).

Top-level objects

ParameterSamplePresenceDescription
ecommerce{...} (see below)alwaysEcommerce payload wrapper for GA4 events.
booking{...} (see below)alwaysBooking snapshot with status concept and checkout totals. Source: Checkout portal booking summary.

ecommerce

Ecommerce payload wrapper for GA4 events.

FieldSamplePresenceDescription
currencyEURalwaysCurrency of the items associated with the event, in 3-letter ISO 4217 format. Source: Currency used for totals/items (booking/order/reservation currency; availability/property search uses the active site currency).
value350.0alwaysTotal value of the checkout. Source: Total order/booking value or sum of item prices.
couponSUMMER10if availableCoupon code applied to the checkout. Source: Applied coupon codes for the booking/reservation, comma-separated when multiple.
items[][...] (see below)alwaysItems array for the ecommerce payload.
ecommerce.items[]

Items array for the ecommerce payload.

FieldSamplePresenceDescription
item_id123123alwaysID of the item. Combine with item_category and item_category2. Source: rentable type id (Accommodation), cost id (Upgrade, Preference), bundle id (Package), or amenity id (Preference with Amenity item_category2). Availability/property search: category or property id.

Notes: Legacy checkout portal used prefixed ids (A/C/P).

item_name4-Person Luxury VillaalwaysThe name of the item. Source: rentable type id (Accommodation), cost id (Upgrade, Preference), bundle id (Package), or amenity id (Preference with Amenity item_category2). Availability/property search: localized category/property name.
item_brandAdministration Nameif availableThe localized name of the site. Source: Checkout portal: administration name. Availability/property search: site/brand name shown on the website (can differ from the administration name).
item_categoryAccommodationalways

Top-level item type.

  • Accommodation
  • Upgrade
  • Preference
  • Package

Source: Checkout portal: Accommodation for rentable types, Upgrade for extras, Preference for amenities/preferences, Package for bundles. Availability/property search: Accommodation.

item_category2houseif available

Semantic segment for accommodations or sub-bucket for extras.

Accommodation: house pitch room berth apartment other
Extras: Amenity Upgrade Package

Source: Checkout portal: accommodation semantic segment or extras bucket. Availability/property search: accommodation semantic segment.

item_category3if available

PMS extra type for extras only.

  • tourist_taxes
  • cleaning
  • parking

Source: Checkout portal extras only: cost extra_type. Not set for accommodations, packages, or availability/property search.

item_variantsingle_nightif available

Stay duration category for the accommodation.

  • single_night - 1 night
  • weekend - 2-3 nights incl weekend
  • midweek - 2-4 nights without weekend
  • week - 6-8 nights or 5 nights incl weekend
  • extended_stay - 9-13 nights
  • long_stay - 14+ nights

Source: Checkout portal accommodations and CMS availability items; derived from arrival/departure.

item_list_idcheckoutif availableID of the list where the item is shown. Source: Availability/property search list id (availability_search/property_search). Cart/checkout events may supply list id like Cart or Checkout.
item_list_nameCheckoutif availableName of the list where the item is shown. Source: Availability/property search list name (Availability search/Property search). Cart/checkout events may supply list name like Cart or Checkout.
couponSUMMER10if availableCoupon applied to the item. Source: Coupon code applied to the reservation or order item (first code, if any).
discount25.0if availableDiscount applied to the item. Source: Discount amount for the order item.
price350.0if available

Price for the item line (stay total for accommodation).

Source: Availability/property search: price for the stay. Checkout portal: order item unit price; accommodation uses stay total derived from booking total minus upgrades.

quantity1if availableQuantity of the item. Source: Order item quantity; otherwise 1.
index1if availablePosition of the item in the list. Source: Position in the result list (availability/property search only).
item_countryNetherlandsif availableThe country where the administration is located. Source: Administration country from BEX (shared across checkout portal and availability/property search).
item_regionTwenteif availableThe region where the administration is located. Source: Administration region from BEX (shared across checkout portal and availability/property search).
item_cityEnschedeif availableThe city where the administration is located. Source: Administration city from BEX (shared across checkout portal and availability/property search).
administration_id321321if availableThe ID of the administration in BEX PMS. Source: Checkout portal: BEX administration id. Availability/property search: the same BEX administration id (Booking Experts administration mapping).

Notes: Renamed from park_id in legacy checkout payloads.

administration_nameAdministration Nameif availableThe name of the administration in BEX PMS. Source: Checkout portal: BEX administration name. Availability/property search: the same BEX administration name (Booking Experts administration mapping).

Notes: Renamed from park_name in legacy checkout payloads.

start_date2026-02-20if availableThe date when the booking starts. Source: Stay arrival date or availability start date.
end_date2026-02-22if availableThe date when the booking ends. Source: Stay departure date or availability end date.
google_business_verticalhotel_rentalif availableGoogle Ads business vertical for dynamic remarketing (examples: "hotel_rental", "retail"). Source: Remarketing business vertical configured globally; not from booking data.

booking

Booking snapshot with status concept and checkout totals. Source: Checkout portal booking summary.

FieldSamplePresenceDescription
statusbookedif availableBooking lifecycle status (concept/option/booked/cancelled). Source: Checkout portal status override or booking state from PMS.
finaltrueif availableTrue when the booking is confirmed or imported. Source: Confirmed/imported flag from PMS.
currencyEURif availableBooking currency (ISO 4217). Source: Booking currency.
total350if availableSum of all guest order items. Source: Total of guest debtor items.
base_rent_total350if availableBase rent (accommodation rent) order items. Source: Base rent total.
upgrade_total0if availableUpgrade order items (bundles/extras), excluding deposits. Source: Upgrade extras total.
preference_total0if availablePreference order items (amenities/preferences). Source: Preference items total.
deposit_total0if availableReservation deposit order items (non-deferred). Source: Deposit total.
deferred_deposit_total0if availableReservation deposit order items marked deferred. Source: Deferred deposit total.
security_deposit_total0if availableSecurity deposits (borg), from security deposit policies. Source: Security deposit total.
tourist_taxes_total0if availableTourist tax order items. Source: Tourist taxes total.
vat_total50if availableVAT total for guest debtor items. Source: VAT total.
guest_group{...} (see below)if availableGuest counts by group (see guest_group fields). Source: Aggregated guest group from reservations.
booking.guest_group

Guest counts by group (see guest_group fields). Source: Aggregated guest group from reservations.

FieldSamplePresenceDescription
seniors0alwaysNumber of seniors. Source: Guest group seniors count.
adults2alwaysNumber of adults. Source: Guest group adults count.
adolescents0alwaysNumber of adolescents. Source: Guest group adolescents count.
children1alwaysNumber of children. Source: Guest group children count.
babies0alwaysNumber of babies. Source: Guest group babies count.
pets0alwaysNumber of pets. Source: Guest group pets count.
total3alwaysTotal guests (sum of guest group counts). Source: Guest group total.

Still need help? Share an idea