Skip to main content

Event Schema Missing

Issue No: 63

Category: Structured Data & Rich Results

Issue type: Issue

Priority: IMPORTANT

Description

Event listing pages are missing Event schema, preventing the event from appearing in Google's Events carousel, event rich results, and Google Maps event listings.

How do we capture it

  • Detect event pages via URL patterns (/events/, /conference/, /webinar/) or visible date/time/location on page
  • Check JSON-LD for "@type": "Event"
  • If absent → trigger issue

What to store

StructuredDataAudit record with schemaType = Event, issueNumber = 149, plus StructuredDataField rows:

FieldTypeComment
has_start_datebooleanstartDate in ISO 8601 with timezone
has_locationbooleanlocation Place or VirtualLocation present
has_end_datebooleanendDate declared
has_event_statusbooleaneventStatus declared (Scheduled/Cancelled/Postponed)
has_event_modebooleaneventAttendanceMode (in-person/online/mixed) declared
has_offersbooleanTicket pricing declared in offers

Core audit fields used: isPresent, hasName, hasImage, rawJson

Condition for trigger

  • Trigger Rule 1: Schema absent on event page

    • Target Field: isPresent
    • Evaluation Logic: isPresent = false AND page identified as event listing
    • Severity: IMPORTANT
    • Diagnostic Message: "Event page detected but no Event schema found. Required fields: name, startDate, location."
  • Trigger Rule 2: Start date missing

    • Target Field: has_start_date
    • Evaluation Logic: has_start_date = false
    • Severity: IMPORTANT
    • Diagnostic Message: "Event schema present but startDate is missing — required by Google."
  • Trigger Rule 3: Location missing

    • Target Field: has_location
    • Evaluation Logic: has_location = false
    • Severity: IMPORTANT
    • Diagnostic Message: "Event schema present but location is missing — required by Google."

Sources

Long description

Events are among the highest-CTR rich result formats — time-sensitive and action-oriented. Google's Events carousel shows date, time, location, and ticket links.

In-person event:

{
"@context": "https://schema.org",
"@type": "Event",
"name": "Annual Tech Conference 2024",
"startDate": "2024-09-15T09:00:00-05:00",
"endDate": "2024-09-16T18:00:00-05:00",
"eventStatus": "https://schema.org/EventScheduled",
"eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
"location": {
"@type": "Place",
"name": "Austin Convention Center",
"address": {
"@type": "PostalAddress",
"addressLocality": "Austin",
"addressRegion": "TX",
"addressCountry": "US"
}
},
"offers": {
"@type": "Offer",
"price": "299",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
}
}

Online event: Use "@type": "VirtualLocation" with a url property.

Event status values: EventScheduled, EventPostponed, EventCancelled, EventMovedOnline.

How to Fix

  1. Add Event JSON-LD with name, startDate, location (all required)
  2. Use timezone-aware ISO 8601 dates
  3. Declare eventStatus — especially if cancellations/postponements are possible
  4. Add offers with ticket URL and price
  5. Remove or mark EventCancelled when events end or are cancelled