Event markup that search engines understand
The JSON-LD Event Schema Builder packages your event details into a valid schema.org/Event block. Correct markup makes your concert, webinar or conference eligible for Google’s event experience, where date, location and tickets appear in a tidy card.
How it works
The tool emits a root Event object with name, description, startDate and endDate as ISO 8601 strings produced from the date inputs. The eventAttendanceMode and eventStatus fields use full schema.org URLs. For physical events, the location is a Place with a nested PostalAddress; for online events it becomes a VirtualLocation with the streaming URL; mixed events emit both as an array. The organizer is an Organization and the performer a Person or Organization. When you supply ticket details, an offers Offer object is added with price, priceCurrency, availability and url.
Tips and example
Always include both startDate and endDate — single-day events still benefit from an explicit end. Use a real time-zone offset so the event appears at the right local time for searchers. A minimal online location looks like this:
"location": {
"@type": "VirtualLocation",
"url": "https://example.com/livestream"
}
Why Event structured data matters for discoverability
When a user searches “jazz concerts near me this weekend” or “machine learning webinars in November,” Google can surface a dedicated event experience — a card showing the date, venue, and a link to buy tickets — rather than just a blue link. That card is only possible when the page carries valid Event markup. Without it, your event page competes for a plain organic result alongside every other listing.
The event experience also appears in Google Search’s “Events” tab, in local search results, and sometimes in voice assistant responses. Getting into those placements requires no extra submission — the structured data does the work.
The eventAttendanceMode field explained
This field tells search engines whether your event requires physical attendance, is fully online, or allows both. The value must be a full schema.org URL:
| Mode | URL value |
|---|---|
| In-person only | https://schema.org/OfflineEventAttendanceMode |
| Online only | https://schema.org/OnlineEventAttendanceMode |
| Hybrid (both) | https://schema.org/MixedEventAttendanceMode |
For hybrid events, the location property should be an array containing both a Place (with a PostalAddress) and a VirtualLocation (with the streaming URL). Omitting one of them from a hybrid event means attendees of the other type cannot find the information they need.
Handling cancellations and rescheduling
The eventStatus field can be updated after publication without creating a new page. If your event is postponed, change the value to https://schema.org/EventPostponed and update the dates. If it is cancelled entirely, use https://schema.org/EventCancelled. Search engines read the updated markup on the next crawl and can display the status change in results — important for preventing disappointed attendees from showing up.
Available status values:
https://schema.org/EventScheduled(default — everything is going ahead)https://schema.org/EventCancelledhttps://schema.org/EventPostponedhttps://schema.org/EventRescheduled(use with a newpreviousStartDateto record the original date)
Worked example — a hybrid conference
{
"@context": "https://schema.org",
"@type": "Event",
"name": "DevConnect 2026",
"startDate": "2026-09-12T09:00:00+01:00",
"endDate": "2026-09-12T18:00:00+01:00",
"eventAttendanceMode": "https://schema.org/MixedEventAttendanceMode",
"eventStatus": "https://schema.org/EventScheduled",
"location": [
{
"@type": "Place",
"name": "ExCeL London",
"address": {
"@type": "PostalAddress",
"streetAddress": "Royal Victoria Dock",
"addressLocality": "London",
"postalCode": "E16 1XL",
"addressCountry": "GB"
}
},
{
"@type": "VirtualLocation",
"url": "https://devconnect.example.com/livestream"
}
],
"offers": {
"@type": "Offer",
"price": "199",
"priceCurrency": "GBP",
"availability": "https://schema.org/InStock",
"url": "https://devconnect.example.com/tickets"
}
}
This block covers both attendance modes, includes a ticket offer, and uses time-zone-aware ISO 8601 dates.