Event SpecsTravel & Hospitality

Travel & Hospitality Event Spec

This page defines the recommended event taxonomy for travel and hospitality products — including flight booking, hotel reservation, car hire, and post-booking experiences such as check-in and loyalty.

All event names use snake_case. Dates should be sent as ISO 8601 strings (e.g. '2026-08-14'). Airport codes should use IATA three-letter codes (e.g. 'LHR', 'JFK'). Monetary amounts should be numbers with a separate currency property using ISO 4217 codes.


Events tracking what customers are searching for.

flight_searched

A customer has performed a flight search.

PropertyTypeRequiredDescription
originstringNoOrigin airport IATA code (e.g. 'LHR')
destinationstringNoDestination airport IATA code (e.g. 'JFK')
depart_datestringNoDeparture date in ISO 8601 format
return_datestringNoReturn date in ISO 8601 format. Omit or set null for one-way
passengersnumberNoNumber of passengers
cabin_classstringNoCabin class: 'economy', 'premium_economy', 'business', 'first'
trip_typestringNoTrip type: 'one_way', 'return', 'multi_city'
results_countnumberNoNumber of results returned
_df.track('flight_searched', {
  origin: 'LHR',
  destination: 'JFK',
  depart_date: '2026-08-14',
  return_date: '2026-08-21',
  passengers: 2,
  cabin_class: 'economy',
  trip_type: 'return',
  results_count: 84
})

hotel_searched

A customer has performed a hotel search.

PropertyTypeRequiredDescription
destinationstringNoCity, region, or property name searched
check_instringNoCheck-in date in ISO 8601 format
check_outstringNoCheck-out date in ISO 8601 format
guestsnumberNoTotal number of guests
roomsnumberNoNumber of rooms requested
results_countnumberNoNumber of results returned
_df.track('hotel_searched', {
  destination: 'New York',
  check_in: '2026-08-14',
  check_out: '2026-08-21',
  guests: 2,
  rooms: 1,
  results_count: 120
})

car_searched

A customer has searched for a hire car.

PropertyTypeRequiredDescription
locationstringNoPick-up location (city or airport code)
pick_up_datestringNoPick-up date in ISO 8601 format
drop_off_datestringNoDrop-off date in ISO 8601 format
car_typestringNoCategory of car searched (e.g. 'economy', 'suv', 'luxury')
results_countnumberNoNumber of results returned
_df.track('car_searched', {
  location: 'JFK',
  pick_up_date: '2026-08-14',
  drop_off_date: '2026-08-21',
  car_type: 'suv',
  results_count: 18
})

Browsing

Events tracking product and destination views.

destination_viewed

A customer has viewed a destination page.

PropertyTypeRequiredDescription
destinationstringNoName of the destination
destination_typestringNoDestination classification: 'city', 'country', 'region'
_df.track('destination_viewed', {
  destination: 'Lisbon',
  destination_type: 'city'
})

flight_viewed

A customer has viewed the details of a specific flight option.

PropertyTypeRequiredDescription
flight_idstringNoIdentifier for the flight or fare
originstringNoOrigin airport IATA code
destinationstringNoDestination airport IATA code
depart_datestringNoDeparture date
airlinestringNoOperating airline name (e.g. 'British Airways')
pricenumberNoDisplayed price
currencystringNoISO 4217 currency code
cabin_classstringNoCabin class of the viewed fare
_df.track('flight_viewed', {
  flight_id: 'flt_ba_lhr_jfk_0814',
  origin: 'LHR',
  destination: 'JFK',
  depart_date: '2026-08-14',
  airline: 'British Airways',
  price: 649.00,
  currency: 'GBP',
  cabin_class: 'economy'
})

hotel_viewed

A customer has viewed the details of a specific hotel.

PropertyTypeRequiredDescription
hotel_idstringNoUnique identifier for the hotel
hotel_namestringNoHotel display name
destinationstringNoCity or region
check_instringNoCheck-in date
check_outstringNoCheck-out date
price_per_nightnumberNoDisplayed price per night
currencystringNoISO 4217 currency code
starsnumberNoStar rating (e.g. 4)
ratingnumberNoGuest review score (e.g. 8.6)
_df.track('hotel_viewed', {
  hotel_id: 'htl_ace_nyc',
  hotel_name: 'Ace Hotel New York',
  destination: 'New York',
  check_in: '2026-08-14',
  check_out: '2026-08-21',
  price_per_night: 229.00,
  currency: 'USD',
  stars: 4,
  rating: 8.4
})

Booking

Events tracking the booking funnel from initiation to confirmation and post-booking changes.

booking_started

A customer has begun the checkout or booking flow.

PropertyTypeRequiredDescription
booking_typestringNoProduct being booked: 'flight', 'hotel', 'car', 'package'
item_idstringNoIdentifier of the item being booked
pricenumberNoTotal price shown at booking start
currencystringNoISO 4217 currency code
_df.track('booking_started', {
  booking_type: 'flight',
  item_id: 'flt_ba_lhr_jfk_0814',
  price: 1298.00,
  currency: 'GBP'
})

booking_completed

A booking has been confirmed and payment taken.

PropertyTypeRequiredDescription
booking_idstringYesUnique booking reference
booking_typestringNoProduct booked: 'flight', 'hotel', 'car', 'package'
revenuenumberNoTotal revenue amount
currencystringNoISO 4217 currency code
item_idstringNoIdentifier of the booked item
check_instringNoCheck-in or departure date
check_outstringNoCheck-out or return date
guestsnumberNoNumber of guests or passengers
payment_methodstringNoPayment method used (e.g. 'card', 'paypal', 'points')
_df.track('booking_completed', {
  booking_id: 'BK-20264821',
  booking_type: 'flight',
  revenue: 1298.00,
  currency: 'GBP',
  item_id: 'flt_ba_lhr_jfk_0814',
  check_in: '2026-08-14',
  check_out: '2026-08-21',
  guests: 2,
  payment_method: 'card'
})

booking_cancelled

A confirmed booking has been cancelled.

PropertyTypeRequiredDescription
booking_idstringYesBooking reference
reasonstringNoCancellation reason (e.g. 'change_of_plans', 'price_issue')
refund_amountnumberNoAmount refunded, if known
currencystringNoISO 4217 currency code
_df.track('booking_cancelled', {
  booking_id: 'BK-20264821',
  reason: 'change_of_plans',
  refund_amount: 974.00,
  currency: 'GBP'
})

booking_modified

A booking has been amended (e.g. date change, room upgrade).

PropertyTypeRequiredDescription
booking_idstringYesBooking reference
modification_typestringNoType of change (e.g. 'date_change', 'seat_upgrade', 'name_correction')
price_differencenumberNoPrice change resulting from the modification (negative for refunds)
_df.track('booking_modified', {
  booking_id: 'BK-20264821',
  modification_type: 'date_change',
  price_difference: 45.00
})

Post-Booking

Events covering check-in, check-out, loyalty, and reviews.

check_in_completed

A traveller has completed online or self-service check-in.

PropertyTypeRequiredDescription
booking_idstringYesBooking reference
check_in_methodstringNoMethod used: 'web', 'mobile', 'kiosk'
seat_selectedstringNoSeat number selected during check-in (e.g. '14A')
_df.track('check_in_completed', {
  booking_id: 'BK-20264821',
  check_in_method: 'mobile',
  seat_selected: '14A'
})

check_out_completed

A guest or traveller has completed check-out.

PropertyTypeRequiredDescription
booking_idstringYesBooking reference
_df.track('check_out_completed', {
  booking_id: 'BK-20264821'
})

loyalty_points_earned

Points have been credited to a customer’s loyalty account.

PropertyTypeRequiredDescription
programme_idstringNoLoyalty programme identifier (e.g. 'ba_avios', 'ihg_one')
pointsnumberNoNumber of points earned
booking_idstringNoBooking that triggered the earn
_df.track('loyalty_points_earned', {
  programme_id: 'ba_avios',
  points: 1500,
  booking_id: 'BK-20264821'
})

loyalty_points_redeemed

Points have been redeemed from a customer’s loyalty account.

PropertyTypeRequiredDescription
programme_idstringNoLoyalty programme identifier
pointsnumberNoNumber of points redeemed
redemption_typestringNoWhat the points were used for (e.g. 'flight_discount', 'hotel_upgrade', 'ancillary')
_df.track('loyalty_points_redeemed', {
  programme_id: 'ba_avios',
  points: 10000,
  redemption_type: 'flight_discount'
})

review_submitted

A customer has submitted a rating or review for a travel product.

PropertyTypeRequiredDescription
booking_idstringNoBooking the review relates to
subject_typestringNoItem being reviewed: 'hotel', 'flight', 'car'
subject_idstringNoIdentifier of the reviewed item
ratingnumberNoRating given, on a scale of 1–10
⚠️

Do not include free-text review content as an event property. Review text may contain PII and is better stored directly in your application database.

_df.track('review_submitted', {
  booking_id: 'BK-20264821',
  subject_type: 'hotel',
  subject_id: 'htl_ace_nyc',
  rating: 9
})