XooCode(){

Ticket

Ticket is an Intangible type for event tickets, boarding passes, transit passes, and any admission document. It has 8 properties of its own: ticketNumber, ticketToken (barcode or QR code reference), ticketedSeat, issuedBy, underName (the ticket holder), dateIssued, totalPrice, and priceCurrency. Ticket is used inside Reservation via the reservedTicket property.

The type hierarchy is Thing → Intangible → Ticket. Google reads Ticket primarily inside FlightReservation (boarding passes) and EventReservation (event tickets) in Gmail emails. The ticketToken property is especially important: it can reference a barcode image or QR code that Gmail renders directly in the ticket card.

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

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

Highlight legend:Required by GoogleRecommendedOptional
schema.org/Ticket
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Ticket",
  "ticketNumber": "XOOCON-FP-0042",
  "ticketToken": "qrCode:XOOCON2026FP0042",
  "dateIssued": "2026-09-01",
  "issuedBy": {
    "@id": "https://xoocode.com#organization",
    "@type": "Organization",
    "name": "Xoo Code Inc."
  },
  "underName": {
    "@type": "Person",
    "name": "Tomás Herrera"
  },
  "ticketedSeat": {
    "@type": "Seat",
    "seatSection": "Full Pass"
  },
  "totalPrice": "349.00",
  "priceCurrency": "USD"
}
</script>

ticketToken

ticketToken takes a text string or URL. For QR codes, use the prefix format: "qrCode:XOOCON2026FP0042". For barcodes: "barcode128:1234567890". For a PDF ticket: use a URL pointing to the PDF. Gmail renders these as scannable codes on the ticket card.

ticketedSeat

ticketedSeat takes a Seat object with seatNumber, seatRow, and seatSection. For assigned seating (concerts, flights, theaters), include the seat details. For general admission, use seatSection alone: "General Admission" or "VIP".

Minimal valid version

The smallest markup that still produces a valid Ticket 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/Ticket (minimal)
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Ticket",
  "ticketNumber": "XOOCON-FP-0042",
  "underName": { "@type": "Person", "name": "Tomás Herrera" },
  "ticketedSeat": { "@type": "Seat", "seatSection": "Full Pass" }
}
</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 Ticket 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

    ticketToken as a plain description

    Wrong
    "ticketToken": "Scan the QR code on your badge"
    Right
    "ticketToken": "qrCode:XOOCON2026FP0042"

    ticketToken should be a machine-readable reference: qrCode:VALUE, barcode128:VALUE, or a URL to a PDF/image. Gmail uses this to render a scannable code on the ticket card. A prose description cannot be scanned.

  2. 02

    Missing underName

    Wrong
    Ticket with ticketNumber but no underName
    Right
    "underName": { "@type": "Person", "name": "Tomás Herrera" }

    underName identifies who the ticket is for. Without it, the ticket is unassigned. Gmail shows the ticket holder's name on the card.

About the example data

An XooCon 2026 conference badge/ticket, referenced by the EventReservation example via reservedTicket.

Comments

Loading comments...

Leave a comment