Event Schema Markup Generator
Generate search-compliant Schema.org Event JSON-LD structured data. Effortlessly configure offline venues, virtual webinars, multi-tier ticket offers, and performers completely client-side in seconds.
đ Basic Event Information
đ Event Location Details
đ¤ Performers & Organizer
đī¸ Ticket Offers / Pricing Tiers
Rich Snippets Validator: You can directly validate this structured code block inside Google's Rich Results Test suite to verify indexability.
How Schema.org Event JSON-LD Works Under the Hood
Search engine crawlers rely heavily on structured data schemas to extract machine-readable facts about scheduled events. By injecting a Schema.org Event node inside a standardized <script type="application/ld+json"> block, you construct an explicit Knowledge Graph node. This tells Google\'s crawler exactly what the event name is, when it starts, who is performing, and where attendees should gather. This programmatic approach eliminates the need for crawlers to rely on natural language processing (NLP) to read dates and venues off your visual page, bypassing errors and boosting your eligibility for rich search snippets on Google Search and Maps.
An advanced implementation of the Event specification requires mapping key logical dependencies, particularly around the event\'s physical or virtual venue. The eventAttendanceMode property determines the structural children expected. Physical locations require nesting a Place object with its associated address (a PostalAddress node containing properties like streetAddress, addressLocality, and addressCountry). Conversely, virtual webinars require a VirtualLocation entity specifying the direct broadcast URL. For hybrid structures, an array of both physical and virtual locations is structured, providing search results with robust data points for online and local audiences.
Ticketing tiers and commercial transaction structures are declared using the offers array. Each tier is specified as a standard Offer entity enclosing pricing specifications, three-letter ISO currencies, availability state anchors (such as InStock, OutOfStock, or PreOrder), and direct ticket checkout URLs. When search algorithms process these nodes, they dynamically extract the pricing range and inventory state. Highlighting this structured data accurately is essential because any mismatch between the visual pricing displayed on the page and the raw JSON-LD markup violates Google\'s quality guidelines, which could lead to manual structured data actions.
Before & After: Form State to Compiled JSON-LD Graph
â Before â Visual Event Parameters in HTML
Event Name: Web Dev Summit 2026 Attendance: Mixed (Hybrid) Venue: Moscone Center, SF, CA Webinar Link: https://zoom.us/j/123 Performers: Jane Doe Price: General Admission ($49.00 USD)
â After â Google-Compliant JSON-LD Schema
{
"@context": "https://schema.org",
"@type": "Event",
"name": "Web Dev Summit 2026",
"eventAttendanceMode": "https://schema.org/MixedEventAttendanceMode",
"location": [
{
"@type": "Place",
"name": "Moscone Center",
"address": {
"@type": "PostalAddress",
"addressLocality": "San Francisco",
"addressRegion": "CA",
"addressCountry": "US"
}
},
{
"@type": "VirtualLocation",
"url": "https://zoom.us/j/123"
}
],
"performer": {
"@type": "Person",
"name": "Jane Doe"
},
"offers": {
"@type": "Offer",
"name": "General Admission",
"price": "49.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
}
}
Attendance Mode Features & Location Node Requirements
| Attendance Mode | Schema Location Node | Key Properties Required |
|---|---|---|
| OfflineEventAttendanceMode | Place (representing a physical building or venue) | Venue name, street address, city, region, postal code, and two-letter country ISO code. |
| OnlineEventAttendanceMode | VirtualLocation (representing virtual webinars) | A direct broadcast URL where attendees register, stream, or join the live broadcast (e.g. Zoom/Teams). |
| MixedEventAttendanceMode | Array containing both Place and VirtualLocation | Both physical postal address coordinates and online webinar links declared together. |
Common Mistakes & Troubleshooting
- âOmission of Time Zone Offsets: Declaring a start date without timezone parameters (e.g.
2026-05-29T19:00:00) forces search engine parsers to guess the timezone or default to GMT. Ensure all ISO-8601 datetimes contain proper offsets (e.g.-08:00) to maintain absolute consistency. - âTicket Pricing and Availability Mismatches: Google strictly penalizes properties whose structured data price does not match the actual user-facing content. Always verify that structural price objects are dynamically synchronized with visible catalog entries.
- âInvalid performer type declaration: Declaring a performer without choosing between a
PersonorOrganizationstructure triggers validation warnings. Verify you declare the exact type property to establish correct Knowledge Graph parameters.
- Define a stable and unique absolute URL for each event\'s
@idparameter to prevent schema collisions in complex pages. - Always specify start and end dates with standard ISO-8601 formatting and explicit UTC timezone parameters.
- Maintain clear ticketing parameters including price, currency, availability, and specific booking links.
- Keep organizer and speaker entities organized by setting appropriate names, types, and primary reference websites.
- Verify every generated JSON-LD block inside Google\'s Rich Results Test suite before publishing it live to production.
Frequently Asked Questions
Why should I add Google-compliant Event Schema markup to my webpages? +
Event Schema enables search engines like Google to index and display your concerts, webinars, festivals, or classes as detailed rich snippets directly on SERPs and Maps. These rich previews include high-visibility details like dates, physical locations, virtual URLs, ticket prices, and performer info, which makes listings highly clickable. Implementing this markup correctly establishes clear structured data relationships that make your events eligible for premium placement in search engines. By providing this metadata in standard JSON-LD format, you help Google's crawlers easily index the event without relying on complex NLP heuristics.
How does Google distinguish between physical, virtual, and hybrid event attendance modes? +
Google utilizes the eventAttendanceMode property to differentiate how participants attend the event in standard Schema.org specifications. For physical locations, the property is defined as OfflineEventAttendanceMode and expects a complete Place node containing physical address specifications. Virtual webinars or online streams are declared using OnlineEventAttendanceMode alongside a VirtualLocation node enclosing the online broadcast URL. If your event has both physical and online options, setting it to MixedEventAttendanceMode permits you to supply an array containing both venue addresses and web URLs seamlessly, enabling hybrid display.
What is the correct way to declare multiple ticket tiers and pricing structures? +
To define various ticket tiers like Early Bird, VIP, or General Admission, you must specify them as separate Offer types under the main offers property array. Each individual Offer node expects vital properties including name (the tier label), price (the ticket cost), priceCurrency (three-letter ISO currency code), url (the purchase link), and availability (using Schema.org states like InStock or OutOfStock). If you have a single ticket option, the offers property can be formatted as a single object, but multiple tiers must be grouped inside a structured JSON-LD array. This enables Google's search algorithms to display pricing ranges and availability statuses directly in rich search panels.
How does the schema represent rescheduled, postponed, or cancelled event statuses? +
Google uses the eventStatus property to inform crawlers and users of any schedule alterations or cancellations. The standard statuses supported are EventScheduled for active events, EventCancelled for cancellations, EventPostponed for events put on hold without a new date, and EventRescheduled for rescheduled events. If an event is cancelled or postponed, keeping the structured schema updated ensures search listings automatically display warning tags, saving users from confusion. Additionally, when rescheduling, you should update the startDate and endDate properties, while retaining the same event @id to preserve historical search index signals.
Can I specify both Person and Organization types as performers inside my JSON-LD? +
Yes, Schema.org's performer property is highly flexible and accepts either a Person or an Organization structured entity type. For solo speakers, musicians, or trainers, you should declare @type: "Person" alongside their name and optionally their professional website URL. For musical groups, corporate companies, or performing troupes, declare @type: "Organization" to establish correct institutional relationships in the Knowledge Graph. If your event has a lineup of multiple guests, you can provide an array of performer nodes, allowing search engines to index and link each individual contributor.
How do ISO-8601 time zones impact search engine display for event times? +
Google requires event start and end dates to conform strictly to the ISO-8601 standard, which includes the local date, time, and timezone offset. Declaring a generic date without timezone offsets (e.g. 2026-05-29T19:00:00) forces search engines to guess the timezone or default to GMT, causing incorrect times to display to local searchers. By appending the offset (like -08:00 for Pacific Standard Time or +01:00 for British Summer Time), you ensure the event times display correctly regardless of the user's geographical location. Our generator automatically computes local system timezone offsets client-side to ensure compliance.
How do I validate and test the compiled Event JSON-LD schema before publishing it? +
Once you generate the JSON-LD script block, you should test it using Google's official Rich Results Test suite and Schema Markup Validator. These tools parse your JSON-LD input, checking for mandatory fields like event name, start date, and location, and reporting any syntax or logical warnings. By copying the output directly from our generator and validating it, you can identify missing optional properties like organizer or ticket details before uploading it to your site. Once validated, paste the <script type="application/ld+json"> tag directly inside your page's HTML <head> or body.
Related SQL, Data & Schema Utilities
Design database schemas visually
Generate visual entity diagrams
Convert tabular CSV to schema-defined XML
Translate DevOps YAML to JSON format
Translate nested YAML to flat TOML syntax
Build rich structured metadata â you are here