Event Schema Markup Guide: Appear in Google's Event Rich Results

Last Updated: February 25, 2026 · 13 min read

Google has a dedicated "Events" rich result that appears at the top of search results for event-related queries. When someone searches for "concerts in Delhi this weekend" or "web development conference 2026", Google surfaces a horizontal carousel of event cards — and Event schema is what gets you in it.

This guide covers everything from basic Event schema to virtual events, recurring events, and the common mistakes that prevent event rich results from showing.

📊 Real Impact

An event management company in Bangalore added Event schema to 150 event pages and started appearing in Google's Event SERP feature. Ticket sales from organic search increased by 62% in the following quarter.

1. Required Fields for Event Rich Results

PropertyRequired?Notes
name✅ RequiredFull event name
startDate✅ RequiredISO 8601 format: 2026-03-15T19:00:00+05:30
endDate⭐ RecommendedEnd date/time in ISO 8601
location✅ RequiredPlace object (in-person) or VirtualLocation (online)
image⭐ RecommendedEvent banner/poster image
description⭐ RecommendedEvent description
offers⭐ RecommendedTicket pricing and availability
performer⭐ RecommendedArtist, speaker, or performer
organizer⭐ RecommendedOrganization hosting the event
eventStatus⭐ RecommendedEventScheduled, EventCancelled, EventPostponed
eventAttendanceMode⭐ RecommendedOfflineEventAttendanceMode, OnlineEventAttendanceMode, MixedEventAttendanceMode

2. In-Person Event Schema Example

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "MusicEvent",
  "name": "AR Rahman Live in Concert – Mumbai 2026",
  "startDate": "2026-04-18T19:00:00+05:30",
  "endDate": "2026-04-18T23:00:00+05:30",
  "eventStatus": "https://schema.org/EventScheduled",
  "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
  "location": {
    "@type": "Place",
    "name": "MMRDA Grounds, BKC",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "Bandra Kurla Complex",
      "addressLocality": "Mumbai",
      "addressRegion": "Maharashtra",
      "postalCode": "400051",
      "addressCountry": "IN"
    }
  },
  "image": "https://example.com/ar-rahman-concert-mumbai-2026.jpg",
  "description": "Experience the magic of AR Rahman live in a spectacular concert celebrating 30 years of iconic music. Three hours of non-stop hits from Bombay to the latest blockbusters.",
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/tickets/ar-rahman-mumbai",
    "price": "999",
    "priceCurrency": "INR",
    "availability": "https://schema.org/InStock",
    "validFrom": "2026-03-01T00:00:00+05:30"
  },
  "performer": {
    "@type": "MusicGroup",
    "name": "AR Rahman"
  },
  "organizer": {
    "@type": "Organization",
    "name": "Live Nation India",
    "url": "https://livenation.in"
  }
}
</script>

3. Virtual / Online Event Schema

For webinars, online conferences, and live streams, use VirtualLocation for the location property:

{
  "@context": "https://schema.org",
  "@type": "EducationEvent",
  "name": "Advanced SEO Masterclass 2026",
  "startDate": "2026-03-20T14:00:00-05:00",
  "endDate": "2026-03-20T17:00:00-05:00",
  "eventStatus": "https://schema.org/EventScheduled",
  "eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode",
  "location": {
    "@type": "VirtualLocation",
    "url": "https://example.com/webinar/seo-masterclass"
  },
  "image": "https://example.com/seo-masterclass-banner.jpg",
  "description": "3-hour deep dive into advanced technical SEO, schema markup, and Core Web Vitals optimization.",
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/register/seo-masterclass",
    "price": "0",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock"
  },
  "organizer": {
    "@type": "Organization",
    "name": "SEO Academy",
    "url": "https://example.com"
  }
}

4. Hybrid Events (In-Person + Online)

For events that run both in-person and online simultaneously, use MixedEventAttendanceMode and provide both location types:

"eventAttendanceMode": "https://schema.org/MixedEventAttendanceMode",
"location": [
  {
    "@type": "VirtualLocation",
    "url": "https://example.com/livestream"
  },
  {
    "@type": "Place",
    "name": "Delhi Convention Center",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "Pragati Maidan",
      "addressLocality": "New Delhi",
      "addressCountry": "IN"
    }
  }
]

5. Event Status: Handling Cancellations and Postponements

Always update eventStatus if your event changes. Google reads this and can show "Cancelled" or "Postponed" labels in search results — which prevents users from buying tickets to events that won't happen.

EventScheduled

Event is happening as planned (default)

EventCancelled

Event is cancelled — do not delete the page, update the status

EventPostponed

Event is delayed, new date not yet set

EventRescheduled

Event moved to a new date — include previousStartDate too

6. Common Event Schema Mistakes

Wrong date format

Use ISO 8601 with timezone: 2026-04-18T19:00:00+05:30. Never use "April 18, 2026".

Missing eventStatus

Always include eventStatus. Without it, cancelled events may still show as active in search.

Not updating past events

Remove or update Event schema on past events. Google may filter them out anyway, but stale data hurts trust.

Using generic @type: Event

Use specific subtypes like MusicEvent, SportsEvent, EducationEvent, or FoodEvent for better matching.

Missing ticket availability

Include offers.availability — when InStock, it signals to Google that tickets are still available.

Frequently Asked Questions

What are the minimum required fields for Google's Event rich result?

Google requires name, startDate, and location at minimum. However, to maximise rich result eligibility and quality, also include endDate, eventStatus, eventAttendanceMode, image, description, and offers. Pages with only the three required fields tend to get less SERP prominence than pages with fully populated Event schema.

Can I add Event schema to a recurring event like a weekly class?

Yes — create a separate Event schema block for each occurrence, each with its own unique startDate and endDate. Do not use a single Event schema block with a vague or open-ended date range. Google's Event rich result surfaces individual occurrence cards, so one recurring event with 12 monthly dates should have 12 separate Event schema objects, each on its own URL if possible.

What happens if I don't update eventStatus when an event is cancelled?

Google may continue showing the event as scheduled in the Events rich result carousel. Users who click expecting an active event will find it is cancelled — increasing bounce rate and frustrating potential attendees. Always update eventStatus to EventCancelled immediately, and if you have a refund/rebooking page, update the offers URL to point there.

Does Event schema work for webinars and virtual summits?

Yes. Use @type: EducationEvent (or SocialEvent for summits) with eventAttendanceMode set to OnlineEventAttendanceMode, and a VirtualLocation object for the location with the livestream or registration URL. Google surfaces virtual events in the same Events rich result carousel as physical events.

Should I use @type: Event or a more specific subtype like MusicEvent?

Always use the most specific subtype when available. Google rewards specificity: MusicEvent for concerts, EducationEvent for webinars and classes, SportsEvent for sporting events, FoodEvent for dining events, ScreeningEvent for film screenings. Specific types improve eligibility for type-specific rich result features and search intent matching.

My Event schema validates but still isn't appearing in the Events carousel. Why?

Several reasons: (1) Google may not have re-crawled the page since you added schema — use GSC URL Inspection → Request Indexing. (2) The event date may be in the past. (3) Events carousels are competitive and query-dependent — not all valid Event pages appear for all related queries. (4) Low-authority domains may take longer to earn Event carousel placement for competitive event categories.

Can one page contain schema for multiple events?

Yes — you can include an array of Event schema objects via JSON-LD on a single page, which is common on event listing pages. Each object in the array should be fully populated. Note that Google may choose to surface one, all, or none of the events depending on the query context and page authority.

Do ticket prices need to be shown on the page for offers schema to work?

Yes — Google's structured data policies require that any data you mark up in schema must be visible on the page itself. If you include offers with a price in your schema, that price must be visibly displayed on the page. Schema that does not match visible page content risks a manual action or rich result removal.

Validate Your Event Schema

Paste your event page URL to check for missing fields and errors — free, instant results.

Validate Event Schema →