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.
Search
Events tracking what customers are searching for.
flight_searched
A customer has performed a flight search.
| Property | Type | Required | Description |
|---|---|---|---|
origin | string | No | Origin airport IATA code (e.g. 'LHR') |
destination | string | No | Destination airport IATA code (e.g. 'JFK') |
depart_date | string | No | Departure date in ISO 8601 format |
return_date | string | No | Return date in ISO 8601 format. Omit or set null for one-way |
passengers | number | No | Number of passengers |
cabin_class | string | No | Cabin class: 'economy', 'premium_economy', 'business', 'first' |
trip_type | string | No | Trip type: 'one_way', 'return', 'multi_city' |
results_count | number | No | Number 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.
| Property | Type | Required | Description |
|---|---|---|---|
destination | string | No | City, region, or property name searched |
check_in | string | No | Check-in date in ISO 8601 format |
check_out | string | No | Check-out date in ISO 8601 format |
guests | number | No | Total number of guests |
rooms | number | No | Number of rooms requested |
results_count | number | No | Number 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.
| Property | Type | Required | Description |
|---|---|---|---|
location | string | No | Pick-up location (city or airport code) |
pick_up_date | string | No | Pick-up date in ISO 8601 format |
drop_off_date | string | No | Drop-off date in ISO 8601 format |
car_type | string | No | Category of car searched (e.g. 'economy', 'suv', 'luxury') |
results_count | number | No | Number 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.
| Property | Type | Required | Description |
|---|---|---|---|
destination | string | No | Name of the destination |
destination_type | string | No | Destination 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.
| Property | Type | Required | Description |
|---|---|---|---|
flight_id | string | No | Identifier for the flight or fare |
origin | string | No | Origin airport IATA code |
destination | string | No | Destination airport IATA code |
depart_date | string | No | Departure date |
airline | string | No | Operating airline name (e.g. 'British Airways') |
price | number | No | Displayed price |
currency | string | No | ISO 4217 currency code |
cabin_class | string | No | Cabin 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.
| Property | Type | Required | Description |
|---|---|---|---|
hotel_id | string | No | Unique identifier for the hotel |
hotel_name | string | No | Hotel display name |
destination | string | No | City or region |
check_in | string | No | Check-in date |
check_out | string | No | Check-out date |
price_per_night | number | No | Displayed price per night |
currency | string | No | ISO 4217 currency code |
stars | number | No | Star rating (e.g. 4) |
rating | number | No | Guest 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.
| Property | Type | Required | Description |
|---|---|---|---|
booking_type | string | No | Product being booked: 'flight', 'hotel', 'car', 'package' |
item_id | string | No | Identifier of the item being booked |
price | number | No | Total price shown at booking start |
currency | string | No | ISO 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.
| Property | Type | Required | Description |
|---|---|---|---|
booking_id | string | Yes | Unique booking reference |
booking_type | string | No | Product booked: 'flight', 'hotel', 'car', 'package' |
revenue | number | No | Total revenue amount |
currency | string | No | ISO 4217 currency code |
item_id | string | No | Identifier of the booked item |
check_in | string | No | Check-in or departure date |
check_out | string | No | Check-out or return date |
guests | number | No | Number of guests or passengers |
payment_method | string | No | Payment 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.
| Property | Type | Required | Description |
|---|---|---|---|
booking_id | string | Yes | Booking reference |
reason | string | No | Cancellation reason (e.g. 'change_of_plans', 'price_issue') |
refund_amount | number | No | Amount refunded, if known |
currency | string | No | ISO 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).
| Property | Type | Required | Description |
|---|---|---|---|
booking_id | string | Yes | Booking reference |
modification_type | string | No | Type of change (e.g. 'date_change', 'seat_upgrade', 'name_correction') |
price_difference | number | No | Price 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.
| Property | Type | Required | Description |
|---|---|---|---|
booking_id | string | Yes | Booking reference |
check_in_method | string | No | Method used: 'web', 'mobile', 'kiosk' |
seat_selected | string | No | Seat 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.
| Property | Type | Required | Description |
|---|---|---|---|
booking_id | string | Yes | Booking reference |
_df.track('check_out_completed', {
booking_id: 'BK-20264821'
})loyalty_points_earned
Points have been credited to a customer’s loyalty account.
| Property | Type | Required | Description |
|---|---|---|---|
programme_id | string | No | Loyalty programme identifier (e.g. 'ba_avios', 'ihg_one') |
points | number | No | Number of points earned |
booking_id | string | No | Booking 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.
| Property | Type | Required | Description |
|---|---|---|---|
programme_id | string | No | Loyalty programme identifier |
points | number | No | Number of points redeemed |
redemption_type | string | No | What 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.
| Property | Type | Required | Description |
|---|---|---|---|
booking_id | string | No | Booking the review relates to |
subject_type | string | No | Item being reviewed: 'hotel', 'flight', 'car' |
subject_id | string | No | Identifier of the reviewed item |
rating | number | No | Rating 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
})