Event Schema

How to implement schema.org/Event markup for Google's event rich results — required properties (name, startDate, location), why virtual-only events aren't eligible, the four eventStatus values, and the one-event-one-URL rule.

First published: Jul 1, 2026 · Last updated: Jul 17, 2026 · Advanced
demand #9 in Structured Data#28 in On-Page#142 in Technical SEO#194 on the site
1 evidence signal on this page

Event schema (schema.org/Event) is structured data — usually JSON-LD — that tells search engines an event's name, date, location, and ticketing details so an individual event page can qualify for Google's event rich result. Google requires exactly three properties: name, startDate, and location. The single biggest myth to bust: as of Google's current (December 2025) docs, virtual-only events aren't eligible for the event rich result — 'Virtual experiences that have no real-world component aren't supported. Events must take place in a physical location.' That contradicts a lot of still-circulating 2020 pandemic-era advice that treats eventAttendanceMode=OnlineEventAttendanceMode and VirtualLocation as sufficient on their own; those properties are still valid schema.org but don't unlock the rich result for an online-only event. Other load-bearing rules: each event needs its own unique leaf-page URL (listing pages don't qualify), you must never strip startDate or location when updating eventStatus (EventScheduled, EventCancelled, EventPostponed, EventRescheduled), and marking up sales, coupons, or non-events has historically triggered manual actions. Valid markup only makes you eligible; Google still decides whether to show it.

TL;DR — schema.orgSchema markup is code that uses the schema.org vocabulary to label what your content means so search engines can understand it and show rich results. It's most often written in JSON-LD, and it's not a direct ranking factor./Event markup (usually JSON-LDJSON-LD (JavaScript Object Notation for Linked Data) is a script-based structured data format, typically paired with the schema.org vocabulary to describe page content for search engines and AI systems. Google recommends it over Microdata and RDFa because it's the easiest format to implement and maintain at scale — but all three work, and structured data isn't a ranking signal.) on an individual event page can make it eligible for Google’s event rich result. Google requires three properties: name, startDate, location. The load-bearing fact of this whole topic: per Google’s current (Dec 2025) docs, virtual-only events aren’t supported — “Events must take place in a physical location.” eventAttendanceMode and VirtualLocation are valid schema.org (added in the 2020 COVID era) but don’t unlock the rich result for an online-only event. Other rules people miss: one event = one unique leaf URL (listing pages don’t qualify); when you change eventStatus (EventScheduled / EventCancelled / EventPostponed / EventRescheduled) you must never strip startDate or location; multi-day is one Event, multiple ticketed performances are separate Events; and marking up sales, coupons, or non-events is against policy and has drawn manual actions. Valid markup only earns eligibility.

What Event schema does — and what it doesn’t

Event schemaEvent schema (schema.org/Event) is structured data that tells search engines an event's name, date, location, and ticket info so the page can appear in Google's event rich results. Google requires a physical location — virtual-only events aren't eligible for the event rich result. is the schema.org/Event vocabulary you put on an event page so search engines can read the event’s name, timing, location, and ticketing. On Google, correctly implemented markup on an individual event page makes it eligible for the event rich result — the enhanced listing and the dedicated event-search experience Google runs for event-related queries.

What it doesn’t do: it isn’t a ranking factor, and it isn’t a magic switch. Like every kind of structured dataStructured data is a standardized way of labeling page content (using the schema.org vocabulary in JSON-LD, Microdata, or RDFa) so search engines can understand its meaning. It's not a direct ranking factor — its value is rich results and entity understanding., it makes a page eligible for a specific search feature — it doesn’t lift your organic positions and it doesn’t guarantee the feature shows. Evidence for this claim Google's event feature excludes promotional non-events and requires each event to have a unique page focused on that event. Scope: Google Search Event content guidelines; valid Schema.org markup alone does not establish eligibility. Confidence: high · Verified: Google: Event structured data

Required properties: name, startDate, location

Google is explicit that you must include the required properties: “You must include the required properties for your content to be eligible for display in enhanced search results.” For Event, that’s three:

  • name (Text) — the full title of the event. Google’s rule is specific: don’t use the name of the venue as the event name (that’s what location.name is for), don’t use the type of event (“Concert” is not a descriptive name), and don’t stuff it with URLs, prices, performers, or “short-term promotions (for example, ‘buy your tickets now’).” Google’s own before/after: not “Bill Graham Civic Auditorium” and not “LIMITED TIME SALE - Kesha and Macklemore Concert - $25”, but “The Adventures of Kesha and Macklemore” or “Meet and Greet: Kesha and Macklemore.”
  • startDate (DateTime) — “The start date and start time of the event in ISO-8601 format. Add both the date and time so users can find events that fit into their schedule.”
  • location (Place) — set @type to Place and add location.name and location.address. Google’s steer on the address: be specific — not just “Sydney” but “Bennelong Point, Sydney NSW 2000, Australia.” And its best-practice notes for tricky cases: “If the event happens across several streets, define the starting location and mention the full details in description. If the event happens without a well-defined location, use the city name or the most representative location. If the event happens at multiple locations at the same time, create different events for each location.”

Beyond the required three, these make the listing fuller and are worth adding:

  • endDate — same ISO-8601 format as startDate.
  • eventStatus — the scheduled/canceled/postponed/rescheduled state (see the dedicated section below).
  • image — Google’s general image guidance applies; provide multiple images at 1x1, 4x3, and 16x9 aspect ratios.
  • offers (an Offer) — url, price, priceCurrency, availability (e.g. InStock, SoldOut, PreOrder), and validFrom for when tickets go on sale.
  • performer (Person / PerformingGroup) and organizer (Organization / Person, with name and url).
  • description — Google’s guidance: “Focus on the event details and not your site’s features. Don’t repeat other facts like date and location; instead, add that information to the respective properties.” Note it only shows a snippet.

Virtual and hybrid events: what Google’s current docs actually say

This is the section that separates current guidance from the recycled 2020 advice still all over the web, so read it carefully.

Google’s current documentation states, verbatim: “Virtual experiences that have no real-world component aren’t supported. Events must take place in a physical location.” That means a purely virtual, online-only event has no path into Google’s event rich result — regardless of how you mark it up.

Evidence for this claim Google's current Event rich-result documentation says purely virtual events without a real-world component are not supported. Scope: Google Search Event rich-result requirements; Schema.org still defines online-attendance and VirtualLocation vocabulary. Confidence: high · Verified: Google: Event structured data

Here’s the nuance that trips people up. Back in March 2020, at the start of the pandemic, Google announced new Event properties so publishers could communicate that events had moved online or been canceled: an eventAttendanceMode (with OnlineEventAttendanceMode / OfflineEventAttendanceMode / MixedEventAttendanceMode values), the eventStatus values, and support for VirtualLocation. Those properties are still valid schema.org vocabulary — nobody removed them. But the current Search Central Event doc no longer documents an online-event example and states outright that virtual-only events aren’t supported for the rich result.

So the honest, current position:

  • A physical location is the anchor. Virtual and hybrid events likely still need a real-world location component to qualify for the event experience — because Google requires that physical location.
  • eventAttendanceMode and VirtualLocation aren’t useless — they’re legitimate markup for a hybrid event that does have a real venue, and they’re useful for other consumers of the data (your own systems, other search engines, and AI/LLMA large language model (LLM) is a deep-learning model trained on massive text corpora to predict the next token and generate human-like text. LLMs use the transformer architecture and power AI search features like Google's AI Overviews (Gemini) and Bing Copilot (GPT-4). understanding). They just don’t, by themselves, get an online-only event into Google’s rich result.
  • If you run webinars or online-only events, don’t expect the event rich result. Use the markup for machine-readability if you like, but plan your visibility around the rest of your SEO, not the event experience.

I want to be precise here rather than sensational: this is not “virtual events are banned.” It’s that a virtual event with no real-world component isn’t eligible for the specific event rich result. Most of the competing content on this topic still treats OnlineEventAttendanceMode as a live Google feature that gets an online event into the rich result on its own. Straight from Google’s current docs, that’s not how it works.

Handling event status: EventScheduled, EventCancelled, EventPostponed, EventRescheduled

eventStatus takes one of four values, and there’s one rule that dwarfs the rest: never remove startDate or location when the status changes. Google warns: “When the event status changes, DON’T remove the startDate. The startDate property is required to help identify the unique event.”

If you don’t set eventStatus at all, Google treats the event as EventScheduled (the normal, going-ahead state). The other three:

  • EventCancelled — the event won’t happen. Google: “Don’t remove or change other properties (for example, don’t remove startDate or location); instead, keep all values as the same as they were before the cancelation, and update the eventStatus to EventCancelled. Why? Properties like startDate and location help identify the unique event and make sure people understand the new status of the event.”
  • EventPostponed — it will happen, but the new date isn’t known yet. Google: “The event has been postponed to a later date, but the date isn’t known yet. Keep the original date in the startDate of the event until you know when the event will take place. Once you know the new date information, change the eventStatus to EventRescheduled and update the startDate and endDate with the new date information.”
  • EventRescheduled — a new date is confirmed. Google: “The event has been rescheduled to a later date. Update the startDate and endDate with the relevant new dates. Optionally, you can also mark the eventStatus field as rescheduled and add the previousStartDate.”

The distinction people most often blur: EventPostponed and EventCancelled are not interchangeable. Cancelled means it’s off; postponed means it’s happening later on a date you don’t know yet — and you should upgrade postponed to rescheduled (with previousStartDate) once you do know.

One event, one URL — why listing pages don’t qualify

Google is unambiguous: “Each event MUST have a unique URL (a leaf page) and markup on that URL,” and “The event experience on Google only supports pages that focus on a single event. We recommend focusing on adding markup to your event posting pages instead of pages that list schedules or multiple events.”

This is one of the most common implementation mistakes for venues and ticketing platforms — marking up a calendar or “upcoming events” listing page and expecting a rich result for each event on it. That page doesn’t qualify. Each event needs its own dedicated page with its own markup.

Multi-day events vs. multiple performances

These are handled differently, and it trips up a lot of implementations:

  • A single event that spans several daysone Event with the startDate and endDate covering the range. Google: “If your event or ticket info is for an event that runs over several days, specify both the start and end dates of the event.”
  • Multiple distinct ticketed performances across days → a separate Event for each. Google: “If there are several different performances across different days, each with individual tickets, add a separate Event element for each performance.”

For genuinely recurring series, schema.org has EventSeries and eventSchedule properties. They’re valid markup — but I’d treat them as “valid schema.org, unconfirmed rich-result impact” rather than a guaranteed path to the event experience. When in doubt, follow Google’s documented pattern: one Event per performance.

Content policies — what gets events disapproved (and manually actioned)

Event markup has a real spam-enforcement history, so this isn’t hypothetical. Google requires that “Each event must accurately describe the event name, start date, and location,” and it spells out what not to mark up as an event:

  • Non-events. Google: *“Don’t promote non-event products or services such as ‘Trip package: San Diego/LA, 7 nights’ as events. Don’t add short-term discounts or purchase opportunities, such as: ‘Concert — buy your tickets now,’ or ‘Concert
    • 50% off until Saturday.’ Don’t mark business hours as events, such as: ‘Adventure park open 8 AM to 5PM.’ Don’t mark coupons or vouchers as events, such as: ‘5% off your first order.’”*
  • Membership/invitation-only events. Google: “Events must be bookable to the general public. Events that require a membership, or invitation prior to purchasing the ticket or attending the event are ineligible for the event experience.”
  • School/minors on-premise events. Google: “Spectator events where the primary participants and audience are minors and occur on-premise of a school aren’t eligible for the event experience.”

And there are teeth behind this. Google: “If your site violates one or more of these guidelines, then Google may take manual action against it. Once you have remedied the problem, you can submit your site for reconsideration.” This isn’t theoretical — Google was reported to have issued manual actions against sites using Event markup to promote sales and coupons rather than genuine events, which is exactly the “don’t add short-term discounts” and “don’t mark coupons as events” guidance above. (I’d verify the specifics against a primary source before treating any particular case as canonical — the enforcement pattern is well established regardless.)

Date and time formatting

Use ISO-8601, and include the timezone offset. Google’s guidance: specify the timezone by including the UTC/GMT offset — an event at 7pm on September 5 in New York should carry the -04:00 or -05:00 offset. For a genuinely day-long event where the hour is unknown or irrelevant, use the date only (no time). And don’t fake a midnight start: a value like 2019-08-15T00:00:00+00:00 for an event whose start time you don’t actually know reads to Google as literally midnight, which is almost certainly wrong.

Event subtypes: base Event vs. MusicEvent, BusinessEvent, etc.

schema.org has subtypes — MusicEvent, BusinessEvent, EducationEvent, SportsEvent, and more. You don’t have to use them: the base Event type is valid and sufficient, and Google’s documented required/recommended properties apply the same way regardless. Subtypes add more specific semantic tagging if you want it, but “you must use MusicEvent” is a myth — base Event is fine.

Bing and Event schema

Bing doesn’t publish an Event-specific structured-data help page the way Google does. Its general reference — Marking Up Your Site with Structured Data — confirms Bing supports the schema.org vocabulary broadly (along with Microdata, RDFa, and Open GraphOpen Graph (OG) tags are `<meta>` elements in a page's head, defined by the Open Graph protocol (ogp.me, created by Facebook), that describe a page as a shareable object — its title, description, image, URL, and type. They control how a link preview card looks when the page is shared on Facebook, LinkedIn, Slack, Discord, WhatsApp, and iMessage. They are not a direct Google ranking factor, though Google reads og:title, og:image, and og:site_name as inputs to how a result appears.), without Event-specific required/recommended property lists. I’m not going to invent Bing Event support that doesn’t have a documentation page behind it. The honest framing: Bing rewards well-formed schema.org markup generally and won’t punish you for including Event schema, but it has no equivalent of Google’s dedicated event rich-result/search experience. So the primary motivation for Event markup remains Google — plus general machine-readability for AI/LLM consumption.

Validating and troubleshooting

Validate the markup with Google’s Rich Results Test, and monitor the Events report and enhancements in Search ConsoleA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results.. A note on regional availability: Google’s event search experience is available in a specific set of countries/languages, and that list changes — verify the current availability directly on Google’s docs page at the time you implement, rather than trusting a stale list.

Where this sits

Event schema is one of the Social & Community schema types in the broader structured-data picture, alongside markup like DiscussionForumPosting, FAQPage, HowTo, QAPage, and SoftwareApplication. For the vocabulary as a whole and how these pieces fit together, see the broader Schema MarkupSchema markup is code that uses the schema.org vocabulary to label what your content means so search engines can understand it and show rich results. It's most often written in JSON-LD, and it's not a direct ranking factor. and Structured Data hubs this article nests under.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.