Skip to main content

Developer Page Specifications

SEO / AEO

Richest event JSON-LD on the platform. Category → Event/BusinessEvent/EducationEvent/Hackathon subtype mapping.

Complete

Calendar emits the richest event-specific JSON-LD on the platform. Each category maps to a schema.org subtype: Event (default) | BusinessEvent | EducationEvent | Hackathon. Google’s event-search carousel (the horizontal row for "events in {city}" queries) is gated on schema completeness — eventAttendanceMode + eventStatus + organizer + location are ALL required.

Category → schema subtype mapping

  • startup-conference, ecosystem-gathering, exhibition → BusinessEvent
  • workshop, webinar, university-event → EducationEvent
  • hackathon → Hackathon
  • demo-day, pitch-competition, founder-meetup, investor-meetup, accelerator-program, incubator-program, government-policy, partner-event → Event (base)
  • application-deadline, funding-deadline → NO Event JSON-LD (treated as WebPage + targeted meta only; not eligible for event-search carousel)

Required JSON-LD fields per event

name, description, url, image
Required. image must be ≥1200×675 (or 16:9 equivalent). When CoverImageUrl is null, use generated SVG fallback that meets dimensions.
startDate, endDate
ISO 8601 with timezone offset (NOT bare YYYY-MM-DD). startDate required; endDate optional but strongly preferred.
eventAttendanceMode
Maps directly from Event.Mode: physical→OfflineEventAttendanceMode, online→OnlineEventAttendanceMode, hybrid→MixedEventAttendanceMode. Required for event-carousel eligibility.
eventStatus
Maps from Event.Status: upcoming/open/closing-soon/live/completed → EventScheduled; postponed → EventPostponed; cancelled → EventCancelled. mode=hybrid auto-upgrade to MovedOnline when applicable.
location
Place (physical) with address + geo; VirtualLocation (online) with url; both for hybrid. Never absent.
organizer
Organization sub-graph with name + url + logo + sameAs.
offers (when registrationUrl exists)
Offer with url + priceCurrency + price (0 when free) + availability + validFrom + validThrough (= applicationDeadline when present).
inLanguage, superEvent (when child of a series)
inLanguage = current locale. superEvent links recurring/series events.