Event Schema Explained: How to Generate Valid Event JSON-LD
Understand with AI
Discuss with your preferred AI assistant
From dates and venue to offers, performer, organizer, status, and attendance mode — the Event vocabulary is rich.
Google recommends JSON-LD over Microdata for every structured-data type, events included.
name, startDate, and location are the minimum needed to be eligible for an event rich result.
If you run events — conferences, webinars, concerts, workshops, or classes — Event schema is how you tell Google what is happening, where, and when. Add it correctly and your listing can appear directly in Search and Google Maps with the date, venue, and a ticket link, often before the searcher even clicks. This guide explains what Event JSON-LD is, the exact properties Google needs, and how to generate valid markup in seconds.
What Is Event Schema?
Event schema is a block of structured data based on the schema.org/Event vocabulary. It describes an event in a machine-readable format so search engines can understand and surface it. The recommended format is JSON-LD: a small script you paste into the head or body of your event page.
When Google can read your event details, it may show an enhanced result — an event listing with the name, date, location, and sometimes a price and ticket button. That richer listing earns more clicks than a plain blue link, and it also feeds Google's dedicated event experiences across Search and Maps.
Required and Recommended Properties
Google has a clear specification for Event markup. Some properties are required; the rest are strongly recommended because they unlock a fuller listing.
| Property | Required? | What it is |
|---|---|---|
| name | Required | The full title of the event. |
| startDate | Required | ISO 8601 date/time, ideally with a time-zone offset. |
| location | Required | A Place (with address) for in-person events, or a VirtualLocation (URL) for online events. |
| endDate | Recommended | When the event finishes — lets Google show duration. |
| eventStatus | Recommended | Scheduled, rescheduled, postponed, cancelled, or moved online. |
| eventAttendanceMode | Recommended | Offline, online, or mixed (hybrid). |
| image | Recommended | A high-quality event image URL. |
| offers | Recommended | Ticket price, currency, availability, and a purchase URL. |
| performer / organizer | Recommended | Who is performing and who is running the event. |
How to Generate Event JSON-LD, Step by Step
1. Name the event and set the dates
Use the real, public-facing event title. For dates, always format as ISO 8601 and include a time-zone offset (for example 2026-09-12T09:00-07:00). Without an offset, "9 AM" is ambiguous and Google may show the wrong local time to your audience.
2. Choose the attendance mode and add a location
Pick in-person, online, or hybrid. For in-person events, add a Place with a full postal address. For online events, add a VirtualLocation with the URL where the event happens. Hybrid events need both — a physical venue and an online URL — or Google may reject the markup.
3. Set the event status
Most events are EventScheduled. If plans change, update the status: a rescheduled event should also include the previous start date, and a "moved online" event should include the new streaming URL. Keeping status accurate protects the trust signals Google built during the pandemic-era event-status updates.
4. Add tickets, performer, and organizer
The offers object should carry a numeric price (no currency symbol), a currency code, an availability value, and a ticket URL. Add the performer (a Person or a PerformingGroup) and the organizer. These optional details make your listing far more compelling.
5. Validate, then publish
Paste the generated <script type="application/ld+json"> block into your event page. Then run it through Google's Rich Results Test and the Schema Markup Validator to confirm there are no errors before you ship.
Common Event Schema Mistakes
- Missing time-zone offsets — the single most common cause of wrong event times in Search.
- Prices with currency symbols — use
199, not$199; the currency lives inpriceCurrency. - Hybrid events with only one location — Google expects both a Place and a VirtualLocation.
- Markup that doesn't match the page — the structured data must describe content visible to users, or it violates Google's guidelines.
- Stale status — forgetting to update
eventStatuswhen an event is postponed or cancelled.
Where to Place the Markup
Put the JSON-LD on the canonical page for that specific event — one event per page is cleanest. You can place the script in the <head> or anywhere in the <body>; Google reads it either way. If you have many events, generate one block per event page rather than stuffing them all onto a calendar index.
Expert Tips
Always stamp the time zone
Format dates as ISO 8601 with an offset, e.g. 2026-09-12T09:00-07:00. A missing offset is the top cause of wrong event times shown in Search.
Match the markup to the page
Only mark up events that are actually visible on the page, keep eventStatus current, and run the Rich Results Test before publishing to catch errors early.
Frequently Asked Questions
What is Event schema used for?
Event schema gives search engines a structured description of your event — its name, date, location, and tickets — so Google can show an enhanced event listing in Search and Maps. That richer result is more eye-catching than a plain link and can drive more qualified clicks and ticket sales.
Is JSON-LD better than Microdata for events?
Yes. Google recommends JSON-LD for all structured data, including events. It lives in a single self-contained script, is easy to generate and validate, and doesn't tangle your HTML markup, so it's simpler to maintain than inline Microdata or RDFa.
Do I need a time-zone offset on event dates?
It's strongly recommended. Including an offset (like +05:30 or -07:00 ) removes ambiguity so Google shows the correct local start time. Dates without an offset are still valid schema.org, but they risk displaying the wrong time to people in other regions.
Will Event schema guarantee a rich result?
No structured data guarantees a rich result — Google decides based on quality and relevance. But valid, complete Event markup is a prerequisite: without it you cannot be eligible, and with it your odds of an enhanced listing rise significantly.