Structured Data · Type Guide #9

Event Schema: Time, Location, Online/Offline, and Event Cards

~13 min read Updated 2026-06-24 MagicSEO Editorial · Human Reviewed Type Guide

Event structured data enables concerts, exhibitions, lectures, competitions, and other events to appear as "event cards" in Google Search and event experiences, displaying time, location, and ticket entry points. The challenge lies not in the number of fields, but in accurately expressing three things: when, where (offline or online), and current status (scheduled, cancelled, or rescheduled).

What is Event#

Event describes a specific event with a clear occurrence time. Google uses it to generate event rich media cards in search results, and may incorporate it into event-related search experiences, displaying date, location, ticket links, and more.

Official documentation: Google Search Central: Event structured data.

Event is not business hoursOnly mark actual events with start and end times. Don't disguise store hours, long-term facilities, or promotional periods as Events.

Required and Recommended Fields#

FieldRequiredDescription
nameRequiredEvent name
startDateRequiredTimezone-aware ISO 8601 date-time
locationRequiredOffline: Place, Online: VirtualLocation
endDateRecommendedEnd time, with timezone
eventAttendanceModeRecommendedOffline/online/hybrid
eventStatusRecommendedScheduled/cancelled/rescheduled/moved online
imageRecommendedEvent poster or image
offersRecommendedTicketing Offer, including price and purchase link
performer / organizerRecommendedPerformers and organizer

Offline Event Example#

event.json
{
  "@context": "https://schema.org",
  "@type": "Event",
  "name": "2026 Chinese SEO Summit",
  "startDate": "2026-09-12T09:30:00+08:00",
  "endDate": "2026-09-12T18:00:00+08:00",
  "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
  "eventStatus": "https://schema.org/EventScheduled",
  "image": "https://example.com/events/seo-summit.webp",
  "location": {
    "@type": "Place",
    "name": "National Convention Center",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "7 Tianchen East Road",
      "addressLocality": "Beijing",
      "addressCountry": "CN"
    }
  },
  "organizer": {
    "@type": "Organization",
    "name": "MagicSEO",
    "url": "https://magic-seo.com/"
  },
  "offers": {
    "@type": "Offer",
    "price": 399,
    "priceCurrency": "CNY",
    "availability": "https://schema.org/InStock",
    "url": "https://example.com/events/seo-summit/tickets",
    "validFrom": "2026-07-01T10:00:00+08:00"
  }
}

Online and Hybrid Events#

FormateventAttendanceModelocation
Offline onlyOfflineEventAttendanceModePlace + address
Online onlyOnlineEventAttendanceModeVirtualLocation + url
Hybrid offline/onlineMixedEventAttendanceModeProvide both Place and VirtualLocation
online-event-location.json
"eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode",
"location": {
  "@type": "VirtualLocation",
  "url": "https://example.com/live/seo-summit"
}

Status: Cancellation and Rescheduling#

eventStatusMeaningRequired Actions
EventScheduledScheduled as plannedDefault status
EventCancelledCancelledUpdate promptly, keep page with explanation
EventRescheduledRescheduledUpdate startDate, optionally keep previousStartDate
EventMovedOnlineMoved onlineChange attendanceMode + VirtualLocation

Sync status changes to structured data and page content promptly to avoid giving users incorrect time and location information.

Date Formats#

  • startDate and endDate use timezone-aware ISO 8601 date-time, like 2026-09-12T09:30:00+08:00;
  • Timezone awareness prevents users in different regions from seeing incorrect times;
  • Multi-day events use startDate/endDate to express span; don't split into fake events.

Why This Site Doesn't Implement Event#

This article doesn't host any actual event. Marking Event on a page without an event equals marking non-existent content.

Site DemonstrationWhen this site actually hosts online or offline events with dedicated event pages, Event markup will be added to those pages. This page maintains Article, BreadcrumbList, FAQPage.

Validation and Monitoring#

  1. Use Rich Results Test to check required fields like name, startDate, location.
  2. Confirm attendanceMode matches location type (online uses VirtualLocation).
  3. Verify dates, locations, and prices match visible page content.
  4. Update eventStatus and dates immediately after event cancellation/rescheduling.
  5. After launch, monitor invalid items in Search Console's event enhancement report.

Common Errors#

ErrorWhy RiskyFix
Dates without timezoneTime confusion across regionsUse timezone-aware ISO 8601
Place for online eventsLocation type mismatchUse VirtualLocation for online
Business hours as EventNot a specific eventOnly mark real events with times
Cancellation/rescheduling not updatedMisleads usersPromptly update eventStatus and dates
Splitting one event into multiple fake eventsInflates countMulti-day events use start/endDate

Event Launch Checklist#

  • name, startDate, location complete
  • startDate/endDate with timezone
  • eventAttendanceMode matches location type
  • Online uses VirtualLocation, hybrid provides both locations
  • eventStatus reflects actual status
  • offers provides price, currency, purchase link
  • performer/organizer added as applicable
  • Prompt update after cancellation/rescheduling
  • Visible page content matches JSON-LD
  • Rich Results Test shows no critical errors

Frequently Asked Questions#

What fields are required for Event structured data?

Google's required fields for Event are name, startDate, and location. For offline events, location uses Place with PostalAddress; for online events, use VirtualLocation with url. It's strongly recommended to add recommended fields like endDate, eventAttendanceMode, eventStatus, image, description, offers, performer, and organizer.

How do I write location for online events?

For online events, set eventAttendanceMode to OnlineEventAttendanceMode and use VirtualLocation as location, with url pointing to the viewing or participation address. For hybrid online/offline events, set eventAttendanceMode to MixedEventAttendanceMode and provide both Place and VirtualLocation.

How do I mark event cancellation or rescheduling?

Use eventStatus to express status: EventCancelled for cancellation, EventRescheduled for rescheduling, EventMovedOnline when moved online. When rescheduling, update startDate to the new date and optionally keep previousStartDate. Sync status changes promptly to avoid giving users incorrect time and location information.

What pages are suitable for Event markup?

Mark specific events with clear occurrence times, such as concerts, exhibitions, lectures, or competitions. Don't treat business hours, long-term facilities, or promotional periods as Events, and don't mark events that don't actually exist on the page. Dates and locations must match visible page content.