Event Schema Generator — Free JSON-LD for Events
Create valid Event structured data for concerts, conferences, webinars, festivals, and workshops. Get eligibility for Google Events and rich result enhancements.
📅Event Schema
Fields marked with * are required for valid schema markup.
JSON-LD Output
<span class=400">"text-gray-500"><script type=400">"application/ld+json"></span>
{
400">"@context": 400">"https://schema.org",
400">"@type": 400">"Event"
}
<span class=400">"text-gray-500"></script></span>Copy this code and paste it into the <head> section of your HTML page.
What is Event Schema?
Event schema is the Schema.org type that marks up scheduled, time-bound gatherings. It applies to any happening with a defined start time and audience — concerts, sports games, conferences, webinars, festivals, theater performances, workshops, religious services, and community meetups.
Implemented in JSON-LD, Event schema feeds Google's Events Search experience, ticket-listing rich results, the Knowledge Panel for events, and Google Maps event tiles. It is the single most important schema for any organization that sells tickets, hosts conferences, or runs scheduled programming.
Why Event Schema Matters
- Google Events search: Events with proper schema appear in Google's dedicated Events search experience (accessible via the "Events" filter on Google Search), reaching users actively looking for things to do.
- Knowledge Panel listings: Major events get Knowledge Panel cards with date, location, ticket links, and "Going" / "Interested" interactions directly in search results.
- Maps integration: Events tagged to a physical location appear on Google Maps with a dedicated event tile, drawing local search traffic.
- Ticket aggregator placement: Google's ticket aggregator feature surfaces multiple ticket sources for popular events. Without Event schema, your tickets won't be included.
- Voice search: Voice assistants use Event schema to answer "what's happening tonight" and "concerts near me" queries.
Event Schema Properties Explained
Required Properties
- name: Official event name. Match your page H1 exactly.
- startDate: ISO 8601 datetime with timezone offset (e.g.,
2026-06-15T19:00:00-04:00). Time zone is critical — never use just the date for time-specific events. - location: Either a Place (physical) with PostalAddress, or a VirtualLocation with URL. Hybrid events use both.
Strongly Recommended Properties
- endDate: When the event concludes. Critical for multi-day conferences and festivals. Same ISO 8601 format with timezone.
- description: A clear summary of the event content and audience.
- image: Event flyer, lineup poster, or venue photo (1200px+ wide).
- organizer: Nested Organization or Person who runs the event.
- performer: Nested Person or PerformingGroup — bands, speakers, athletes, presenters.
- offers: Ticket details. Include price, priceCurrency, availability, url, and validFrom.
- eventAttendanceMode: OfflineEventAttendanceMode, OnlineEventAttendanceMode, or MixedEventAttendanceMode.
- eventStatus: EventScheduled (default), EventCancelled, EventPostponed, EventRescheduled, or EventMovedOnline.
Step-by-Step Implementation
Step 1: Define Each Event as a Separate Entity
One URL = one Event schema. For recurring series (weekly classes, multi-night festivals), use separate URLs per occurrence with separate schemas. This is critical — Google's Events index treats each entity as a discrete event.
Step 2: Gather Precise Date/Time Data
Confirm exact start and end times with the timezone offset. Avoid ambiguous formats. ISO 8601 is the only accepted format — examples: 2026-06-15T19:30:00-07:00 (Pacific evening), 2026-12-31T23:59:00+00:00 (UTC New Year's Eve).
Step 3: Decide Attendance Mode
Specify whether the event is physical, virtual, or hybrid. Physical events need a Place with PostalAddress. Virtual events need a VirtualLocation URL. Hybrid needs both. This affects how Google categorizes and displays the event.
Step 4: Add Ticket Offers
If selling tickets, include offers with price, currency, availability (use Schema.org URLs like https://schema.org/InStock), and a direct URL to your ticket page. Multiple ticket tiers can be expressed as an offers array.
Step 5: Generate, Deploy, and Submit
Generate the JSON-LD with the tool above. Embed in your event detail page. Submit to Google via the Search Console URL Inspection tool to request priority indexing for time-sensitive events.
Event Schema Best Practices
- Always include timezone in ISO 8601 dates (e.g.,
+05:30,-04:00, never justZunless event is truly UTC). - Update
eventStatusimmediately when something changes (cancellation, postponement). Stale "EventScheduled" on a cancelled event misleads users. - For multi-performer events (festivals), list every performer as a separate Person/PerformingGroup in the performer array.
- Use absolute URLs in offers and links — relative URLs fail validation.
- Include venue photos in image array, not just promotional graphics.
- For virtual events, the VirtualLocation URL should be the event landing page (with ticket/registration link), not the actual stream URL.
- If tickets are sold out, set offers availability to
https://schema.org/SoldOut— do not remove the offers field.
Common Mistakes to Avoid
- Missing timezone offset in startDate (defaults to UTC, displaying wrong time to users).
- Reusing one Event schema across multiple recurring instances — Google treats this as a single event.
- Adding Event schema to event listing/category pages instead of individual event detail pages.
- Not updating eventStatus after cancellation or postponement.
- Mixing event attendance modes incorrectly — a hybrid event needs MixedEventAttendanceMode plus both Place and VirtualLocation.
- Using free-text dates ("June 15, 2026") instead of ISO 8601.
- Linking offers.url to the homepage instead of the specific ticket purchase page.
Frequently Asked Questions
What is Event schema markup?
Event schema is the Schema.org type for scheduled, time-bound gatherings — concerts, conferences, webinars, festivals, workshops, sports games, and theater shows. It tells Google when, where, who's organizing, and how to buy tickets.
What's the difference between physical and virtual events?
Use Event with eventAttendanceMode: OfflineEventAttendanceMode for physical, OnlineEventAttendanceMode for virtual, and MixedEventAttendanceMode for hybrid. Virtual events use VirtualLocation with a URL instead of a physical address.
Should I add Event schema for past events?
Yes, keep schema for past events but update eventStatus to EventScheduled (default), EventCancelled, EventPostponed, EventRescheduled, or EventMovedOnline depending on what happened. Don't delete schema retroactively — it preserves historical event listings.
How do I handle recurring events?
Create one Event entity per occurrence. For a weekly meetup, generate 52 separate Event schemas with unique dates. Or use a single Event with a date range and clearly indicate recurrence in the description — but separate entries perform better in rich results.
Do I need ticket pricing in the schema?
Yes if you sell tickets. Include the offers field with price, priceCurrency, and a direct URL to the ticket purchase page. Free events should still include offers with price: 0 and availability: InStock to signal RSVP/registration availability.
Will my event appear in Google Events rich results?
Eligibility depends on event type, location accuracy, ticket data, and page authority. Concerts, sports, theater, and major conferences are most likely to appear. Small local events often won't get rich results but still benefit from semantic clarity.
Related Schema Generators
- Organization Schema Generator — for event organizers and venues.
- LocalBusiness Schema Generator — for venues hosting recurring events.
- Video Schema Generator — for promotional event videos and post-event recordings.