When someone searches for concerts, workshops, conferences, or local happenings, Google can display event information directly in search results. Event schema transforms your event pages into rich listings showing dates, times, venues, and ticket information without users needing to click through. For event organizers and venues, this visibility can significantly impact attendance.
How Event Rich Results Appear
Event schema enables several distinct search features:
Event rich results display event details beneath your listing, including date, time, and venue information.
Events knowledge panel aggregates events for venue or artist searches, pulling from multiple sources including schema-marked pages.
Events carousel appears for event-related queries, showing multiple upcoming events in a horizontal scrollable format.
Google Events search surfaces schema-marked events in dedicated event search interfaces, particularly on mobile.
The visual prominence varies by query and device, but the pattern is consistent: structured event data earns enhanced visibility that plain event pages don’t receive.
For Nashville venues and event organizers, this matters particularly for competitive entertainment queries. When someone searches “concerts in Nashville this weekend,” event-marked pages have advantages over pages relying solely on title and description.
When to Use Event Schema
Event schema applies to specific, scheduled happenings that people can attend, either physically or virtually.
Appropriate uses:
Concerts and performances. Conferences and conventions. Workshops and classes. Meetups and networking events. Sports games and matches. Theater productions. Festivals and fairs. Webinars and online events.
Inappropriate uses:
Business hours or open houses. Coupon expiration dates. Product launch dates. Ongoing exhibitions without specific session times. Recurring business operations.
The key distinction: events have specific start times and are individually attendable. “Our store is open Saturday” isn’t an event. “Saturday morning coffee tasting class at 10 AM” is an event.
| Content Type | Event Schema? | Why |
|---|---|---|
| Concert on March 15 at 8 PM | Yes | Specific time, attendable |
| Museum open daily 9-5 | No | Operating hours, not event |
| Weekly yoga class series | Yes (each class) | Individual sessions are events |
| Product available March 1 | No | Launch date, not attendance |
| Webinar on marketing trends | Yes | Specific time, virtual attendance |
Required Properties
Google requires certain properties for event rich result eligibility.
name provides the event title:
"name": "Nashville Jazz Festival 2025"
startDate specifies when the event begins, using ISO 8601 format:
"startDate": "2025-06-15T19:00:00-05:00"
Include timezone offset for clarity. Central time during daylight saving is -05:00.
location indicates where the event takes place. For physical events:
"location": {
"@type": "Place",
"name": "Ryman Auditorium",
"address": {
"@type": "PostalAddress",
"streetAddress": "116 5th Avenue North",
"addressLocality": "Nashville",
"addressRegion": "TN",
"postalCode": "37219",
"addressCountry": "US"
}
}
Location Types: Physical, Virtual, and Hybrid
Event location handling has evolved to accommodate virtual and hybrid events.
Physical events use Place type with full address:
"location": {
"@type": "Place",
"name": "Music City Center",
"address": {
"@type": "PostalAddress",
"streetAddress": "201 Rep. John Lewis Way S",
"addressLocality": "Nashville",
"addressRegion": "TN",
"postalCode": "37203",
"addressCountry": "US"
}
}
Virtual events use VirtualLocation:
"location": {
"@type": "VirtualLocation",
"url": "https://www.example.com/webinar-link"
}
Hybrid events serving both in-person and online audiences include both:
"location": [
{
"@type": "Place",
"name": "Nashville Convention Center",
"address": {
"@type": "PostalAddress",
"addressLocality": "Nashville",
"addressRegion": "TN"
}
},
{
"@type": "VirtualLocation",
"url": "https://www.example.com/livestream"
}
]
For virtual events, the eventAttendanceMode property clarifies the format:
"eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode"
Options include:
- OnlineEventAttendanceMode (virtual only)
- OfflineEventAttendanceMode (physical only)
- MixedEventAttendanceMode (hybrid)
Recommended Properties
Beyond required properties, several recommended fields enhance rich result display.
endDate shows event duration:
"endDate": "2025-06-15T23:00:00-05:00"
description provides event summary:
"description": "Annual jazz festival featuring local and international artists across three stages, with food vendors and family activities."
image adds visual element to rich results:
"image": [
"https://www.example.com/photos/jazz-fest-16x9.jpg",
"https://www.example.com/photos/jazz-fest-4x3.jpg"
]
Provide multiple aspect ratios for optimal display across devices.
performer identifies artists or speakers:
"performer": {
"@type": "MusicGroup",
"name": "The Nashville Jazz Collective"
}
For multiple performers:
"performer": [
{
"@type": "Person",
"name": "Sarah Johnson"
},
{
"@type": "MusicGroup",
"name": "Downtown Jazz Quartet"
}
]
organizer identifies the event host:
"organizer": {
"@type": "Organization",
"name": "Nashville Arts Council",
"url": "https://www.nashvillearts.example.org"
}
Ticket and Offer Information
Ticket details significantly enhance event rich results by showing pricing and availability.
"offers": {
"@type": "Offer",
"url": "https://www.example.com/tickets/jazz-fest",
"price": "45.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"validFrom": "2025-01-01T10:00:00-06:00"
}
availability options include:
- InStock (tickets available)
- SoldOut (no tickets remaining)
- PreOrder (tickets not yet on sale)
For tiered pricing, use multiple offers:
"offers": [
{
"@type": "Offer",
"name": "General Admission",
"price": "45.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://www.example.com/tickets/ga"
},
{
"@type": "Offer",
"name": "VIP Package",
"price": "150.00",
"priceCurrency": "USD",
"availability": "https://schema.org/LimitedAvailability",
"url": "https://www.example.com/tickets/vip"
}
]
For free events:
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
}
Always include price even for free events. “0” with currency makes the free status explicit.
Event Status Updates
Events get postponed, rescheduled, or cancelled. The eventStatus property communicates these changes:
"eventStatus": "https://schema.org/EventScheduled"
Status options:
- EventScheduled (confirmed as planned)
- EventPostponed (delayed, new date TBD)
- EventRescheduled (moved to new date)
- EventCancelled (not happening)
- EventMovedOnline (changed to virtual)
For rescheduled events, include both eventStatus and previousStartDate:
"eventStatus": "https://schema.org/EventRescheduled",
"startDate": "2025-07-20T19:00:00-05:00",
"previousStartDate": "2025-06-15T19:00:00-05:00"
Update schema promptly when event status changes. Users finding outdated information in search results damages trust.
Recurring Events
Events that repeat require separate Event entities for each occurrence.
A weekly concert series needs individual Event schema for each date:
[
{
"@context": "https://schema.org",
"@type": "Event",
"name": "Tuesday Jazz Night at The Blue Room",
"startDate": "2025-02-04T20:00:00-06:00",
"location": {...}
},
{
"@context": "https://schema.org",
"@type": "Event",
"name": "Tuesday Jazz Night at The Blue Room",
"startDate": "2025-02-11T20:00:00-06:00",
"location": {...}
},
{
"@context": "https://schema.org",
"@type": "Event",
"name": "Tuesday Jazz Night at The Blue Room",
"startDate": "2025-02-18T20:00:00-06:00",
"location": {...}
}
]
Don’t use date ranges to represent recurring events. Each occurrence needs its own Event entity for proper display and discovery.
For events with many occurrences, consider generating schema dynamically or maintaining a reasonable window (next 8-12 occurrences rather than a full year).
Complete Implementation Example
A Nashville venue’s concert listing:
{
"@context": "https://schema.org",
"@type": "MusicEvent",
"name": "Country Legends Tribute Night",
"description": "Live tribute performances honoring Nashville's greatest country music legends, featuring local artists performing classic hits.",
"image": [
"https://www.examplevenue.com/images/legends-tribute-16x9.jpg",
"https://www.examplevenue.com/images/legends-tribute-4x3.jpg",
"https://www.examplevenue.com/images/legends-tribute-1x1.jpg"
],
"startDate": "2025-03-22T20:00:00-05:00",
"endDate": "2025-03-22T23:00:00-05:00",
"eventStatus": "https://schema.org/EventScheduled",
"eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
"location": {
"@type": "Place",
"name": "The Nashville Stage",
"address": {
"@type": "PostalAddress",
"streetAddress": "456 Broadway",
"addressLocality": "Nashville",
"addressRegion": "TN",
"postalCode": "37201",
"addressCountry": "US"
}
},
"performer": [
{
"@type": "MusicGroup",
"name": "The Legacy Band"
},
{
"@type": "Person",
"name": "Johnny Walker"
}
],
"organizer": {
"@type": "Organization",
"name": "Nashville Live Events",
"url": "https://www.nashvillelive.example.com"
},
"offers": [
{
"@type": "Offer",
"name": "General Admission",
"price": "35.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://www.examplevenue.com/tickets/legends-tribute",
"validFrom": "2025-01-15T10:00:00-06:00"
},
{
"@type": "Offer",
"name": "VIP Table",
"price": "100.00",
"priceCurrency": "USD",
"availability": "https://schema.org/LimitedAvailability",
"url": "https://www.examplevenue.com/tickets/legends-tribute-vip",
"validFrom": "2025-01-15T10:00:00-06:00"
}
]
}
Common Mistakes to Avoid
Past events with active schema. Remove or update schema for events that have already occurred. Showing past events as current damages user trust.
Missing timezone in dates. “2025-03-22T20:00:00” without timezone offset creates ambiguity. Always include offset: “2025-03-22T20:00:00-05:00”.
Venue without full address. Location with just venue name doesn’t provide enough information. Include complete postal address.
Outdated event status. Event was cancelled but schema still shows EventScheduled. Update status immediately when changes occur.
Promotional events that aren’t events. Sales, product launches, and promotional periods aren’t events. Don’t force Event schema onto non-event content.
Ticket links to wrong pages. Offer URL should go directly to ticket purchase, not homepage or general event listing.
Testing and Monitoring
Rich Results Test validates Event schema syntax and shows preview of potential rich result display.
Search Console tracks Events enhancement status across your site, reporting valid markup, warnings, and errors.
Manual search verification: After implementation, search for your event and check whether rich result elements appear. This can take days to process.
For venues and organizations with many events, automate schema generation through your event management or ticketing system. Manual implementation doesn’t scale for organizations hosting dozens or hundreds of events annually.
Sources
- Google Search Central: Event Structured Data
https://developers.google.com/search/docs/appearance/structured-data/event
- Schema.org: Event Type Definition
- Schema.org: VirtualLocation Type
https://schema.org/VirtualLocation
- Google Rich Results Test
https://search.google.com/test/rich-results
Event rich result display depends on query context, location, and Google’s presentation decisions. Valid schema enables eligibility but doesn’t guarantee display for every search.