My Tool Studio
Schema Markup·4 min read

Event Schema for Google: Dates, Venues, Tickets

An event page has one job: get found before the date passes. Event markup is how a concert, conference or workshop becomes eligible for Google's event results, the listings people browse when they search for things to do nearby. The markup carries the fields Google needs to file your event correctly: what it is, when it starts, where it happens and what a ticket costs. Below you'll find a worked example, the date rules people trip on, how online and in-person events differ, and the errors that keep events invisible.

{"@type": "Event","name": "…","url": "…"}RICH RESULTEvent

What Event schema feeds in Google

The data behind event listings.

Google builds its event listings from structured data found on venue sites, ticket platforms and organizer pages. Searchers filter by date and place, and each entry links back to a page where they can act. Without Event markup, your page competes as an ordinary result while aggregators carrying your event in their own markup pick up discovery traffic that could have been yours.

Eligibility depends on the fields. Google requires a name, a startDate and a location that is a Place with a street address. It recommends a description, endDate, eventStatus, image, offers, organizer and performer, and the generator's Still missing box follows the same split.

An Event example with startDate and a venue

The minimum that works.

A small venue books a Friday show. The core markup: { "@type": "MusicEvent", "name": "Riverside Sessions", "startDate": "2026-08-14T19:30:00+01:00", "location": { "@type": "Place", "name": "The Boiler Room" } }. The subtype tells Google it's a concert, the startDate includes the hour and the venue's UTC offset, and the venue is a Place object that the full output extends with a street address, city and country.

The generator offers ten event types, from Business Conference through Festival to Exhibition Event, and writes the eventStatus and attendance mode values in full, two details almost nobody hand-codes correctly on the first try.

Event dates, times and time zones

startDate does the heavy lifting.

startDate is required and should carry a time; endDate closes the window. Pick the venue's offset in the Time zone dropdown and the tool appends it to every date, adding seconds, so 19:30 in London in summer becomes 2026-08-14T19:30:00+01:00. Leave it as Not set and no offset is written, which leaves Google to guess. Multi-day festivals need their endDate on the final day, not the first.

When plans change, don't edit dates silently. If an event is postponed with no new date yet, set Event status to Postponed and keep the original start date. Once a new date is confirmed, choose Rescheduled, put the new date in the start fields and the old one in Original start date, which the tool writes as previousStartDate.

In-person, online and hybrid events

Location changes shape.

The attendance mode decides how the location is written. Offline events carry a Place with a postal address, online events swap that for a VirtualLocation whose url is the stream or webinar link, and Mixed events carry both in an array.

The three Attendance mode buttons, Offline, Online and Mixed (both), rewire the form for you: choose Online and the address card gives way to an Online event URL field; choose Mixed and you fill in both. Know one limit before you choose. Google's event results only cover events with a real-world location, so an online-only event is valid Schema.org that other platforms can read, but it won't appear there. A hybrid event with a real venue should use Mixed.

Event markup errors that keep listings out

Common disqualifiers.

Most rejected event markup fails on one of a handful of patterns.

  • Using the venue's name as the event name, so listings read The Boiler Room instead of the actual show.
  • Publishing a bare date with no start time, which gets treated as all-day and often filed wrong.
  • Marking up a schedule page with a single Event block instead of one block per date.
  • Deleting the page after a cancellation instead of setting the status to Cancelled, which strands the listing.
  • Ticket prices in the markup that contradict the ticket widget visitors see on the page.

Tips before you publish Event schema

Two minutes of checking.

Press Add ticket tier once per ticket type, general admission and VIP for example, and give each a name, price, currency, availability, on sale date and URL. For free events, enter 0 as the price; a present Offer tells Google that admission exists and where to claim it. Name an organizer with a URL too, since that separates your event from lookalikes on aggregator sites.

Press Add performer for each act or speaker and choose the right type: Person for a speaker, Music Group for a band, Theater Group or Dance Group for a company. Add a wide event image, then read the output once before copying; the Validation panel catches any required field you skipped. Test in Google Rich Results Test sits under the output when you're ready.

Event schema next to Course and JobPosting markup

Adjacent types, different rules.

Recurring classes sit in a gray zone: a one-off workshop is an Event, but an ongoing course with enrollment belongs in the Course Schema Generator, which handles providers and course instances properly. Hiring fairs sometimes pair with the Job Posting Schema Generator when the same page also lists the open roles.

Recurring gigs need one Event per date. Add each date under More dates, or press Repeat weekly x4, and the generator writes one full Event per date in a single array. Before publishing, check what the page already carries with the Schema Markup Extractor, which lists every JSON-LD, microdata and RDFa item on a URL.

Try it now

Open Event Schema Generator

The tool is one click away. No sign up, no upload, no payment.

Open Event Schema Generator