Event Schema Generator
Fill in the event details and get copy-paste Event JSON-LD with ISO 8601 dates, a proper Place or VirtualLocation, and Offer markup for tickets. Validation catches the mistakes that keep events out of Google's event experience.
Where attendees join or watch: stream page, webinar link, or registration page.
Free event with tickets? Set price to 0 rather than removing the offer.
Where to paste this
Copy the full block, script tags included, and paste it into the HTML of the event's own page, the URL where someone would read about and book this specific event. One event, one page, one block of markup. For recurring events, each occurrence with its own date should be its own Event object, either on separate pages or as multiple objects on one page.
Dates, status, and attendance mode
The generator combines your date and time fields into ISO 8601 timestamps, the format Google expects. The attendance mode controls the location shape: offline events get a Place with a PostalAddress, online events get a VirtualLocation with a URL, and mixed events carry both in a location array. Event status matters most when plans change. A postponed or cancelled event keeps its page and its original startDate, with only eventStatus updated, so Google can tell searchers what happened instead of showing a dead link.
Ticket offers that validate
An Offer needs a numeric price, a currency code, and ideally an availability state and the URL where tickets are actually sold. The price for a free event is 0, not an omitted field: if people need a ticket to attend, the offer should exist and say it costs nothing. The validFrom date tells Google when sales open, which feeds the "tickets on sale" treatment in event listings.
Frequently asked questions
Do I need an end date?
No, endDate is recommended rather than required. Google only requires name, startDate, and location for event rich results. That said, an end date helps Google show accurate timing, decide when the event has passed, and avoid showing stale listings, so include it whenever you know it.
How do online events work in event schema?
Set eventAttendanceMode to OnlineEventAttendanceMode and use a VirtualLocation with a url property instead of a physical Place. The URL should point to where attendees actually join or watch, such as a webinar registration page or livestream. Mixed events combine both: a Place for the venue and a VirtualLocation for the stream, with MixedEventAttendanceMode.
What should I do when an event is cancelled?
Keep the page live and set eventStatus to EventCancelled, leaving the original date in startDate. Do not delete the page or redirect it. People will still search for the event, and a page that clearly states the cancellation serves them better than a 404. The same applies to postponed events: use EventPostponed and update startDate once the new date is known.
Where do event rich results actually appear?
Eligible events can appear in the Google events experience, the interactive list that shows when people search for things like 'concerts near me' or 'events this weekend', and as enriched results under your normal listing with date and location details. Coverage varies by region, and Google sources events from markup, ticketing partners, and direct integrations.