An event page describes one dated occasion people can attend — physical, online, or
both. The markup is Event (or a subtype such as MusicEvent or
EducationEvent), and the reward is the event listing: date-badged results and
the events experience for "things to do" searches.
What is required
name— the event's title, not the venue's or the organiser's.startDate— ISO 8601, with the timezone. An event at "19:00" belongs somewhere on Earth; without the offset, Google places it in a timezone of its own choosing, and attendees an ocean away see the wrong evening.location— aPlacewith a structured address for a physical event, or aVirtualLocationwith the joiningurlfor an online one. A hybrid event declares both.
What the recommended properties protect you from
eventAttendanceMode— Offline, Online or Mixed. An online event carrying only a street address describes the wrong event, and this property is what resolves it.eventStatus— Scheduled, Postponed, Rescheduled or Cancelled. When an event is cancelled, update this field rather than deleting the page: a listing that vanishes tells nobody, a listing marked cancelled tells everybody.endDate— multi-day events without one appear to end the day they start.offers— ticket price, currency, availability and the URL where tickets are actually sold, withvalidFromfor on-sale dates.organizerandperformer— who runs it and who appears.imageanddescription— the listing's visual and its pitch.
An example
{
"@context": "https://schema.org",
"@type": "BusinessEvent",
"name": "Coimbatore DevOps Meetup — August",
"startDate": "2026-09-12T18:30:00+05:30",
"endDate": "2026-09-12T21:00:00+05:30",
"eventAttendanceMode": "https://schema.org/MixedEventAttendanceMode",
"eventStatus": "https://schema.org/EventScheduled",
"location": [{"@type": "Place", "name": "Example Hall",
"address": {"@type": "PostalAddress",
"addressLocality": "Coimbatore",
"addressCountry": "IN"}},
{"@type": "VirtualLocation",
"url": "https://example.com/live/devops-aug"}],
"organizer": {"@type": "Organization", "name": "Example DevOps Group"},
"offers": {"@type": "Offer", "price": "0", "priceCurrency": "INR",
"availability": "https://schema.org/InStock",
"url": "https://example.com/events/devops-aug",
"validFrom": "2026-08-01T00:00:00+05:30"}
}
The mistake Google names explicitly
Promotions are not events. A sale, a discount window, a product launch webinar whose real purpose is lead capture — marking these up as events is against the guidelines by name, and it is the abuse that gets event markup ignored sitewide. If nobody attends it at a time and place, it is not an event.
Two quieter failures: a missing timezone (covered above, and the commonest error in event markup by a distance), and stale listings — past events left marked as scheduled, which erode the same trust stale job postings do.
Checking your page
Validate the block with the structured data validator and confirm the dates carry offsets, then run the complete page audit — the listing also depends on indexability and image reachability, which are page-level facts.
