FlightReservation
FlightReservation is a Reservation subtype for airline bookings. It has 4 properties of its own: boardingGroup (boarding zone), passengerPriorityStatus (priority boarding tier), passengerSequenceNumber (boarding pass number), and securityScreening (TSA PreCheck, Global Entry). Gmail reads this to show a flight reservation card with departure/arrival times, gate info, and boarding pass details.
The type hierarchy is Thing → Intangible → Reservation → FlightReservation. Set reservationFor to a Flight object (not an Airline). The Flight object contains the airline, flight number, departure/arrival airports and times. The FlightReservation wraps the Flight with passenger-specific booking data.
Full example of schema.org/FlightReservation json-ld markup
The markup is verified as valid with Rich Results Test from Google.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FlightReservation",
"reservationId": "NA-XBHF42",
"reservationStatus": "https://schema.org/ReservationConfirmed",
"boardingGroup": "Group B",
"passengerSequenceNumber": "042",
"passengerPriorityStatus": "Standard",
"securityScreening": "TSA PreCheck",
"reservationFor": {
"@type": "Flight",
"flightNumber": "NA 412",
"airline": {
"@id": "https://nordicair.dk#airline",
"@type": "Airline",
"name": "Nordic Air",
"iataCode": "NA"
},
"departureAirport": {
"@type": "Airport",
"name": "Copenhagen Airport",
"iataCode": "CPH"
},
"arrivalAirport": {
"@type": "Airport",
"name": "Lackawanna Valley Airport",
"iataCode": "LVA"
},
"departureTime": "2026-11-13T08:30:00+01:00",
"arrivalTime": "2026-11-13T12:45:00-05:00"
},
"underName": {
"@type": "Person",
"name": "Tomás Herrera"
},
"totalPrice": "4200.00",
"priceCurrency": "DKK",
"bookingTime": "2026-09-15T11:30:00+02:00",
"reservedTicket": {
"@type": "Ticket",
"ticketNumber": "NA-XBHF42-E",
"ticketedSeat": {
"@type": "Seat",
"seatNumber": "14A",
"seatSection": "Economy"
}
}
}
</script>boardingGroup and passengerSequenceNumber
boardingGroup is the airline's boarding zone: "Group A", "Zone 3", "Priority". passengerSequenceNumber is the sequence number on the boarding pass. Gmail displays both on the flight card. These change between booking and check-in, so the values in the confirmation email may differ from the boarding pass.
Flight as reservationFor
The reservationFor should be a Flight object with flightNumber, airline, departureAirport, arrivalAirport, departureTime, and arrivalTime. The airports are Airport objects with iataCode. Gmail uses all of this to build the flight card with a timeline.
Minimal valid version
The smallest markup that still produces a valid FlightReservation entity. Use it as the floor. Reach for the advanced example above when you want search engines and AI agents to understand more about your content.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FlightReservation",
"reservationId": "NA-XBHF42",
"reservationStatus": "https://schema.org/ReservationConfirmed",
"reservationFor": {
"@type": "Flight",
"flightNumber": "NA 412",
"airline": { "@type": "Airline", "name": "Nordic Air", "iataCode": "NA" },
"departureAirport": { "@type": "Airport", "iataCode": "CPH" },
"arrivalAirport": { "@type": "Airport", "iataCode": "LVA" },
"departureTime": "2026-11-13T08:30:00+01:00",
"arrivalTime": "2026-11-13T12:45:00-05:00"
},
"underName": { "@type": "Person", "name": "Tomás Herrera" }
}
</script>Google rich results this unlocks
Markup matching this example makes your page eligible for the following Google Search rich results. The primary target drives the required / recommended property classification in the advanced code block above.
- Google docsGmail flight cardprimary
Common FlightReservation mistakes
Mistakes that pass validation but silently fail to earn rich results or mislead consumers walking the graph. Avoid these and your markup will be ahead of most sites in the wild.
- 01
reservationFor as an Airline instead of a Flight
Wrong"reservationFor": { "@type": "Airline", "name": "Nordic Air" }Right"reservationFor": { "@type": "Flight", "flightNumber": "NA 412", "airline": { ... } }You reserve a flight, not an airline. reservationFor should be a Flight object containing the airline, flight number, and departure/arrival details. Gmail needs the Flight to build the timeline card.
- 02
Missing departure and arrival airports
WrongFlight with flightNumber but no departureAirport or arrivalAirportRight"departureAirport": { "@type": "Airport", "iataCode": "CPH" }, "arrivalAirport": { "@type": "Airport", "iataCode": "LVA" }Gmail and Google Travel need both airports with iataCode to display the route on the flight card. Without them, the card shows a flight number with no route information.
Schema properties in this example
About the example data
A Nordic Air flight from Copenhagen to Lackawanna Valley Airport for XooCon. The reservationFor Flight references the Airline via @id.
Comments
Loading comments...