Overview
Introduction
Event schema is what lets a concert, conference, or webinar show up in Google's dedicated event search results and Events carousel, complete with date, location, and ticket price, rather than as a plain link. Getting the nesting right by hand is fiddly: location is either a Place or a VirtualLocation depending on the event format, and both eventAttendanceMode and eventStatus have to be full schema.org URIs, not plain words.
This generator takes the fields that actually drive Event rich results (name, dates, location, attendance mode, status, and an optional ticket offer) and outputs a correctly-nested JSON-LD block ready to paste into a page's <head>.
What Is Event Schema Generator?
A form-driven generator for Event JSON-LD, covering both physical events (a venue name and address, nested as a Place) and virtual or hybrid events (a join URL, nested as a VirtualLocation).
It also builds the eventAttendanceMode and eventStatus properties as the full schema.org enumeration URIs the spec requires, and an optional nested Offer for ticketed events.
How Event Schema Generator Works
Name, startDate, and endDate map directly to their Event properties; the location toggle switches the form between physical-venue fields (venue name, street address, city, region, postal code, country) and a single virtual-event URL field.
eventAttendanceMode and eventStatus are built from toggle buttons and expanded to their full https://schema.org/... form automatically; if a price is entered, it's combined with currency, a ticket URL, and availability into a nested Offer object.
When To Use Event Schema Generator
Publishing a conference, concert, meetup, or webinar page and wanting it eligible for Google's Events rich result and Events carousel.
Updating an existing event's schema after it's rescheduled, moved online, or cancelled, so the visible eventStatus stays accurate.
Often used alongside Structured Data Validator, Local Business Schema Generator and Organization Schema Generator.
Features
Advantages
- Switches between a nested Place and a nested VirtualLocation automatically based on whether the event is physical or virtual, without needing to remember either shape.
- Expands eventAttendanceMode and eventStatus to their full schema.org URI form automatically, both easy to get wrong writing JSON-LD by hand.
- Only builds the nested Offer object when a price is entered, so free events still produce valid minimal Event markup.
Limitations
- Covers a single location per event; true hybrid events that need both a Place and a VirtualLocation listed together aren't modeled by this generator's single location toggle.
- Doesn't validate that a virtual event's URL is actually reachable or that a physical venue's address is real.
- Supports one ticket Offer; events with multiple ticket tiers (early bird, VIP, and so on) need one generated Offer merged manually per tier, or an AggregateOffer shape not covered here.
Examples
Best Practices & Notes
Best Practices
- Keep eventStatus current on the live page whenever an event is postponed, rescheduled, or cancelled, rather than leaving stale 'Scheduled' markup.
- Include a real, specific startDate with a timezone offset (not just a bare date) whenever the event has a defined start time, so search results show accurate local timing.
- For virtual events, use the actual join or livestream URL as the VirtualLocation url, not a generic homepage link.
- Only add an Offer when tickets or registration genuinely exist; an Offer with a placeholder price misrepresents the event.
Developer Notes
eventAttendanceMode and eventStatus are both schema.org enumerations, meaning valid values are full URIs (https://schema.org/OfflineEventAttendanceMode, https://schema.org/EventScheduled) rather than plain strings; this generator stores the short form internally and expands it at build time so the form stays readable while the output stays spec-correct.
Event Schema Generator Use Cases
- Adding structured data to a conference, meetup, or concert landing page before tickets go on sale
- Publishing a webinar or livestream page with a VirtualLocation join URL
- Updating an existing event page's eventStatus after a postponement or cancellation
Common Mistakes
- Writing eventAttendanceMode or eventStatus as a bare word like "Online" or "Cancelled" instead of the full https://schema.org/... URI the spec requires.
- Leaving a virtual event's location empty instead of providing a VirtualLocation with a real join URL.
Tips
- Run the generated output through the Structured Data Validator tool in this category before shipping, to confirm the location and date fields are both present and well-formed.
- For hybrid events, generate the Offline version for the venue details and manually add a second VirtualLocation entry to the location array if your platform requires both.