Event Schema Generator — Promote In‑Person and Online Events
Generate valid Event JSON‑LD that clarifies dates, location or virtual access, and ticketing. Improve understanding and eligibility for event‑rich results.
Why many event pages underperform
Pain points we solve
- Your snippet doesn’t clearly show date/time or venue/virtual access.
- Virtual events are ambiguous without a join URL and attendance mode.
- Ticket info is missing or inconsistent (price, currency, availability).
- Timezone mistakes in dates lead to confusing search displays.
How SwiftSchema helps
Solution
The Event generator focuses on the essentials: start/end dates with timezone, attendance mode (online, in‑person, or hybrid), a proper location (Place or VirtualLocation), and ticket Offers with price, currency, and availability.
It outputs clean, copy‑ready JSON‑LD per event so your listings stay consistent and easy to validate.
How it works
How it works
- Choose Event in the generator below.
- Enter name, description, and start/end dates with timezone (ISO 8601).
- Select attendance mode and add a Place (with PostalAddress) or a VirtualLocation URL.
- If ticketed, add an Offer: price, currency, URL, and availability.
- Copy JSON or Script, paste on your event page, and validate in the Rich Results Test.
Paste once per event. Validate. Ship.
What is Event structured data?
Event structured data describes your event’s essential details — dates, location or virtual access, and ticketing — so search engines can better understand and present it. Accurate markup improves clarity and can make your listings eligible for event-rich results.
Essential properties
- name— event title.
- startDate/endDate— ISO 8601 timestamps with timezone.
- location—Place(withname+PostalAddress) orVirtualLocation(url).
- eventAttendanceMode—Online,Offline, orMixed.
- eventStatus—EventScheduled,EventPostponed, etc. Update as needed.
- description— brief summary of the event content and audience.
- image— key visual or promotional asset.
- organizer/performer— Person or Organization.
- offers— price, currency, availability, and ticket URL.
- keywords/about— optional topical tags.
Content prep checklist
- Confirm event title, description, and schedule (with timezone).
- Gather venue details or virtual access instructions.
- Collect speaker/performer bios and photos.
- Decide on ticketing tiers (free, general admission, VIP) with prices and availability.
- Add FAQs, agenda, and highlight key benefits for attendees.
- Provide social proof (testimonials, past highlights).
Implementation workflow
- Update the event page with the finalized details above.
- Generate Event JSON‑LD covering name, dates, location, attendance mode, organizer, and offers.
- Embed the schema once per event page. For multi-event listings, only include schema when the page focuses on a specific event.
- Validate in Rich Results Test; fix warnings for missing attributes (location, offers).
- Monitor Search Console for event enhancements.
- Update schema when event status, venue, or pricing changes.
Handling virtual and hybrid events
- Use VirtualLocationfor online events with aurlto join or register.
- For hybrid events, combine eventAttendanceMode: Mixedwith bothPlaceandVirtualLocationentries.
- Provide clear instructions in content (Zoom link, Slack invite, etc.) and ensure the schema references the same URL.
Ticketing and Offers
- Include Offerobjects for each tier withprice,priceCurrency,availability,url,validFrom/validThrough.
- For free events, keep price: 0but still provide an Offer to show registration is required.
- Update availability (InStock,SoldOut,PreOrder) as tickets sell.
- Use UTMs on the offer URLs to track conversions but keep canonical URL clean if necessary.
Troubleshooting checklist
- Missing timezone: include offsets in ISO timestamps.
- Wrong attendance mode: align eventAttendanceModewithlocation.
- Incomplete address: provide full PostalAddress for in-person venues.
- No organizer: add Person/Organization for credibility.
- Outdated status: update eventStatusif the event is canceled or postponed.
Common Errors & Fixes
- Missing timezone: use full ISO 8601 timestamps (e.g., 2025-11-12T18:00:00-05:00).
- Wrong attendance type: ensure eventAttendanceModematches yourlocationtype.
- Incomplete address: for in-person, supply a structured PostalAddress.
Required properties
namestartDatelocation.name
Recommended properties
descriptionimageendDateeventStatuseventAttendanceModelocation.addressorganizer.nameperformer.nameoffers.priceoffers.priceCurrencyoffers.urloffers.availability
{
"@context": "https://schema.org",
"@type": "Event",
"name": "SwiftSchema Live Workshop: Implementing Product Structured Data",
"description": "A free, hands-on session to implement Product JSON-LD and validate it.",
"startDate": "2025-11-12T18:00:00-05:00",
"endDate": "2025-11-12T19:30:00-05:00",
"eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode",
"eventStatus": "https://schema.org/EventScheduled",
"image": [
"https://example.com/images/workshop.webp"
],
"location": {
"@type": "VirtualLocation",
"url": "https://example.com/workshop"
},
"organizer": {
"@type": "Organization",
"name": "SwiftSchema",
"url": "https://www.swiftschema.com"
},
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://example.com/workshop/register"
}
}