Wer Veranstaltungen auf seiner Website bewirbt — sei es ein Konzert, ein Workshop, ein Webinar oder ein lokales Stadtfest — hat mit Event Schema Markup einen mächtigen SEO-Hebel in der Hand. Google kann diese strukturierten Daten auswerten und die Veranstaltung direkt in den Suchergebnissen als Rich Snippet mit Datum, Ort und Ticket-Informationen anzeigen. Das erhöht die Sichtbarkeit erheblich und bringt qualifizierten Traffic auf deine Seite.
In diesem Artikel zeigen wir dir alles, was du über Event Schema Markup wissen musst: Welche Felder Google unterstützt, wie du gültige JSON-LD-Codes für verschiedene Veranstaltungstypen schreibst, und welche Fehler du unbedingt vermeiden solltest.
Was ist Event Schema Markup?
Event Schema Markup ist eine Form von strukturierten Daten, die auf dem Schema.org-Vokabular basiert. Mit dem Event-Typ teilst du Google mit, dass eine bestimmte Seite eine Veranstaltung beschreibt — komplett mit Zeitpunkt, Ort, Veranstalter und weiteren Details.
Google verwendet diese Informationen, um Event Rich Snippets zu generieren, die in den normalen Suchergebnissen erscheinen. Zusätzlich werden Events in der Google-Ereignissuche angezeigt — einem eigenen Bereich in Google Search, der bei veranstaltungsbezogenen Suchanfragen erscheint. Dort konkurrierst du nicht mit allen anderen Suchergebnissen, sondern direkt mit anderen Veranstaltungen — ein enormer Vorteil.
Welche Event-Typen unterstützt Google?
Schema.org definiert viele Untertypen von Event. Google erkennt und wertet folgende Typen als Rich Snippets aus:
- Event — der generische Typ, funktioniert für fast alles
- MusicEvent — Konzerte, Musikfestivals, Live-Auftritte
- SportsEvent — Sportveranstaltungen und Turniere
- TheaterEvent — Theater, Oper, Musicals
- EducationEvent — Workshops, Seminare, Konferenzen
- ExhibitionEvent — Ausstellungen, Messen
- SaleEvent — Sonderverkäufe, Rabattaktionen
- FoodEvent — Weinproben, Kochkurse, Galadinner
- ChildrensEvent — Kinderveranstaltungen
- ComedyEvent — Comedy-Shows, Kabarett
- DanceEvent — Tanzveranstaltungen, Bälle
- LiteraryEvent — Lesungen, Buchvorstellungen
- VisualArtsEvent — Kunstausstellungen, Vernissagen
Wenn kein Untertyp passt, verwende einfach Event. Google verarbeitet das genauso zuverlässig.
Pflichtfelder und empfohlene Felder
Google unterscheidet zwischen Pflichtfeldern (ohne die kein Rich Snippet erscheint) und empfohlenen Feldern (die das Snippet bereichern).
Pflichtfelder
- name — Der vollständige Name der Veranstaltung
- startDate — Startdatum und -uhrzeit im ISO-8601-Format (
2026-06-15T19:30:00+02:00) - location — Der Veranstaltungsort (Objekt mit name, address)
Empfohlene Felder
- endDate — Enddatum und -uhrzeit
- description — Beschreibung der Veranstaltung
- image — URL eines Vorschaubildes (min. 720px breit, Verhältnis 16:9)
- url — URL der Veranstaltungsseite
- organizer — Veranstalter (Person oder Organisation)
- offers — Ticket-Informationen (Preis, Verfügbarkeit)
- performer — Auftretende Künstler oder Redner
- eventStatus — Status der Veranstaltung (geplant, abgesagt, verschoben)
- eventAttendanceMode — Online, Offline oder gemischt
Vollständiges Beispiel: Präsenz-Veranstaltung (Konzert)
Hier ist ein vollständiges JSON-LD-Beispiel für ein Konzert mit allen wichtigen Feldern:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "MusicEvent",
"name": "Sommerfestival 2026 — Live unter freiem Himmel",
"description": "Das größte Open-Air-Festival der Region mit nationalen und internationalen Künstlern. 3 Bühnen, 12 Stunden Musik.",
"image": "https://example.de/images/sommerfestival-2026.jpg",
"url": "https://example.de/events/sommerfestival-2026",
"startDate": "2026-06-20T14:00:00+02:00",
"endDate": "2026-06-20T02:00:00+02:00",
"eventStatus": "https://schema.org/EventScheduled",
"eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
"location": {
"@type": "Place",
"name": "Stadtpark Hannover",
"address": {
"@type": "PostalAddress",
"streetAddress": "Clausewitzstraße 1",
"addressLocality": "Hannover",
"postalCode": "30175",
"addressCountry": "DE"
}
},
"organizer": {
"@type": "Organization",
"name": "Kulturbüro Hannover GmbH",
"url": "https://example.de"
},
"performer": [
{
"@type": "MusicGroup",
"name": "The Cosmic Waves"
},
{
"@type": "Person",
"name": "Jana Schröder"
}
],
"offers": {
"@type": "Offer",
"name": "Early-Bird-Ticket",
"price": "29.00",
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock",
"validFrom": "2026-03-01T00:00:00+01:00",
"url": "https://example.de/tickets/sommerfestival-2026"
}
}
</script>
Online-Events und Hybrid-Veranstaltungen
Seit 2020 unterstützt Google auch Online-Events. Für reine Online-Veranstaltungen wie Webinare, Online-Workshops oder virtuelle Konferenzen verwendest du eventAttendanceMode: VirtualEventAttendanceMode und gibst statt eines physischen Ortes eine Online-Plattform an:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "EducationEvent",
"name": "SEO-Grundlagen Webinar — Sichtbarkeit aufbauen 2026",
"description": "In diesem 90-minütigen Webinar lernst du die wichtigsten SEO-Grundlagen und wie du deine Website bei Google sichtbarer machst.",
"image": "https://example.de/images/seo-webinar.jpg",
"url": "https://example.de/webinar/seo-grundlagen",
"startDate": "2026-05-10T18:00:00+02:00",
"endDate": "2026-05-10T19:30:00+02:00",
"eventStatus": "https://schema.org/EventScheduled",
"eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode",
"location": {
"@type": "VirtualLocation",
"url": "https://zoom.us/j/1234567890"
},
"organizer": {
"@type": "Organization",
"name": "Shift07",
"url": "https://shift07.ai"
},
"offers": {
"@type": "Offer",
"name": "Webinar-Ticket",
"price": "0",
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock",
"url": "https://example.de/webinar/seo-grundlagen/anmelden"
}
}
</script>
Für Hybrid-Events — also Veranstaltungen, die sowohl vor Ort als auch online stattfinden — nutze MixedEventAttendanceMode und gib beide Locations als Array an:
"eventAttendanceMode": "https://schema.org/MixedEventAttendanceMode",
"location": [
{
"@type": "Place",
"name": "Kongresszentrum Berlin",
"address": { ... }
},
{
"@type": "VirtualLocation",
"url": "https://livestream.example.de"
}
]
EventStatus: Geplant, Verschoben oder Abgesagt
Das Feld eventStatus ist besonders wichtig, wenn sich Veranstaltungen kurzfristig ändern. Google zeigt den Status im Rich Snippet an — "Abgesagt" oder "Verschoben" sind klare Signale für Nutzer und vermeiden Beschwerden. Die möglichen Werte:
https://schema.org/EventScheduled— Die Veranstaltung findet wie geplant statthttps://schema.org/EventCancelled— Die Veranstaltung ist abgesagthttps://schema.org/EventPostponed— Die Veranstaltung ist verschoben (kein neues Datum bekannt)https://schema.org/EventRescheduled— Die Veranstaltung wurde auf ein neues Datum verlegthttps://schema.org/EventMovedOnline— Die Veranstaltung findet jetzt online statt
Bei EventRescheduled solltest du zusätzlich das Feld previousStartDate mit dem ursprünglichen Datum befüllen, damit Google den Wechsel korrekt verarbeiten kann.
Ticket-Informationen mit offers
Das offers-Feld ist eines der wertvollsten in Event Schema — Google zeigt Ticketpreise direkt in den Suchergebnissen an, was die Klickrate massiv erhöht. Du kannst sowohl ein einzelnes Angebot als auch mehrere Preiskategorien (Array) angeben:
"offers": [
{
"@type": "Offer",
"name": "Frühlingsticket (Standardpreis)",
"price": "49.00",
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock",
"validFrom": "2026-04-01T00:00:00+02:00",
"url": "https://example.de/tickets"
},
{
"@type": "Offer",
"name": "VIP-Ticket",
"price": "149.00",
"priceCurrency": "EUR",
"availability": "https://schema.org/LimitedAvailability",
"validFrom": "2026-04-01T00:00:00+02:00",
"url": "https://example.de/tickets/vip"
}
]
Wichtige Availability-Werte für das availability-Feld:
https://schema.org/InStock— Tickets verfügbarhttps://schema.org/LimitedAvailability— Wenige Tickets verbleibendhttps://schema.org/SoldOut— Ausverkaufthttps://schema.org/PreOrder— Vorverkauf
Mehrere Events auf einer Seite
Wenn du eine Übersichtsseite mit mehreren Veranstaltungen hast (z.B. eine Eventkalender-Seite), kannst du mehrere Event-Objekte in einem Array einbinden. Google verarbeitet jeden Eintrag separat:
<script type="application/ld+json">
[
{
"@context": "https://schema.org",
"@type": "Event",
"name": "Stadtfest Berlin — Eröffnungsabend",
"startDate": "2026-07-01T18:00:00+02:00",
"location": { "@type": "Place", "name": "Alexanderplatz Berlin", "address": { ... } }
},
{
"@context": "https://schema.org",
"@type": "Event",
"name": "Stadtfest Berlin — Hauptprogramm",
"startDate": "2026-07-02T10:00:00+02:00",
"location": { "@type": "Place", "name": "Alexanderplatz Berlin", "address": { ... } }
}
]
</script>
Typische Fehler bei Event Schema Markup
In unserer Analyse von 198 deutschen Unternehmens-Websites zeigen sich immer wieder die gleichen Fehler beim Einsatz von strukturierten Daten. Beim Event Schema sind es vor allem:
- Falsches Datumsformat — Nur ISO-8601 ist gültig. "15.06.2026" funktioniert nicht. Richtig:
2026-06-15T19:30:00+02:00 - Vergangenheitsdaten — Google indexiert keine Events, die bereits stattgefunden haben. Halte die Daten immer aktuell.
- Fehlende Location — Ein Event ohne
locationgilt als unvollständig und erscheint nicht als Rich Snippet. - Inkonsistente Inhalte — Der Inhalt im Schema muss mit dem sichtbaren Seiteninhalt übereinstimmen. Ein Event das im Schema "kostenlos" ist, aber auf der Seite als kostenpflichtig beworben wird, verstößt gegen Googles Richtlinien.
- Veraltete eventStatus-Werte — Wenn eine Veranstaltung abgesagt wurde, muss das Schema sofort aktualisiert werden. Vergisst du das, können verärgerte Nutzer deine Website besuchen und finden, dass das Event längst vorbei oder gecancelt ist.
- Kein Bild angegeben — Ohne
imagezeigt Google möglicherweise keinen visuellen Rich Snippet.
Beispiel: Workshop mit mehreren Terminen
Viele Anbieter — Yoga-Studios, Bildungseinrichtungen, Coaches — bieten Kurse mit Wiederholungsterminen an. Hier gibt es zwei Ansätze:
Ansatz 1: Eigene Seite pro Termin
Erstelle für jeden Termin eine eigene URL und ein eigenes Event-Schema. Das ist sauberer und Google kann jeden Termin einzeln indexieren. Für wöchentliche Kurse kann das aufwendig sein, lohnt sich aber bei hochwertigen Veranstaltungen.
Ansatz 2: Wiederkehrendes Event mit mehreren offers
Alternativ kannst du ein Event mit dem nächsten Datum angeben und im description-Feld auf weitere Termine hinweisen. Füge außerdem mehrere offers-Einträge für verschiedene Termine hinzu:
{
"@context": "https://schema.org",
"@type": "EducationEvent",
"name": "Yoga für Anfänger — 8-Wochen-Kurs",
"description": "Unser Anfängerkurs startet jeden Monat neu. Nächste Termine: Mai, Juni und Juli 2026.",
"startDate": "2026-05-04T09:00:00+02:00",
"endDate": "2026-05-04T10:30:00+02:00",
"eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
"eventStatus": "https://schema.org/EventScheduled",
"location": {
"@type": "Place",
"name": "Yoga Studio Mitte",
"address": {
"@type": "PostalAddress",
"streetAddress": "Lindenstraße 12",
"addressLocality": "Berlin",
"postalCode": "10969",
"addressCountry": "DE"
}
},
"offers": {
"@type": "Offer",
"price": "120.00",
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock",
"url": "https://example.de/yoga/anmelden"
}
}
Wie du Event Schema Markup in deine Website einbindest
Am einfachsten ist es, das JSON-LD-Skript direkt in den <head>-Bereich deiner Event-Seite einzufügen. Das geht in praktisch jedem CMS:
WordPress
In WordPress kannst du das Schema entweder über ein Plugin wie "RankMath" oder "Yoast SEO" (Premium) automatisch generieren lassen, oder du fügst den Code manuell über das Theme-Customizer-Feld "Zusätzliches HTML" im Header ein. Für maximale Kontrolle empfehlen wir die manuelle Einbindung über einen Child-Theme-Hook oder ein Plugin wie "Head, Footer and Post Injections".
Statische Websites
Bei statischen Websites oder selbst entwickelten Seiten fügst du das <script type="application/ld+json">-Tag direkt in den <head>-Bereich jeder Event-Seite ein. Für Websites mit vielen Events empfiehlt sich eine Template-Engine, die das Schema dynamisch aus einer Datenbank befüllt.
Event Schema validieren
Bevor du das Event Schema live schaltest, solltest du es unbedingt validieren. Zwei kostenlose Tools helfen dabei:
- Google Rich Results Test — Zeigt dir, ob dein Schema korrekt ist und ob ein Rich Snippet generiert wird. Tipp: Nutze unseren JSON-LD Structured Data Validator für eine schnelle Prüfung direkt im Browser.
- Schema Markup Validator (validator.schema.org) — Prüft, ob das Schema dem Schema.org-Standard entspricht, unabhängig von Googles Anforderungen.
Achte auf folgende Punkte in der Validierung:
- Keine Pflichtfelder dürfen fehlen (name, startDate, location)
- Datumsformat muss ISO-8601 sein
- URLs müssen vollständig und erreichbar sein
- Preisangaben müssen als Dezimalzahl formatiert sein (49.00, nicht "49,00 €")
Zusammenfassung: Event Schema Markup Checkliste
Nutze diese Checkliste für jede neue Veranstaltungsseite:
- ✅ Richtigen Event-Typ gewählt (
Event,MusicEvent,EducationEvent, etc.) - ✅
namevollständig und aussagekräftig - ✅
startDateim ISO-8601-Format mit Zeitzone - ✅
locationmit vollständiger Adresse (oderVirtualLocationfür Online-Events) - ✅
eventStatusgesetzt (EventScheduled/EventCancelled/EventRescheduled) - ✅
eventAttendanceModeangegeben - ✅
imagemit mindestens 720px Breite - ✅
offersmit Preis, Währung und Verfügbarkeit - ✅
organizermit Name und URL - ✅ Schema stimmt mit sichtbarem Seiteninhalt überein
- ✅ Validierung mit Google Rich Results Test bestanden
Wenn du alle diese Punkte beachtest, steht deinen Veranstaltungs-Rich-Snippets in Google nichts mehr im Wege. Die Klickrate auf Seiten mit Event-Rich-Snippets liegt erfahrungsgemäß deutlich über dem Durchschnitt — weil Nutzer sofort sehen, wann und wo die Veranstaltung stattfindet, ohne erst die Seite öffnen zu müssen.
Nutze außerdem unsere weiteren Artikel zur Schema-Markup-Serie: Strukturierte Daten für SEO, FAQPage Schema oder BreadcrumbList Schema — und erstelle dein Event-Schema mit unserem kostenlosen Schema Generator.