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:
| Field | Type | Comment |
|---|---|---|
has_start_date | boolean | startDate in ISO 8601 with timezone |
has_location | boolean | location Place or VirtualLocation present |
has_end_date | boolean | endDate declared |
has_event_status | boolean | eventStatus declared (Scheduled/Cancelled/Postponed) |
has_event_mode | boolean | eventAttendanceMode (in-person/online/mixed) declared |
has_offers | boolean | Ticket 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 = falseAND page identified as event listing - Severity: IMPORTANT
- Diagnostic Message: "Event page detected but no Event schema found. Required fields:
name,startDate,location."
- Target Field:
-
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
startDateis missing — required by Google."
- Target Field:
-
Trigger Rule 3: Location missing
- Target Field:
has_location - Evaluation Logic:
has_location = false - Severity: IMPORTANT
- Diagnostic Message: "Event schema present but
locationis missing — required by Google."
- Target Field:
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
- Add
EventJSON-LD withname,startDate,location(all required) - Use timezone-aware ISO 8601 dates
- Declare
eventStatus— especially if cancellations/postponements are possible - Add
offerswith ticket URL and price - Remove or mark
EventCancelledwhen events end or are cancelled