Event Schema: Google's Rules, Status and Dates
Event schema is structured data using the schema.org Event type to describe one event on its own page: what it is, when it starts, where it happens, and how to get tickets. Google requires three properties (name, startDate and location) and uses the markup to make pages eligible for its event experience in Search and Maps. The details that trip people up are what counts as an event, how to handle cancellations, and the fact that Google no longer supports online-only events.
This guide is for venues, promoters, ticket sellers and anyone who runs events from their own site. It covers the properties Google uses, its content rules, the current position on online events, status changes, dates and time zones, and a complete example.
On this page
- What event schema does in Google Search
- Required and recommended properties
- What counts as an event?
- Online, hybrid and in-person events: what Google supports now
- How do you update eventStatus when plans change?
- Dates, times and time zones
- A complete event schema example
- Keeping event schema accurate through the event lifecycle
What event schema does in Google Search
Event markup makes a page eligible for Google’s event experience, an interactive result that lists upcoming events with dates, venues and ticket links. Google’s event structured data documentation says the experience appears in Search and “other Google products, like Google Maps”, and cites Eventbrite seeing “a 100% increase in the typical year-over-year growth of traffic from Google Search”.
Before you write any markup, check whether you need to. Google lists three routes to eligibility:
- You post events on a ticketing or social platform that already integrates with Google. Keep posting there; Google says “you can stop reading here”.
- You use a CMS without HTML access. Look for a plugin that outputs event structured data.
- You can edit your HTML. Add the markup yourself, one event per page.
Beyond Google, clear event facts help any assistant that answers “what’s on near me this weekend” describe your event correctly. Which types matter for AI answers generally is covered in structured data for AI search.
The experience isn’t available everywhere. Google’s documentation lists Australia, Brazil, Canada, Germany, India, Latin America, Spain, the United Kingdom and the United States, each with specific languages. Schema.org’s own Event page reports the type in use on 100,000 to 1 million domains, based on Google’s web index.
Required and recommended properties
Google requires name, startDate and location, where location is a Place with a name and a PostalAddress. Everything else is recommended.
| Property | Status | Google’s rule worth knowing |
|---|---|---|
name | Required | The event’s title, not the venue; no prices, URLs or “buy now” |
startDate | Required | ISO 8601 with a UTC offset; date only if the time isn’t known |
location | Required | A Place with name and a detailed address |
description | Recommended | Event details; don’t repeat date and venue |
endDate | Recommended | Same format as startDate |
eventStatus | Recommended | Defaults to scheduled if omitted |
image | Recommended | 1920px wide recommended, 720px minimum |
offers | Recommended | One Offer per ticket type; lowest price including fees |
organizer | Recommended | Person or Organization, with name and url |
performer | Recommended | Person or PerformingGroup, one per performer |
previousStartDate | Recommended | Only with EventRescheduled |
The offers.url has its own requirements: it must lead to a page that “clearly and predominantly provides the opportunity to buy a ticket” to that event, and it must be crawlable. If tickets aren’t on sale yet, Google says you can omit availability and set validFrom to the on-sale date. For a free event, set price to 0.
What counts as an event?
An event, for Google, is something bookable by the general public that happens at a specific time in a physical place. Its guidelines rule out several things site owners are tempted to mark up:
- Non-event products or services, such as “Trip package: San Diego/LA, 7 nights”
- Short-term sales: “Concert, buy your tickets now” or “50% off until Saturday”
- Business hours, such as “Adventure park open 8 AM to 5PM”
- Coupons and vouchers
- Events that require a membership or invitation before you can buy a ticket or attend
- Spectator events on school premises where the participants and audience are mainly minors
Getting this wrong has a documented consequence. Google’s manual actions report lists “Non-event labeled as an event” and “Event structured data is actually a promotion” among its structured data issues. A structured data manual action removes rich result eligibility; Google’s general guidelines say it “doesn’t affect how the page ranks”.
Structure matters too. Each event needs its own page and URL, and Google recommends marking up event pages rather than pages that list schedules. A three-day festival gets one Event with a start and end date. A show with separate performances on different days, each with its own tickets, gets a separate Event for each performance.
Online, hybrid and in-person events: what Google supports now
Google’s event experience now supports in-person events only. Its current content guidelines say: “Virtual experiences that have no real-world component aren’t supported. Events must take place in a physical location.” The timeline below shows how that position changed.
Scroll the diagram sideways to see all of it.
In March 2020, Google’s post on virtual, postponed and canceled events told organizers to set location to VirtualLocation and eventAttendanceMode to OnlineEventAttendanceMode for online-only events, and offered EventMovedOnline as a status. Many guides still repeat that advice. The current documentation drops it: the supported eventStatus values are EventCancelled, EventPostponed, EventRescheduled and EventScheduled.
What that means in practice:
- Webinars and online-only classes won’t appear in Google’s event experience, whatever the markup says. Schema.org’s EventStatusType still includes
EventMovedOnline, and the markup remains valid for other consumers, but don’t build a plan around Google showing it. - Hybrid events with a real venue have a real-world component, so the online-only exclusion doesn’t apply to them. Mark up the physical venue as the
Place. Google doesn’t document how it treats the online part. - In-person events are the core use case. Put the effort there.
How do you update eventStatus when plans change?
Change the status and leave everything else alone. Google’s documentation warns: “When the event status changes, DON’T remove the startDate”, because the start date and location identify the unique event. The flow below shows each case.
Scroll the diagram sideways to see all of it.
A postponed event moves to rescheduled once you know the new date: switch the status, put the new dates in startDate and endDate, and optionally record the old date in previousStartDate. In the rare case of an event rescheduled more than once, Google says previousStartDate may be repeated.
Status values are an enumeration, so spelling matters. In a test we ran in the Schema Markup Validator on September 22, 2026, "eventStatus": "Cancelled" returned an error listing the accepted values; the correct value is https://schema.org/EventCancelled.
Dates, times and time zones
Most event markup errors are date errors. Google’s documentation asks for ISO 8601 dates with the UTC offset of the event’s location, and gives specific rules for edge cases.
- Known start time: include the offset. An event at 7pm in New York during daylight saving time is
2026-10-15T19:00:00-04:00. - Day-long event, or time not announced: give the date only, like
2026-10-15. Don’t invent midnight. - Multi-day event: give both
startDateandendDate.
Google’s documentation shows why midnight is a trap, with worked examples of how it reads different date strings. The diagram below reproduces them.
Scroll the diagram sideways to see all of it.
A bare 2019-07-20T00:00:00 is, in Google’s words, “likely wrong unless the event was meant to start at midnight”. Dates that come from a template default often produce exactly this. If you’re unsure how the date fields sit inside the markup, the JSON-LD guide walks through the syntax.
A complete event schema example
Here’s a complete block for a single in-person concert with one ticket type. Replace every value with your own and keep it identical to what the page shows.
{
"@context": "https://schema.org",
"@type": "Event",
"name": "The Harbor Lights: Autumn Tour, feat. Q&A with the band",
"startDate": "2026-10-15T19:30:00-04:00",
"endDate": "2026-10-15T22:30:00-04:00",
"eventStatus": "https://schema.org/EventScheduled",
"description": "An evening set of the album in full, followed by a 20-minute audience Q&A.",
"image": ["https://example.com/img/harbor-lights-1920x1080.jpg"],
"location": {
"@type": "Place",
"name": "Riverside Music Hall",
"address": {
"@type": "PostalAddress",
"streetAddress": "200 River Rd",
"addressLocality": "Springfield",
"addressRegion": "MA",
"postalCode": "01103",
"addressCountry": "US"
}
},
"offers": {
"@type": "Offer",
"url": "https://example.com/tickets/harbor-lights-oct-15/",
"price": 35.00,
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"validFrom": "2026-08-01T10:00:00-04:00"
},
"performer": { "@type": "PerformingGroup", "name": "The Harbor Lights" },
"organizer": { "@type": "Organization", "name": "Riverside Music Hall", "url": "https://example.com/" }
}
Note what isn’t in the name: no venue, no price, no “tickets on sale”. Google’s best practice is a title that highlights “a unique aspect of the event”, which is why the Q&A is there. Test the live page in the Rich Results Test, which supports Event, and use the preview to check the date and venue read correctly.
Events can also carry reviews and ratings; Event is one of the types Google lists as eligible in its review snippet guidelines, covered in review schema. If the venue itself has a page, describe it with local business schema and keep its name identical to location.name.
Keeping event schema accurate through the event lifecycle
Event schema goes stale faster than any other type. Every event has a lifecycle (announced, on sale, sold out, maybe postponed, over) and the markup has to follow it.
A lifecycle checklist:
- At announcement: publish the event page with
name,startDate,locationandeventStatus. If tickets aren’t on sale, omitavailabilityand setvalidFrom. - At on-sale: add
availability: InStockand the lowest price including fees. - When it sells out: switch to
SoldOut. Google asks you to update the price “as prices change or tickets sell out”. - If plans change: update
eventStatusas shown above, never deletingstartDate. - After it ends: Google’s general guidelines say it won’t show rich results for time-sensitive content that is no longer relevant. Keep the page for history, but don’t expect it in the event experience.
Generate the markup from your event database or ticketing system so these changes happen automatically; hand-edited event markup is how canceled shows keep appearing as on sale. After changes, Google’s 2020 events post recommended making your sitemap available automatically through your server so updates are found quickly, and Search Console’s Events report shows valid and invalid items at scale (see our Google Search Console guide).
If you publish a large calendar, run events across several venues, or need markup generated from a ticketing feed, our schema markup service builds event markup from your source data and tests every template.
Frequently asked questions
What is event schema?
Event schema is structured data using the schema.org Event type to describe a single event on its own page: its name, start date and time, venue and address, tickets, organizer and status. Google uses it to make pages eligible for the event experience in Search and other products such as Maps.
What is an example of event schema?
A minimal example is a JSON-LD block with @type Event, a name such as the concert title, a startDate with a time and UTC offset, and a location of type Place with a name and PostalAddress. Google requires those three properties; offers, image, description, organizer and eventStatus are recommended.
Does Google support event schema for online events?
Not in its event experience any more. Google's current guidelines say virtual experiences with no real-world component are not supported and that events must take place in a physical location. Schema.org still defines VirtualLocation and online attendance modes, so the markup remains valid; it just will not earn Google's event feature.
What should I do in event schema when an event is canceled?
Set eventStatus to EventCancelled and leave everything else, including startDate and location, exactly as it was. Google uses those properties to identify the event, so removing or changing them makes it harder to show people that this specific event was canceled.
Can I use event schema for a sale or a promotion?
No. Google's guidelines tell you not to mark up non-events such as short-term discounts, coupons, trip packages or business hours as events. Google's manual actions list includes both non-events labeled as events and event markup that is really a promotion.
Where is Google's event search experience available?
Google's documentation lists Australia, Brazil, Canada, Germany, India, Latin America, Spain, the United Kingdom and the United States, in the languages listed for each region, such as English in the United States and Portuguese in Brazil.