My Tool Studio
Schema Markup·3 min read

Event Schema for Google Events: Dates and Venues

An event page has one job: get found before the date passes. Event schema for google events is how a concert, conference, or workshop becomes eligible for Google's event experience, the interactive listings that appear for searches like concerts near me this weekend. 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, online versus in-person handling, and the errors that keep events invisible.

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

What event schema for google events actually powers

The surface behind things to do.

Google assembles 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 blue link while aggregators carrying your event in their markup soak up the discovery traffic that should have been yours.

Eligibility is field-driven. Google wants a name, a startDate with a time, and a location it can resolve on a map, and it rewards richer blocks, images, offers, performers, with better-looking entries.

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", "location": { "@type": "Place", "name": "The Boiler Room" } }. The subtype tells Google it's a concert, the startDate includes the hour, and the venue is a Place object that the full output extends with a street address, city, and country.

The generator supports ten subtypes, from Business Conference through Festival to Exhibition Event, and writes the eventStatus and attendance mode enums automatically, two details almost nobody hand-codes correctly on the first try.

Event date fields explained, times included

startDate does the heavy lifting.

Event date fields explained in one breath: startDate is required and should carry a time, endDate closes the window, and both travel as ISO-style datetimes like 2026-08-14T19:30 straight from the form's date and time pickers. A date without a time forces Google to guess when doors open, and multi-day festivals need their endDate on the final day, not the first.

When plans change, don't edit dates silently. Set Event status to Postponed and keep the old startDate until the new one is confirmed, then switch to Rescheduled with the new date; that exact sequence is what Google's documentation asks for.

Online vs offline event markup and the three attendance modes

Location changes shape.

The online vs offline event markup decision runs through eventAttendanceMode. 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 locations in an array.

The generator's three-button Attendance mode picker rewires the form for you: choose Online and the address card disappears in favor of an online event URL field, choose Mixed and you fill in both. The correct enum lands in the output either way, OnlineEventAttendanceMode and its siblings written out in full.

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 individual event.
  • Deleting the page after a cancellation instead of setting eventStatus to Cancelled, which strands the listing.
  • Ticket Offers whose price contradicts the visible ticket widget on the page.

Tips before you publish Event schema

Two minutes of checking.

Fill the ticket card even for free events by entering 0 as the price; a present Offer with availability tells Google that admission exists and where to claim it. Name an organizer with a URL too, since that disambiguates your event from lookalikes on aggregator sites.

Add the performer with the right type, Person for a speaker, Music Group for a band, and attach a wide image around 1920 pixels across. Then read the output once before pasting: the warnings banner catches any required field you skipped.

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 JobPosting Schema Generator when the same page also lists the open roles.

For a site-wide pass over mixed content, the Schema Markup Generator types each page automatically, though it won't build ticket offers. And verify whatever you ship with the Schema Extractor, which lists every JSON-LD block already live on a page.

Try it now

Open Event Schema Generator

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

Open Event Schema Generator