Free Event Schema Markup Generator
Table of Contents
Event schema gets your concerts, workshops, classes, conferences, and webinars into Google's event search results — with the date, venue, price, and ticket link showing right in the snippet. Without it, your event page is invisible to anyone using Google to find things to do. Our free generator builds Event JSON-LD with every field Google's event rich results support.
What Event Schema Does in Google Search
Event schema lets Google build event-specific search results: a card with the event name, date, time, venue, and a "Buy tickets" or "Register" link. These cards appear in regular search, in the dedicated Events search vertical, in Google Maps when users tap on a venue, and in the Google Discover feed for users in your area.
For event organizers, this is huge. Searches like "concerts in Austin this weekend" or "yoga classes near me" surface event-rich-result cards almost exclusively. If you don't have Event schema, you're not in those results.
Event schema also feeds Google Knowledge Graph and AI assistants — if someone asks Gemini or ChatGPT "what's happening in Brooklyn tonight," the AI pulls from sites with structured event data.
Required and Recommended Event Fields
Required:
- name — event name
- startDate — in ISO 8601 format with timezone (e.g., 2026-04-15T19:00:00-05:00)
- location — Place object with name and address (or VirtualLocation for online events)
Recommended:
- endDate — same format as startDate
- image — promotional image (1200px+)
- description — what the event is about
- offers — ticket info: price, currency, availability, validFrom, url
- performer — Person or PerformingGroup for music acts, speakers
- organizer — Organization or Person hosting the event
- eventStatus — EventScheduled, EventCancelled, EventPostponed, EventRescheduled, EventMovedOnline
- eventAttendanceMode — OfflineEventAttendanceMode, OnlineEventAttendanceMode, MixedEventAttendanceMode
The eventStatus field became important during the pandemic and remains so — Google uses it to show "Cancelled" or "Online only" badges on event cards. Always include it.
In-Person, Virtual, or Both
Set eventAttendanceMode based on the event format:
- OfflineEventAttendanceMode — physical event, in-person only. Use Place for location with full address.
- OnlineEventAttendanceMode — fully virtual. Use VirtualLocation with the URL of the streaming page or webinar registration.
- MixedEventAttendanceMode — both in-person and live-streamed. Include both a Place and a VirtualLocation.
For online events, the URL in VirtualLocation should be the registration or stream landing page — not your homepage. Google uses this for the "Register" link in the event card.
Sell Custom Apparel — We Handle Printing & Free ShippingTicket Pricing, Availability, and the Offers Block
The offers block is where you tell Google about ticket pricing. It's an Offer object with these fields:
- price — numeric value (e.g., "25.00")
- priceCurrency — three-letter ISO code (USD, EUR, GBP)
- availability — InStock, SoldOut, PreOrder, etc. (use schema.org URLs)
- validFrom — when tickets go on sale (ISO 8601)
- url — direct link to ticket purchase page
If you have multiple ticket tiers (VIP, general admission, early bird), use an array of Offer objects. The generator handles both single and multi-tier pricing.
For free events, set price to "0" and include the offers block anyway — Google still uses it for the "Free" badge in the card.
Recurring Events: One Schema Per Date
Google's documentation is explicit on this: don't use one Event with a recurring rule. Instead, create one Event entry per occurrence. So if you run a yoga class every Tuesday for 12 weeks, you should have 12 Event entries — each with its own startDate.
The cleanest pattern: create an event listing page (e.g., yoursite.com/events/tuesday-yoga/), then dynamically render the next 8-12 occurrences as separate Event JSON-LD blocks on that page. As each event passes, it falls off the list and a new one is added. Google indexes them as upcoming events.
This is more work than a recurrence rule, but it's the only pattern Google supports. The good news: each event becomes its own potential rich result entry, so you get more visibility, not less.
Updating Event Status When Things Change
If an event gets cancelled, postponed, or moved online, update the eventStatus field immediately. Don't delete the page — Google will show stale info to anyone who searches in the meantime. Update the status, save, and Google will pick it up on the next crawl (typically within hours for popular pages).
Status values:
- EventScheduled — the default, event is happening as planned
- EventCancelled — event will not happen
- EventPostponed — event delayed but new date not set yet
- EventRescheduled — new date confirmed; update startDate as well, and add previousStartDate
- EventMovedOnline — was in-person, now virtual; update location to VirtualLocation
Google shows status badges directly on the event card. Updating quickly is essential for trust — sites that consistently show inaccurate event info get demoted in the events vertical.
Try It Free — No Signup Required
Runs 100% in your browser. No data is collected, stored, or sent anywhere.
Open Free Schema Markup GeneratorFrequently Asked Questions
Does Event schema work for online webinars?
Yes. Set eventAttendanceMode to OnlineEventAttendanceMode and use VirtualLocation instead of Place. The URL inside VirtualLocation should be your registration or stream page. Google indexes online events alongside in-person ones.
Should I use one Event entry for a recurring class?
No. Google requires one Event per occurrence. If you run a class every Tuesday, create separate Event entries for each Tuesday's instance, each with its own startDate. Recurrence rules are not supported.
How do I include multiple ticket tiers in Event schema?
Use an array of Offer objects in the offers field. Each Offer has its own price, priceCurrency, name (like "VIP" or "General Admission"), and availability. Google can show multiple price tiers in the rich result.
What time format does startDate use?
ISO 8601 with timezone. Example: 2026-04-15T19:00:00-05:00 for 7pm Central Time on April 15, 2026. Always include the timezone offset — without it, Google may show the wrong time to users in different time zones.
Can I add Event schema to multiple events on one page?
Yes. Use an array of Event entries inside one script block, or use multiple separate script blocks. Both work. Google parses all Event entries on a page. This is the recommended pattern for an "upcoming events" listing page.
Does Event schema affect Google Maps listings?
Indirectly. Google can pull events from Event schema and show them in Maps under your venue listing — particularly if you also have a Google Business Profile and the schema is on a page Google trusts. Adding Event schema is a prerequisite, not a guarantee.

