XooCode(){

FoodEstablishmentReservation

FoodEstablishmentReservation is a Reservation subtype for restaurant bookings, cafe reservations, and any food establishment table booking. It has 3 properties of its own: startTime (when the reservation starts), endTime (when it ends), and partySize (how many guests). Gmail reads this markup in confirmation emails to show a restaurant reservation card with the time, party size, and restaurant details.

The type hierarchy is Thing → Intangible → Reservation → FoodEstablishmentReservation. All 12 Reservation properties apply. Set reservationFor to a Restaurant or FoodEstablishment object with name and address so Gmail can show the restaurant location on a map.

Full example of schema.org/FoodEstablishmentReservation json-ld markup

The markup is verified as valid with Rich Results Test from Google.

Highlight legend:Required by GoogleRecommendedOptional
schema.org/FoodEstablishmentReservation
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FoodEstablishmentReservation",
  "reservationId": "DG-2026-11-14-1930",
  "reservationStatus": "https://schema.org/ReservationConfirmed",
  "reservationFor": {
    "@type": "Restaurant",
    "name": "The Dunmore Grill",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "412 Main Street",
      "addressLocality": "Dunmore",
      "addressRegion": "PA",
      "postalCode": "18512",
      "addressCountry": "US"
    },
    "telephone": "+1-570-555-0200"
  },
  "startTime": "2026-11-14T19:30:00-05:00",
  "endTime": "2026-11-14T21:30:00-05:00",
  "partySize": 6,
  "underName": {
    "@type": "Person",
    "name": "Lena Vasquez",
    "email": "lena@xoocode.com"
  },
  "provider": {
    "@type": "Restaurant",
    "name": "The Dunmore Grill"
  },
  "bookingTime": "2026-11-01T10:15:00-05:00"
}
</script>

startTime and endTime

startTime is when the table is reserved. endTime is when the reservation slot ends. Not every restaurant uses endTime (many have open-ended seatings), so it is optional. Use ISO 8601 time format: "19:30:00" or full datetime "2026-11-14T19:30:00-05:00".

partySize

partySize takes an integer or QuantitativeValue for the number of guests. Gmail displays this on the reservation card. For a party of 4, just use the integer 4.

Minimal valid version

The smallest markup that still produces a valid FoodEstablishmentReservation 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/FoodEstablishmentReservation (minimal)
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FoodEstablishmentReservation",
  "reservationId": "DG-2026-11-14-1930",
  "reservationStatus": "https://schema.org/ReservationConfirmed",
  "reservationFor": { "@type": "FoodEstablishment", "name": "The Dunmore Grill", "address": { "@type": "PostalAddress", "streetAddress": "412 Main Street", "addressLocality": "Dunmore", "addressRegion": "PA", "addressCountry": "US" } },
  "startTime": "2026-11-14T19:30:00-05:00",
  "partySize": 6,
  "underName": { "@type": "Person", "name": "Lena Vasquez" }
}
</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 FoodEstablishmentReservation 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

    Missing partySize

    Wrong
    FoodEstablishmentReservation with time and restaurant but no partySize
    Right
    "partySize": 6

    partySize tells the restaurant (and Gmail) how many guests are coming. It is the most important FoodEstablishmentReservation-specific property. Without it, the reservation card is incomplete.

  2. 02

    reservationFor as a string

    Wrong
    "reservationFor": "The Dunmore Grill"
    Right
    "reservationFor": { "@type": "Restaurant", "name": "The Dunmore Grill", "address": { ... } }

    reservationFor expects a FoodEstablishment or Restaurant object with name and address. Gmail uses the address to show a map link on the reservation card. A plain string has no location data.

  3. 03

    Using Reservation instead of FoodEstablishmentReservation

    Wrong
    "@type": "Reservation" for a restaurant booking
    Right
    "@type": "FoodEstablishmentReservation"

    FoodEstablishmentReservation adds startTime, endTime, and partySize. Without the subtype, you cannot express when the table is reserved or for how many people.

About the example data

A dinner reservation at The Dunmore Grill for an XooCon speaker dinner. The reservationFor references the Restaurant entity.

Comments

Loading comments...

Leave a comment