Issue #63 · important
Issue 63
What is this issue?
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.
Without Event schema:
- Your events won't appear in Google's Events carousel
- Event details won't show in rich results (date, time, location)
- Events won't be listed in Google Maps event listings
- Users can't easily add events to their calendars from search results
- Ticket links won't appear in search results
A proper Event schema should include: @type (Event), name, startDate, location, and optionally endDate, eventStatus, eventAttendanceMode, offers, description, image.
Why does it matter?
Event schema is critical for event visibility and user engagement:
- Google Events carousel: Events with proper schema can appear in Google's dedicated Events carousel
- Rich results: Enables event details (date, time, location, price) to appear in search results
- Google Maps: Events are listed in Google Maps event listings
- Calendar integration: Users can add events to their calendars directly from search results
- Ticket sales: Ticket links and pricing can appear in search results
- Voice search: Voice assistants can provide event details and ticket information
Resolving this issue improves your SEO health score by ensuring events are properly structured for maximum visibility and user engagement.
How to fix it
-
Identify event pages: Look for pages with event URL patterns (
/events/,/conference/,/webinar/) or visible date/time/location information -
Add Event JSON-LD structured data to the page's
<head>or before</body>:For in-person events:
{ "@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" } }For online events: Use
"@type": "VirtualLocation"with aurlproperty -
Include required properties:
name: Event namestartDate: ISO 8601 format with timezonelocation: Place or VirtualLocation
-
Add recommended properties:
endDate: Event end date/timeeventStatus: Scheduled, Cancelled, or PostponedeventAttendanceMode: In-person, online, or mixedoffers: Ticket pricing and availabilitydescription: Event descriptionimage: Event image URL
-
Validate with Google's Rich Results Test
Examples
Example 1: Missing Event Schema on Event Page
Problematic state:
<!-- Event page without Event schema -->
<html>
<head>
<title>Annual Tech Conference 2024</title>
</head>
<body>
<h1>Annual Tech Conference 2024</h1>
<p><strong>Date:</strong> September 15-16, 2024</p>
<p><strong>Location:</strong> Austin Convention Center</p>
<p><strong>Price:</strong> $299</p>
<button>Register Now</button>
</body>
</html>
Corrected state:
<!-- Event page with Event schema -->
<html>
<head>
<title>Annual Tech Conference 2024</title>
<script type="application/ld+json">
{
"@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"
}
}
</script>
</head>
<body>
<h1>Annual Tech Conference 2024</h1>
<p><strong>Date:</strong> September 15-16, 2024</p>
<p><strong>Location:</strong> Austin Convention Center</p>
<p><strong>Price:</strong> $299</p>
<button>Register Now</button>
</body>
</html>
Example 2: Online Event with VirtualLocation
Corrected state (webinar):
{
"@context": "https://schema.org",
"@type": "Event",
"name": "SEO Webinar: Advanced Techniques",
"startDate": "2024-04-10T14:00:00Z",
"eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode",
"location": {
"@type": "VirtualLocation",
"url": "https://zoom.us/j/123456789"
}
}
Example 3: Incomplete Event Schema
Problematic state:
{
"@context": "https://schema.org",
"@type": "Event",
"name": "Workshop"
}
Missing required properties: startDate, location
Corrected state:
{
"@context": "https://schema.org",
"@type": "Event",
"name": "SEO Workshop",
"startDate": "2024-05-20T10:00:00Z",
"location": {
"@type": "Place",
"name": "Conference Room A"
}
}
How PixyScan detects this
PixyScan follows these logical steps to detect missing Event schema:
-
Detect event pages: The crawler identifies pages with:
- Event URL patterns (
/events/,/conference/,/webinar/,/workshop/) - Visible date/time/location information on the page
- Text indicating an event (e.g., "Register now", "Join us", "Tickets")
- Event URL patterns (
-
Extract structured data: The crawler looks for JSON-LD, Microdata, or RDFa blocks on the page
-
Check for Event schema: The crawler verifies if any schema block has:
@typeset toEvent- Required properties:
name,startDate,location
-
Validate schema completeness: If Event schema is found, the crawler checks for:
startDatein ISO 8601 format with timezonelocationproperty (Place or VirtualLocation)endDateif the event has an end timeeventStatusdeclared (Scheduled/Cancelled/Postponed)eventAttendanceMode(in-person/online/mixed)
-
Trigger conditions: The issue is flagged when:
- Page has event content but no Event schema
- Event schema exists but
startDateis missing - Event schema exists but
locationis missing