This is a quick reference that maps common travel and booking scenarios to the webhook operation and event type they trigger, and describes what changes in the payload so you can identify it when the events are received.
See booking lifecycle to understand the events generated during various travel booking scenarios.
The PNR_V3 event provides detail at a PNR level (per booking), while the TRIP_DETAILS_V3 event provides detail at a trip level (a collection of PNRs). The main difference is the level (PNR vs a trip) at which the detail is provided.
Use the PNR_V3 webhook for most cases. However, for scenarios where you need to update the entire trip based on a change to a single booking, use the TRIP_DETAILS_V3 event. For example, if you consolidate expenses for an entire trip within a single receipt, or you maintain a trip summary that needs to be updated whenever any booking in the trip changes, use TRIP_DETAILS_V3.
Event types used: PNR_V3, TRIP_DETAILS_V3, and SERVICE_CHARGE
All operations, except where noted, apply to both the TRIP_DETAILS_V3 and PNR_V3 event types.
| Use case | Operation | Payload changes |
|---|---|---|
| Air booking created | BOOKING_CREATED | The PNR's bookingStatus changes to CONFIRMED_STATUS.Notes:
|
| Payment failed or declined | PAYMENT_DECLINED | The PNR's bookingStatus changes to PAYMENT_DECLINED_STATUS indicating a payment failure. Manual intervention might be required to retry the booking creation. |
| Air ticket issued | BOOKING_TICKETED | A new entry is added to the airPnr > travelerInfos > tickets array with the ISSUED status. The webhook's operationSummary > ticketsIssued field lists the new ticket numbers. |
| Multi-traveler PNR split into separate PNRs | SPLIT_PNR_CREATED | Each child PNR created from the split is delivered as separate PNR_V3 events with this operation. |
| Booking canceled within the void window | TICKET_VOIDED | An air ticket with airPnr > travelerInfos > tickets > status changes from ISSUED to VOIDED. For a full void, the PNR's bookingStatus changes to CANCELLED_STATUS. The webhook's operationSummary > ticketsVoided field lists the voided tickets. |
| Booking canceled after the void period (refund) | TICKET_REFUNDED | An air ticket with airPnr > travelerInfos > tickets > status changes from ISSUED to REFUNDED. The webhook's operationSummary > ticketsRefunded field lists the refunded tickets. |
| Ticket exchanged (new ticket issued) | BOOKING_TICKETED and TICKET_REFUNDED | The original ticket's status in the airPnr > travelerInfos > tickets array changes from ISSUED to EXCHANGED, and a new ticket is added with the ISSUED status and its exchangeInfo field is updated with the exchange information. |
| Flight changed without a new ticket (revalidation) | FLIGHT_CHANGED | The flight details in the airPnr > legs > flights array change while the original ticket remains in the ISSUED status. |
| Airline announces a schedule change | FLIGHT_SCHEDULE_CHANGE_PENDING | The airPnr > legs > flights > flightStatus changes from CONFIRMED to SCHEDULE_CHANGE. |
| Schedule change confirmed or canceled | FLIGHT_SCHEDULE_CHANGE_CLOSED | The airPnr > legs > flights > flightStatus changes from SCHEDULE_CHANGE to CONFIRMED. If the traveler was waitlisted while accepting the change, the flightStatus can instead show the SCHEDULE_CHANGE_WAITLISTED_BOOKING value, which requires agent follow-up. |
| Cabin upgraded or downgraded | FLIGHT_CABIN_CHANGED | The airPnr > legs > flights > cabin differs from the previous PNR version. |
| Seat reservation confirmed | FLIGHT_SEAT_CONFIRMED | The airPnr > travelerInfos > booking > seats > status changes to CONFIRMED. |
| Seat reservation canceled by the airline | FLIGHT_SEAT_CANCELLED | The airPnr > travelerInfos > booking > seats > status changes from CONFIRMED or PENDING to CANCELLED. |
| Seat number changed by the airline | FLIGHT_SEAT_CHANGED | The airPnr > travelerInfos > booking > seats > number changes while the seat status remains CONFIRMED. |
| Flight segment canceled | FLIGHT_CANCELLED | The airPnr > legs > flights > flightStatus changes to CANCELLED. |
| Trip information modified | TRIP_UPDATED | The trip information (e.g., the trip name or description) changes. The booking itself is unchanged. |
| Miscellaneous PNR update | BOOKING_OTHER_UPDATE | The PNR version increments without a category-specific change (e.g., a remark added on the PNR). This is a catchall operation for any miscellaneous PNR or trip updates. |
| Invoice created | INVOICE_GENERATED | A new entry is added to the invoiceInfos array. The operationSummary > invoiceGeneratedDocIds field lists the document IDs of the invoices issued as part of this event, which you can use with the get document API to download the invoice. This operation is delivered on PNR_V3 subscriptions only. |
| TMC service fee charged | SERVICE_FEE | The fee details are delivered on the SERVICE_CHARGE event with operation type SERVICE_FEE. On PNR payloads, the fees are listed under the serviceFees array. |
There is no operation for a successful payment. A successful air payment is implicit in the BOOKING_TICKETED operation, which represents ticket issuance.
Event types used: PNR_V3, TRIP_DETAILS_V3, and SERVICE_CHARGE
All operations, except where noted, apply to both the TRIP_DETAILS_V3 and PNR_V3 event types.
| Use case | Operation | Payload changes |
|---|---|---|
| Hotel booking created | BOOKING_CREATED | The hotelPnr > pnrStatus changes to CONFIRMED, and the PNR's bookingStatus changes to CONFIRMED_STATUS. |
| Dates, room type, or rate changed on the same booking | BOOKING_UPDATED | The same PNR is delivered with the updated dates, room, or pricing details. |
| Rebooked with a different confirmation number | BOOKING_REBOOKED | The hotelPnr > vendorConfirmationNumber changes while the pnrStatus remains CONFIRMED. Compare the confirmation number with the previous PNR version to detect the rebooking. |
| Canceled and rebooked as a new PNR | BOOKING_CANCELED_BY_TRAVELER, then BOOKING_CREATED | The original PNR is canceled and a new PNR is created that references it. |
| Booking canceled by the traveler | BOOKING_CANCELED_BY_TRAVELER | The hotelPnr > pnrStatus changes from CONFIRMED to CANCELLED or VOIDED, and the PNR's bookingStatus changes to CANCELLED_STATUS. |
| Booking canceled by the property or vendor | BOOKING_CANCELED_BY_VENDOR | The hotelPnr > pnrStatus changes from CONFIRMED to CANCELLED or VOIDED, and the PNR's bookingStatus changes to CANCELLED_STATUS. |
| Booking metadata updated (e.g., updating loyalty number, special requests, etc) | BOOKING_UPDATED or BOOKING_OTHER_UPDATE | The PNR is delivered with the updated metadata. The statuses are unchanged. |
| Invoice created | INVOICE_GENERATED | A new entry is added to the invoiceInfos array. The operationSummary > invoiceGeneratedDocIds field lists the document IDs of the invoices issued as part of this event, which you can use with the get document API to download the invoice. This operation is delivered on PNR_V3 subscriptions only. |
| TMC service fee charged | SERVICE_FEE | The fee details are delivered on the SERVICE_CHARGE event with operation type SERVICE_FEE. On PNR payloads, the fees are listed under the serviceFees array. |
Event types used: PNR_V3, TRIP_DETAILS_V3, and SERVICE_CHARGE
All operations, except where noted, apply to both the TRIP_DETAILS_V3 and PNR_V3 event types.
| Use case | Operation | Payload changes |
|---|---|---|
| Rental car booking made | BOOKING_CREATED | The carPnr > pnrStatus changes to CONFIRMED, and the PNR's bookingStatus changes to CONFIRMED_STATUS. |
| Pickup or drop-off date, time, or location changed | BOOKING_UPDATED | The same PNR is delivered with the updated pickup or drop-off details. |
| Vehicle type changed | BOOKING_UPDATED or BOOKING_REBOOKED | If the vehicle details (i.e., class, make, or model) are changed, the event is delivered with operation type BOOKING_UPDATED. If the supplier issues a new vendor confirmation number for the change, the BOOKING_REBOOKED operation is also triggered. |
| Rebooked with a different confirmation number | BOOKING_REBOOKED | The carPnr > vendorConfirmationNumber changes while the pnrStatus remains CONFIRMED. |
| Booking canceled by the traveler | BOOKING_CANCELED_BY_TRAVELER | The carPnr > pnrStatus changes from CONFIRMED to CANCELLED or VOIDED, and the PNR's bookingStatus changes to CANCELLED_STATUS. |
| Booking canceled by the vendor | BOOKING_CANCELED_BY_VENDOR | The carPnr > pnrStatus changes from CONFIRMED to CANCELLED or VOIDED, and the PNR's bookingStatus changes to CANCELLED_STATUS. |
| Metadata updated (loyalty number) | BOOKING_UPDATED or BOOKING_OTHER_UPDATE | The PNR is delivered with the updated metadata. The statuses are unchanged. |
| Invoice created | INVOICE_GENERATED | A new entry is added to the invoiceInfos array. The operationSummary > invoiceGeneratedDocIds field lists the document IDs of the invoices issued as part of this event, which you can use with the get document API to download the invoice. This operation is delivered on PNR_V3 subscriptions only. |
| TMC service fee charged | SERVICE_FEE | The fee details are delivered on the SERVICE_CHARGE event. On PNR payloads, the fees are listed under the serviceFees array. |
Event types used: PNR_V3, TRIP_DETAILS_V3, and SERVICE_CHARGE
All operations, except where noted, apply to both the TRIP_DETAILS_V3 and PNR_V3 event types.
Note: A rail PNR may contain an outward journey and a return journey, and each journey can be made up of multiple sections (e.g., sold by different rail vendors). Inspect the
railPnr>outwardJourney>journeyStatusandrailPnr>inwardJourney>journeyStatusfor the journey status, and therailPnr>sections>sectionStatusfor section-level statuses.
| Use case | Operation | Payload changes |
|---|---|---|
| Rail booking made | BOOKING_CREATED | The journey and section statuses show CONFIRMED, and the PNR's bookingStatus changes to CONFIRMED_STATUS. |
| Booking exchanged (passenger details, travel card, new booking number, or journey changes) | EXCHANGE | The PNR is delivered with the updated journey details and its railPnr > exchangeInfo populated. |
| Seat preference changed | BOOKING_UPDATED | The PNR is delivered with the updated seat preferences. |
| Booking canceled | REFUND | The following statuses are changed in the payload:
|
| Booking partially canceled (some sections not canceled) | REFUND | The railPnr > sections > sectionStatus of the canceled sections changes to CANCELLED while the remaining sections may remain as CONFIRMED. |
| Metadata updated (e.g., updating special requests) | BOOKING_UPDATED or BOOKING_OTHER_UPDATE | The PNR is delivered with the updated metadata. The statuses remain unchanged. |
| Invoice created | INVOICE_GENERATED | A new entry is added to the invoiceInfos array. The operationSummary > invoiceGeneratedDocIds field lists the document IDs of the invoices issued as part of this event, which you can use with the get document API to download the invoice. This operation is delivered on the PNR_V3 subscriptions only. |
| Cancellation fee charged | SERVICE_FEE | The fee is delivered on the SERVICE_CHARGE event with the charge > feeInfo > transactionFeeType set to TRANSACTION_TYPE_CANCELLATION. |
Event type used: PNR_APPROVAL and PNR_V3.
The PNR_APPROVAL event notifies you when a booking's approval state changes. The corresponding PNR also carries the approval state in the approvalInfo > approvalStatus field on PNR_V3 payloads.
| Use case | Operation | Payload changes |
|---|---|---|
| Approval requested and awaiting approver action | APPROVAL_PENDING | The approvalInfo > approvalStatus changes to APPROVAL_PENDING. The PNR's bookingStatus shows APPROVAL_REQUESTED_STATUS. |
| Approver has approved the booking | APPROVED | The approvalInfo > approvalStatus changes to APPROVED, and the PNR's bookingStatus moves to CONFIRMED_STATUS. |
| Approver has denied the booking | DENIED | The approvalInfo > approvalStatus changes to DENIED, and the PNR's bookingStatus moves to APPROVAL_DENIED_STATUS. For a ticketed air booking, a TICKET_VOIDED operation follows on the PNR_V3 event as the booking is voided. |
| Hard-approval deadline passed without a response | TIMED_OUT | The itinerary is canceled because no approver took action before the approval deadline. |
| Reminder sent before the approval deadline | TIMED_OUT_REMINDER | A reminder notification is sent to the approver. The approval status remains unchanged. |
Event type used: SERVICE_CHARGE
Service charge events are delivered with operation as SERVICE_FEE. In the event payload, the serviceType identifies whether the fee relates to an itinerary transaction (ITINERARY_BOOKING) or an agent contact (AGENT_CONTACT), and the charge > feeInfo > transactionFeeType identifies why the fee was charged. The event is triggered even if the fee amount is 0.
| Use case | transactionFeeType value | Payload changes |
|---|---|---|
| Fee for a new booking (air, hotel, car, rail, or limo) | TRANSACTION_TYPE_BOOKING | The fee amount and breakdown are delivered in the charge object. |
| Fee for modifying or exchanging an existing booking | TRANSACTION_TYPE_MODIFICATION | The modification fee details are delivered in the charge object. |
| Fee for canceling an existing booking | TRANSACTION_TYPE_CANCELLATION | The cancellation fee details are delivered in the charge object. |
| Fee for an agent-assisted transaction | TRANSACTION_TYPE_AGENT_CONTACT | The agentContact > contactOp identifies the agent operation (e.g., ANCILLARY_PURCHASE, or a SHELL_PNR_CREATE, etc.), and the agentContact > contactType identifies the contact method (PHONE, CHAT, or EMAIL). |
The service charge payload also includes a paymentStatus (SUCCESS, DELAYED_INVOICE, MANUAL, NO_CHARGE, or WAIVED_OFF). On PNR_V3 payloads, the fees charged for a booking are listed under the serviceFees array, where each entry has its own status (e.g., ISSUED, VOIDED, NO_CHARGE, or WAIVED_OFF).
Event types used: TRAVELER_V2, AGENT_TASK_DETAILS
| Use case | Operation | Event type |
|---|---|---|
| Traveler profile created | CREATE | TRAVELER_V2 |
| Traveler profile updated | UPDATE | TRAVELER_V2 |
| Traveler profile deleted | DELETE | TRAVELER_V2 |
| Agent task created for a booking that needs attention | TASK_CREATE | AGENT_TASK_DETAILS |