Event schema: promoting events through structured data

Bas Vermeer
Bas Vermeer SEO/AEO Specialist

Why Event schema is indispensable for events

Whether you are organizing a conference, hosting a webinar, giving a workshop or planning a meetup, you want potential attendees to find your event. Traditionally that means advertising, using social media and hoping for word-of-mouth. But there is a powerful channel that many organizers overlook: structured data in search results.

Google displays Event rich results prominently in search results when someone searches for events in a certain region or about a specific topic. These rich results contain the date, location, title and sometimes the price of your event, directly in the SERP. Visitors can click through to your event page with a single click. The prerequisite is that you have correctly implemented Event schema.

Additionally, AI models use Event schema to discover and recommend events. When someone asks an AI assistant "what SEO conferences are there in the Netherlands?", the model can search Event schema from various websites to compile a current answer. Without Event schema, your event is invisible to these applications. This is a concrete example of how Schema.org markup directly contributes to discoverability.

IMPORTANT

Google shows Event rich results both in regular search results and in a special events panel. Events with correctly implemented Event schema get significantly more visibility than events without structured data.

Event schema: the basic implementation

A basic Event schema contains the required properties that Google needs for event rich results. Let us start with a complete example.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Event",
  "name": "AEO Masterclass: AI-ready in 2026",
  "description": "An intensive masterclass on Answer Engine Optimization. Learn how to optimize your website for AI search engines and answer engines.",
  "startDate": "2026-06-15T09:00:00+02:00",
  "endDate": "2026-06-15T17:00:00+02:00",
  "eventStatus": "https://schema.org/EventScheduled",
  "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
  "location": {
    "@type": "Place",
    "name": "DeFabrique",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "Westkanaaldijk 7",
      "addressLocality": "Utrecht",
      "postalCode": "3542 DA",
      "addressCountry": "NL"
    }
  },
  "image": "https://aeo-expert.nl/images/events/aeo-masterclass-2026.jpg",
  "organizer": {
    "@type": "Organization",
    "name": "Kobalt",
    "url": "https://kobaltdigital.nl"
  },
  "offers": {
    "@type": "Offer",
    "url": "https://aeo-expert.nl/events/aeo-masterclass-2026",
    "price": "495",
    "priceCurrency": "EUR",
    "availability": "https://schema.org/InStock",
    "validFrom": "2026-04-01T00:00:00+02:00"
  },
  "performer": {
    "@type": "Person",
    "name": "Jan de Vries"
  }
}
</script>

Let us break down the most important properties. The "startDate" and "endDate" must be in ISO 8601 format, including time zone. The "eventStatus" indicates whether the event is going ahead, has been postponed or has been cancelled. The "eventAttendanceMode" specifies whether it is a physical, online or hybrid event.

Online and hybrid events

Since the pandemic, online and hybrid events have become the norm. Event schema supports all three variants.

// Online event
{
  "@type": "Event",
  "name": "AEO Webinar: Structured Data Basics",
  "eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode",
  "location": {
    "@type": "VirtualLocation",
    "url": "https://zoom.us/j/1234567890"
  }
}

// Hybrid event
{
  "@type": "Event",
  "name": "AEO Conference 2026",
  "eventAttendanceMode": "https://schema.org/MixedEventAttendanceMode",
  "location": [
    {
      "@type": "Place",
      "name": "DeFabrique",
      "address": { "@type": "PostalAddress", "addressLocality": "Utrecht" }
    },
    {
      "@type": "VirtualLocation",
      "url": "https://livestream.aeo-expert.nl/conference-2026"
    }
  ]
}

For an online event you use VirtualLocation instead of Place. For a hybrid event you include both as an array in the location property. Google can then show in the search results that the event can be attended both physically and online.

EventStatus: handling changes

Events get postponed, relocated or cancelled. It is essential to update your Event schema when the status changes, so that visitors and AI models have the most current information.

  • EventScheduled: the event is going ahead as planned. This is the default value.
  • EventPostponed: the event has been postponed. Do not remove the startDate, but update it as soon as a new date is known.
  • EventCancelled: the event has been cancelled. Leave the page with the cancelled status, do not remove it.
  • EventMovedOnline: the event was planned as physical but has been moved online. Also update the location to VirtualLocation.
  • EventRescheduled: the event has been moved to a new date. Update startDate and endDate to the new date and preserve the old information in previousStartDate.
// Rescheduled event with new date
{
  "@type": "Event",
  "name": "AEO Masterclass 2026",
  "eventStatus": "https://schema.org/EventRescheduled",
  "startDate": "2026-09-20T09:00:00+02:00",
  "endDate": "2026-09-20T17:00:00+02:00",
  "previousStartDate": "2026-06-15T09:00:00+02:00"
}

Tickets and offers with Offer schema

The Offer property within Event schema describes the ticket information. This is one of the most impactful sections, because Google can show the price and availability directly in the search results.

// Multiple ticket types
"offers": [
  {
    "@type": "Offer",
    "name": "Early Bird Ticket",
    "url": "https://aeo-expert.nl/events/aeo-masterclass-2026#tickets",
    "price": "395",
    "priceCurrency": "EUR",
    "availability": "https://schema.org/SoldOut",
    "validFrom": "2026-04-01T00:00:00+02:00",
    "validThrough": "2026-05-01T23:59:59+02:00"
  },
  {
    "@type": "Offer",
    "name": "Regular Ticket",
    "url": "https://aeo-expert.nl/events/aeo-masterclass-2026#tickets",
    "price": "495",
    "priceCurrency": "EUR",
    "availability": "https://schema.org/InStock",
    "validFrom": "2026-05-02T00:00:00+02:00"
  },
  {
    "@type": "Offer",
    "name": "VIP Ticket",
    "url": "https://aeo-expert.nl/events/aeo-masterclass-2026#tickets",
    "price": "795",
    "priceCurrency": "EUR",
    "availability": "https://schema.org/LimitedAvailability",
    "validFrom": "2026-04-01T00:00:00+02:00"
  }
]

By including multiple Offer objects, you describe all available ticket types with their respective prices and availability. The "validFrom" and "validThrough" dates indicate when each ticket type is available. The "availability" tells Google and AI models whether tickets are still available.

Marking recurring events

For recurring events such as monthly meetups or annual conferences, you create a separate Event schema for each edition. Use the "superEvent" property to link the individual editions to the overarching event series.

// Individual edition of a recurring event
{
  "@context": "https://schema.org",
  "@type": "Event",
  "name": "AEO Meetup Utrecht #12",
  "startDate": "2026-05-20T19:00:00+02:00",
  "endDate": "2026-05-20T21:00:00+02:00",
  "superEvent": {
    "@type": "EventSeries",
    "name": "AEO Meetup Utrecht",
    "url": "https://aeo-expert.nl/meetups"
  },
  "location": {
    "@type": "Place",
    "name": "Seats2meet Utrecht",
    "address": {
      "@type": "PostalAddress",
      "addressLocality": "Utrecht",
      "addressCountry": "NL"
    }
  },
  "offers": {
    "@type": "Offer",
    "price": "0",
    "priceCurrency": "EUR",
    "availability": "https://schema.org/InStock"
  }
}

EventSeries is a relatively new schema type that Google does not yet fully support for rich results, but AI models can recognize the relationship between individual editions and the series. By consistently including the "superEvent" reference, you build a structured overview of your entire event series that machines can search through. This also strengthens your E-E-A-T profile as an organizer of regular industry events.

Event schema and AI recommendations

AI models use Event schema in several ways that go beyond search results.

When a user asks an AI assistant about relevant events, the model searches indexed Event schema data to make current, relevant suggestions. The level of detail in your Event schema determines how well the model can match your event to the user's query. An Event with an extensive description, clear categorization and rich Offer data is more likely to be recommended than a minimally marked event.

  1. Use a descriptive "name" that clearly conveys the topic and type of event. "AEO Masterclass" is better than "Event June 2026".
  2. Write an extensive "description" that describes the program, target audience and learning objectives. AI models use this text to determine relevance.
  3. Add "performer" or "organizer" information with complete Person or Organization schema, including sameAs links.
  4. Use "about" to link the event to specific topics via Thing or DefinedTerm objects.
  5. Include "inLanguage" so AI models know in which language the event is held.
In a world where AI assistants increasingly take over the role of event calendars, Event schema is your digital flyer. Without that flyer, your event does not exist in the AI ecosystem.

Key takeaways

  • Event schema makes your events visible as rich results in Google and as recommendations by AI models that answer questions about events.
  • The required properties (name, startDate, location) are the minimum; extensive Offer, performer and description data significantly increase visibility.
  • Use eventStatus consistently to communicate changes (postponement, cancellation, move to online) to search engines and AI models.
  • For online and hybrid events, use VirtualLocation alongside or instead of Place, depending on the eventAttendanceMode.
  • Mark recurring events as individual Events with a superEvent reference to the EventSeries, so machines recognize the series.

Frequently asked questions

Should I add Event schema if my event is also on Eventbrite?

Yes. Eventbrite generates its own structured data, but that is limited to the Eventbrite platform. By adding Event schema to your own event page, you make the event discoverable in the context of your own website. Google can then show your own page as an event rich result, directing the click to your own site instead of to Eventbrite.

How do I handle free events?

For free events, include an Offer with "price": "0" and the corresponding priceCurrency. Google always expects an Offer object when visitors can register, even if the event is free. Omitting the Offer property for free events can result in Google not showing the registration option in the rich results.

What do I do with the Event schema after the event has passed?

Leave the Event schema on the page, but consider updating the page with a recap, photos or videos from the event. Do not remove the page: this prevents 404 errors and preserves any SEO value. If there is a next edition, link to the new event page. AI models and search engines understand that the event took place in the past based on the dates.

Can I use Event schema for non-public events?

Technically you can, but it is discouraged. Google's guidelines state that Event rich results are intended for publicly accessible events. Internal company events, private gatherings or events requiring an invitation are not eligible for event rich results and can lead to a manual action if presented as public events.

How much detail should I include in the Event description?

As much as is relevant. The description is one of the most important fields for AI recommendations, because it helps the model understand who the event is for and what attendees can expect. Describe the program, target audience, learning objectives and any speakers. A description of 150 to 300 words is a good starting point. Descriptions that are too short lack context; descriptions that are too long dilute the core message.

Events are by definition time-bound, but their digital footprint does not have to be. Event schema ensures that your event is discoverable from the moment of announcement to long after it has concluded.

How does your website score on AI readiness?

Get your AEO score within 30 seconds and discover what you can improve.

Free scan

SHARE THIS ARTICLE

LINKEDIN X

RELATED ARTICLES