XooCode(){

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.

Highlight legend:Required by GoogleRecommendedOptional
schema.org/FlightReservation
<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.

schema.org/FlightReservation (minimal)
<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.

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.

  1. 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.

  2. 02

    Missing departure and arrival airports

    Wrong
    Flight with flightNumber but no departureAirport or arrivalAirport
    Right
    "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.

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...

Leave a comment