Structured Data for Courses and Events, With JSON-LD Examples

Working JSON-LD for events and courses, including online and hybrid events, what to change when an event is cancelled or rescheduled, and implementation tips for Indian sites.

Course and event pages can use structured data so Google understands them precisely and can show them in dedicated search features. Event markup describes the name, dates, location or online attendance, status, organiser and tickets; course markup describes the course, provider, and details such as format, schedule and price. In both cases the markup must match the visible page, and it must be updated when things change, such as a postponed event or a new course batch. This guide gives working JSON-LD for each.

Event structured data

{
  "@context": "https://schema.org",
  "@type": "Event",
  "name": "AEO and GEO Workshop for Marketing Teams",
  "startDate": "2026-11-18T10:00:00+05:30",
  "endDate": "2026-11-18T16:00:00+05:30",
  "eventStatus": "https://schema.org/EventScheduled",
  "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
  "location": {
    "@type": "Place",
    "name": "Venue name",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "Street address",
      "addressLocality": "Pune",
      "postalCode": "411027",
      "addressCountry": "IN"
    }
  },
  "organizer": { "@type": "Organization", "name": "Example Company", "url": "https://www.example.com" },
  "offers": {
    "@type": "Offer",
    "price": "5000",
    "priceCurrency": "INR",
    "availability": "https://schema.org/InStock",
    "url": "https://www.example.com/events/aeo-geo-workshop/",
    "validFrom": "2026-10-01T09:00:00+05:30"
  },
  "description": "A one-day workshop on AI search, crawler setup and writing for citation."
}

Online and hybrid events

For online events, set eventAttendanceMode to OnlineEventAttendanceMode and use a VirtualLocation with the event URL. For hybrid events, use MixedEventAttendanceMode and include both a Place and a VirtualLocation.

When plans change

Change What to do
Cancelled Set eventStatus to EventCancelled and keep the page with a notice
Postponed, new date unknown EventPostponed, keep the original dates
Rescheduled EventRescheduled, new dates in startDate and endDate, and previousStartDate
Moved online Update eventAttendanceMode and location

Course structured data

{
  "@context": "https://schema.org",
  "@type": "Course",
  "name": "Technical SEO for Developers",
  "description": "Six live sessions on rendering, structured data, sitemaps and crawl management.",
  "provider": { "@type": "Organization", "name": "Example Company", "sameAs": "https://www.example.com" },
  "offers": [{ "@type": "Offer", "category": "Paid", "price": "15000", "priceCurrency": "INR" }],
  "hasCourseInstance": [{
    "@type": "CourseInstance",
    "courseMode": "Online",
    "courseSchedule": {
      "@type": "Schedule",
      "repeatFrequency": "P1W",
      "repeatCount": 6,
      "startDate": "2026-11-05",
      "duration": "PT2H"
    }
  }]
}

Google’s course features have changed over time. Check Google’s current documentation for which course properties and rich results are supported before relying on them; accurate course markup still helps search engines understand the page.

Implementation tips

  • Generate markup from the same data that renders the page; see automating structured data.
  • Use the Indian time zone offset, +05:30, in dates and times.
  • Give each event or course its own page; do not mark up listings as if they were single events.
  • Validate with Google’s Rich Results Test and watch Search Console’s enhancement reports.

Frequently asked questions

Should past events keep their markup?

Keep past event pages if they have value, such as recordings or write-ups. The event markup can remain with its original dates; Google stops showing past events.

Can a webinar use Event markup?

Yes, with online attendance mode and a VirtualLocation. See turning webinars into cited content.

Do AI assistants use this markup?

AI companies have not documented this in detail. The visible page text matters most, and structured data helps search engines, whose results many assistants draw on.

Sources

  1. Google Search Central, “Event (Event, Place, Offer) structured data”
  2. Google Search Central, course structured data documentation
  3. schema.org, Event, Course and CourseInstance