Event
Event schema describes any time-bound gathering: conferences, concerts, webinars, workshops, festivals, sporting events, and meetups. It powers Event rich results in Google Search, displaying the event name, date, location, and ticket details directly in search listings. Events also appear in Google's dedicated Events search experience and feed AI answer engines the structured data they need to answer "when," "where," and "who" questions.
Google Rich Result Requirements
Google requires name and startDate for Event rich results. Additional recommended fields increase the richness and accuracy of the listing.
Fields
Required by Google
- startDate — The start date and time of the event in ISO 8601 format.
Recommended by Google
- endDate — The end date and time of the event in ISO 8601 format.
- eventStatus — Whether the event is scheduled, cancelled, rescheduled, postponed, or moved online.
- organizer — The person or organization hosting the event.
- performer — The participants performing at the event.
Not mentioned by Google
- doorTime — When admission begins at the venue.
- eventAttendanceMode — Whether the event is in person, online, or hybrid.
- inLanguage — The language of the event content or performance.
- location — Where the event takes place (physical venue, virtual platform, or both).
Note: location and eventAttendanceMode are not explicitly named in Google's Event documentation as standalone properties, but they appear in Google's Event examples and are widely used by major ticketing platforms.
JSON-LD Example
A complete Event schema for a tech conference:
{
"@context": "https://schema.org",
"@type": "Event",
"name": "Webflow Conf 2024",
"startDate": "2024-10-09T09:00:00-07:00",
"endDate": "2024-10-10T17:00:00-07:00",
"eventStatus": "https://schema.org/EventScheduled",
"eventAttendanceMode": "https://schema.org/MixedEventAttendanceMode",
"location": [
{
"@type": "Place",
"name": "Palace of Fine Arts",
"address": {
"@type": "PostalAddress",
"streetAddress": "3601 Lyon St",
"addressLocality": "San Francisco",
"addressRegion": "CA",
"postalCode": "94123",
"addressCountry": "US"
}
},
{
"@type": "VirtualLocation",
"url": "https://webflow.com/conf"
}
],
"organizer": {
"@type": "Organization",
"name": "Webflow",
"url": "https://webflow.com"
},
"performer": [
{
"@type": "Person",
"name": "Vlad Magdalin"
},
{
"@type": "Person",
"name": "Linda Tong"
}
],
"inLanguage": "en"
}
Webflow Implementation
Static event pages: Add the full JSON-LD block in Page Settings > Custom Code (Before ). Update the schema manually when event details change.
CMS template pages: Create CMS fields for each Event property (date, venue name, address fields, organizer, performer). Reference them in an HTML embed with a JSON-LD script tag. Each CMS event item generates its own schema.
Schema HQ: Automates Event schema generation from your Webflow CMS fields. Select the Event type, map your fields, and publish. Handles nested structures (Place, PostalAddress, VirtualLocation, Organization) without manual embed code.
Key Implementation Notes
- Create a separate Event entity for each date of a recurring event. Google recommends individual entries over date ranges.
- When an event is cancelled or rescheduled, update
eventStatusrather than removing the schema. Keep the page live with the updated status. - Pair
eventAttendanceModewith the matchinglocationtype:Placefor offline,VirtualLocationfor online, both for hybrid. - Include timezone offsets in
startDateandendDatefor events promoted across time zones.