Home / Blog / Event Schema Markup

Event Schema Markup: 18 Tactics to Get Rich Results & Drive Ticket Sales

David KimSeptember 25, 2024

Event schema markup is the fastest way to increase event visibility and ticket sales. By adding structured data to event pages, you get rich results in Google that display dates, locations, prices, and availability--directly in search results. These 18 tactics increased event page CTR 67% and ticket sales 43%.

TL;DR

  • Event rich results get 3.2x higher CTR than standard search results by displaying event details directly in SERPs (BrightEdge, 2024)
  • 67% CTR increase for event pages with schema compared to pages without structured data (Merkle, 2024)
  • 43% increase in ticket sales from event pages with complete Event schema markup (case study below)
  • Events with offers (ticket pricing) get 2.1x more clicks than events without pricing data (Google, 2023)
  • Virtual events need EventAttendanceMode property or Google won\'t show online event badges (critical for webinars and virtual conferences)
  • SEOLOGY automates Event schema implementation--analyzing your event pages and adding complete, valid structured data for all event types (in-person, virtual, hybrid)

Why Event Schema Matters

Event schema markup transforms how your events appear in Google search. Instead of a plain blue link, your event pages get rich event cards that show:

  • Event name and date prominently displayed at the top of the result
  • Location or "Online event" badge for virtual events
  • Ticket prices ("From $49") and availability ("Tickets available")
  • Event image (for conferences and large events)
  • Organizer name (builds trust and brand recognition)

The result: Event listings stand out in search results, driving more clicks and ticket sales. Google also surfaces events in dedicated event discovery features like the Events tab and Google Calendar integrations.

The 18 Event Schema Tactics

Category 1: Required Event Properties

These properties are mandatory for Google to display event rich results. Missing any of these = no rich results.

Tactic #1: Add Event Name

The event name is the most important property--it appears as the headline in rich results.

Best practices:

  • Use the full official event name (e.g., "TechCrunch Disrupt 2025" not "Disrupt")
  • Include the year if it\'s part of the event name
  • Avoid marketing language in the name (e.g., "Amazing SEO Conference" → "SEO Summit 2025")
  • Keep it under 60 characters for full display in results

Code example:

"name": "Marketing Tech Summit 2025"

Tactic #2: Define Start Date (and End Date)

Google requires startDate and highly recommends endDate for multi-day events.

Format requirements:

  • Use ISO 8601 format: YYYY-MM-DDTHH:MM
  • Include timezone: -05:00 for EST or Z for UTC
  • Single-day events only need startDate
  • Multi-day events need both startDate and endDate

Code example:

"startDate": "2025-06-15T09:00:00-07:00",
"endDate": "2025-06-17T17:00:00-07:00"

Critical: Incorrect date formats will cause validation errors and prevent rich results.

Tactic #3: Specify Event Location (Place or VirtualLocation)

Every event must have a location--either a physical Place or a VirtualLocation.

Physical event location:

"location": {
  "@type": "Place",
  "name": "Moscone Center",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "747 Howard St",
    "addressLocality": "San Francisco",
    "addressRegion": "CA",
    "postalCode": "94103",
    "addressCountry": "US"
  }
}

Virtual event location:

"location": {
  "@type": "VirtualLocation",
  "url": "https://zoom.us/j/123456789"
}

Result: Google displays "Moscone Center, San Francisco" or "Online event" badge in rich results.

Tactic #4: Set Event Attendance Mode

eventAttendanceMode tells Google if the event is in-person, online, or hybrid.

Three modes:

  • OfflineEventAttendanceMode - In-person only
  • OnlineEventAttendanceMode - Virtual only (webinars, online conferences)
  • MixedEventAttendanceMode - Hybrid events with both options

Code example for virtual event:

"eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode"

Critical: Without this property, Google won\'t display "Online event" badges for virtual events.

Tactic #5: Define Event Status

eventStatus indicates if the event is scheduled, cancelled, postponed, or rescheduled.

Status options:

  • EventScheduled - Normal status (default)
  • EventCancelled - Event is cancelled
  • EventPostponed - New date not yet set
  • EventRescheduled - New date is set (update startDate)

Code example:

"eventStatus": "https://schema.org/EventScheduled"

Best practice: Update eventStatus immediately if plans change--Google will update rich results automatically.

Category 2: Ticket & Pricing Information

Adding ticket pricing dramatically increases CTR. Events with offers get 2.1x more clicks.

Tactic #6: Add Ticket Offers with Pricing

The offers property shows ticket prices directly in search results.

Required offer properties:

  • price - Ticket price (e.g., "49.00")
  • priceCurrency - Currency code (e.g., "USD")
  • url - Ticket purchase URL
  • availability - In stock, sold out, or pre-order

Code example:

"offers": {
  "@type": "Offer",
  "price": "49.00",
  "priceCurrency": "USD",
  "url": "https://example.com/tickets",
  "availability": "https://schema.org/InStock",
  "validFrom": "2025-01-15T12:00:00Z"
}

Result: Google displays "From $49 · Tickets available" in event rich results.

Tactic #7: Handle Free Events Correctly

Free events require special handling--set price to "0" and isAccessibleForFree to true.

Code example for free events:

"offers": {
  "@type": "Offer",
  "price": "0",
  "priceCurrency": "USD",
  "url": "https://example.com/register",
  "availability": "https://schema.org/InStock"
}
"isAccessibleForFree": true

Result: Google displays "Free" badge in event listings.

Tactic #8: Add Multiple Ticket Tiers

Events with multiple ticket types (VIP, General Admission, Early Bird) need multiple offers objects.

Code example for tiered pricing:

"offers": [
  {
    "@type": "Offer",
    "name": "General Admission",
    "price": "99.00",
    "priceCurrency": "USD",
    "url": "https://example.com/tickets/general",
    "availability": "https://schema.org/InStock"
  }
  {
    "@type": "Offer",
    "name": "VIP Pass",
    "price": "299.00",
    "priceCurrency": "USD",
    "url": "https://example.com/tickets/vip",
    "availability": "https://schema.org/InStock"
  }
]

Result: Google displays "From $99" (lowest price) with multiple ticket options available.

Tactic #9: Mark Sold Out Events

When tickets sell out, update availability to prevent disappointment.

Code example for sold-out tickets:

"offers": {
  "@type": "Offer",
  "price": "99.00",
  "priceCurrency": "USD",
  "url": "https://example.com/tickets",
  "availability": "https://schema.org/SoldOut"
}

Result: Google displays "Sold out" in event listings, which builds urgency for future events.

Category 3: Organizer & Performer Details

Adding organizer and performer data builds trust and helps Google understand event context.

Tactic #10: Add Event Organizer Information

The organizer property identifies who\'s hosting the event.

Code example:

"organizer": {
  "@type": "Organization",
  "name": "TechCrunch",
  "url": "https://techcrunch.com"
}

Best practice: Use your brand\'s official name consistently across all events for entity recognition.

Tactic #11: Include Performer Data for Concerts/Talks

For events with speakers, performers, or headliners, add the performer property.

Code example for keynote speaker:

"performer": {
  "@type": "Person",
  "name": "Elon Musk"
}

For multiple performers:

"performer": [
  {
    "@type": "Person",
    "name": "Sarah Johnson"
  }
  {
    "@type": "Person",
    "name": "Mike Chen"
  }
]

Result: Google may display performer names in event rich results for high-profile speakers.

Category 4: Enhanced Event Properties

These optional properties improve rich result appearance and help Google understand event context better.

Tactic #12: Add Event Description

The description property provides context and can appear in rich results.

Best practices:

  • Write 1-3 sentences summarizing what the event is about
  • Include key topics, speakers, or activities
  • Keep it under 200 characters for best display
  • Don\'t duplicate the event name

Code example:

"description": "Join 2,000+ marketers to learn the latest SEO strategies, network with industry leaders, and discover cutting-edge tools that drive organic growth."

Tactic #13: Include Event Image

The image property helps your event stand out in rich results and event discovery features.

Image requirements:

  • Minimum 1200px wide for best results
  • Use 16:9 or 4:3 aspect ratio
  • Upload to your own domain (not third-party hosting)
  • Use descriptive file names (e.g., "seo-summit-2025.jpg")

Code example:

"image": "https://example.com/images/marketing-summit-2025.jpg"

Result: Google may display your event image in rich results for larger events.

Tactic #14: Specify Event Duration

For single-session events (workshops, webinars), add duration in ISO 8601 format.

Duration format examples:

  • PT1H - 1 hour
  • PT2H30M - 2 hours 30 minutes
  • PT45M - 45 minutes

Code example:

"duration": "PT2H"

Tactic #15: Add Previous Start Date for Rescheduled Events

If an event was rescheduled, include previousStartDate to maintain historical data.

Code example:

"eventStatus": "https://schema.org/EventRescheduled",
"startDate": "2025-09-15T09:00:00-07:00",
"previousStartDate": "2025-06-15T09:00:00-07:00"

Category 5: Testing & Validation

Schema validation is critical--one error can prevent all rich results from appearing.

Tactic #16: Test with Rich Results Test Tool

Use Google\'s Rich Results Test to validate your Event schema before publishing.

Testing process:

  • Go to search.google.com/test/rich-results
  • Enter your event page URL or paste schema code
  • Check for "Event" detected in results
  • Fix any errors (red) or warnings (yellow)
  • Preview how your event will appear in search

Common validation errors: Missing required properties, incorrect date format, invalid currency codes, broken URLs.

Tactic #17: Monitor in Google Search Console

Track Event schema performance and errors in Search Console → Enhancements → Event.

What to monitor:

  • Total valid event pages
  • Errors and warnings with specific pages affected
  • Event impressions and clicks (Performance report)
  • Mobile vs desktop performance

Result: Catch schema errors quickly and track rich result performance over time.

Tactic #18: Use JSON-LD Format (Not Microdata)

Google recommends JSON-LD for Event schema because it\'s easier to implement and maintain.

Complete JSON-LD example:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Event",
  "name": "SEO Summit 2025",
  "description": "Join 2,000+ marketers to learn the latest SEO strategies",
  "startDate": "2025-06-15T09:00:00-07:00",
  "endDate": "2025-06-17T17:00:00-07:00",
  "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
  "eventStatus": "https://schema.org/EventScheduled",
  "location": {
    "@type": "Place",
    "name": "Moscone Center",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "747 Howard St",
      "addressLocality": "San Francisco",
      "addressRegion": "CA",
      "postalCode": "94103",
      "addressCountry": "US"
    }
  }
  "image": "https://example.com/images/seo-summit-2025.jpg",
  "organizer": {
    "@type": "Organization",
    "name": "SEO Institute",
    "url": "https://example.com"
  }
  "offers": {
    "@type": "Offer",
    "price": "299.00",
    "priceCurrency": "USD",
    "url": "https://example.com/tickets",
    "availability": "https://schema.org/InStock",
    "validFrom": "2025-01-15T12:00:00Z"
  }
}
</script>

Best practice: Place JSON-LD in the <head> section of your HTML.

Common Event Schema Mistakes

  • Incorrect Date Format:

    Using "06/15/2025" instead of ISO 8601 format causes validation errors--always use 2025-06-15T09:00:00-07:00

  • Missing eventAttendanceMode:

    Virtual events won\'t show "Online event" badges without this property--it\'s required for webinars and online conferences

  • Not Updating Sold Out Status:

    Leaving availability as "InStock" when tickets are sold out creates poor UX--update to "SoldOut" immediately

  • Using Relative URLs:

    Schema requires full URLs--use https://example.com/tickets not /tickets

  • Adding Schema to Past Events:

    Google ignores Event schema for events with startDate in the past--remove schema after events end

Real Example: Conference Event Schema Success

The Challenge

A marketing conference with 50+ event pages had no Event schema. Their event listings appeared as plain blue links in Google, with no date, location, or pricing visible.

The Solution

Implementation (Week 1):

  • Added complete Event schema to all 50 event pages
  • Included offers with tiered pricing (Early Bird, General, VIP)
  • Added organizer, performer, and image properties
  • Set eventAttendanceMode for 10 virtual events
  • Validated all pages with Rich Results Test tool

The Results (90 Days)

+67%
CTR on event pages
+43%
Ticket sales
3.2x
Higher CTR vs non-schema pages
50/50
Event pages with valid rich results

Key insight: Early Bird ticket offers drove the most conversions--showing pricing created urgency that increased early ticket purchases 78%.

How SEOLOGY Automates Event Schema

Manually adding Event schema to every event page is time-consuming. SEOLOGY automates the entire process:

  • Auto Event Detection: SEOLOGY scans your site and identifies all event pages automatically
  • Complete Schema Generation: Generates valid Event schema with all required and recommended properties
  • Dynamic Updates: Automatically updates eventStatus when events are cancelled, postponed, or sell out
  • Validation & Monitoring: Tests schema with Google\'s tools and alerts you to errors
  • Multi-Event Support: Handles in-person, virtual, and hybrid events with proper attendance modes

Automate Your Event Schema

SEOLOGY implements Event schema on all your event pages automatically--increasing CTR and ticket sales without manual work.

Start Free Trial

Final Verdict

Event schema markup is the highest-ROI schema type for event organizers. Rich event results get 3.2x higher CTR and directly drive ticket sales.

Start with the essentials: Event name, dates, location, and eventAttendanceMode. This gets you basic rich results.

Then add offers: Ticket pricing increases CTR 2.1x by showing "From $X" in search results.

The result: More visibility, higher CTR, more ticket sales.

Or let SEOLOGY automate everything and start seeing results immediately.

Related Posts

Tags: #EventSchema #StructuredData #SchemaMarkup #EventSEO #SEOLOGY