Zoom Integration

Zoom-Meetings automatisch erstellen und verwalten

Zoom Meeting Online-Kurs Webinar API

Zoom Integration

Verbindet Ihre Online-Kurse automatisch mit Zoom. Meetings werden direkt aus WordPress erstellt - kein manuelles Kopieren von Links mehr noetig.


Status-Uebersicht

Feature Status Hinweis
API-Verbindung ✅ Funktioniert OAuth Token-Handling
Zugangsdaten speichern ✅ Funktioniert Account ID, Client ID, Secret
Verbindung testen ✅ Funktioniert AJAX in Einstellungen
Meeting manuell erstellen ✅ Funktioniert Button in Kurs-Metabox
Meeting loeschen ✅ Funktioniert Button in Kurs-Metabox
Auto-Delete bei Kurs-Loeschung ✅ Funktioniert Automatisch
Join-URL in E-Mail ✅ Funktioniert {{zoom_join_url}} Platzhalter
Automatische Teilnehmer-Registrierung ✅ Funktioniert Bei Buchungsbestaetigung (Sprint 72)
Persoenlicher Zoom-Link ✅ Funktioniert Pro Buchung individueller Link
Video Auto-Import ✅ Funktioniert recording.completed Webhook (Sprint 72)
Video-Benachrichtigung ✅ Funktioniert E-Mail wenn Video bereit (Sprint 73)
Admin GUI ✅ Funktioniert 4 Tabs: Uebersicht, Registrierungen, Benachrichtigungen, Einstellungen (Sprint 74)
Teilnahme-Tracking ✅ Funktioniert participant_joined Webhook (Sprint 75)
Meeting-Status Live ✅ Funktioniert meeting.started/ended Webhooks (Sprint 75)

Einrichtung

Schritt 1: Modul aktivieren

  1. Gehen Sie zu Kurs-Booking → Einstellungen → Module
  2. Aktivieren Sie "Zoom"
  3. Speichern

Schritt 2: Zoom Server-to-Server App erstellen

  1. Oeffnen Sie Zoom App Marketplace
  2. Klicken Sie auf "Build App"
  3. Waehlen Sie "Server-to-Server OAuth"
  4. Geben Sie einen Namen ein (z.B. "Kurs-Booking")
  5. Klicken Sie "Create"

Schritt 3: Zugangsdaten kopieren

In der Zoom App finden Sie drei wichtige Werte:

Feld Wo zu finden
Account ID App Credentials → Account ID
Client ID App Credentials → Client ID
Client Secret App Credentials → Client Secret

Schritt 4: In WordPress eintragen

  1. Gehen Sie zu Kurs-Booking → Einstellungen → Zoom
  2. Tragen Sie die drei Werte ein:
  3. Account ID
  4. Client ID
  5. Client Secret
  6. Klicken Sie "Verbindung testen"
  7. Bei Erfolg: Gruener Haken erscheint
  8. Speichern

Schritt 5: Scopes aktivieren (in Zoom)

In der Zoom App unter "Scopes" folgende Berechtigungen aktivieren:

Scope Beschreibung
meeting:write:admin Meetings erstellen/loeschen
meeting:read:admin Meeting-Details lesen
user:read:admin Benutzerinfo lesen
meeting:write:registrant:admin Teilnehmer registrieren
cloud_recording:read:admin Aufnahmen lesen

Danach App aktivieren (Activate your app).


Vollstaendiger Workflow

So funktioniert die Zoom-Integration (Sprint 72-74):

1. Admin erstellt Online-Kurs
   └─→ Klickt "Meeting erstellen" in Metabox
   └─→ Zoom-Meeting wird erstellt

2. Kunde bucht Kurs
   └─→ Buchung wird bestaetigt
   └─→ Automatische Zoom-Registrierung
   └─→ Persoenlicher Join-Link wird generiert

3. Bestaetigungs-E-Mail
   └─→ Enthaelt persoenlichen Zoom-Link
   └─→ (nicht den allgemeinen Meeting-Link!)

4. Zoom-Meeting findet statt
   └─→ [Optional] Teilnahme wird getrackt

5. Aufnahme wird erstellt
   └─→ recording.completed Webhook
   └─→ Video automatisch importiert
   └─→ Dem Kurs zugeordnet

6. Video ist bereit
   └─→ E-Mail an alle Teilnehmer
   └─→ Link zum Kundenportal

7. Admin verwaltet alles
   └─→ Zoom Admin GUI (4 Tabs)

Zoom Admin GUI

URL: wp-admin/admin.php?page=kurs-booking-zoom

Tab: Uebersicht

  • 4 Statistik-Karten: Registriert, Teilgenommen, Benachrichtigt, Ausstehend
  • Aktivitaets-Log: Letzte 10 Aktionen

Tab: Zoom-Registrierungen

Alle Buchungen mit Zoom-Registrierung:

Spalte Beschreibung
Kurs Kursname
Teilnehmer Name des Buchenden
E-Mail E-Mail-Adresse
Status registered / error / test_mode
Teilgenommen Ja/Nein (wenn Webhook aktiv)
Registriert am Datum

Aktionen: Erneut registrieren, Join-Link kopieren

Tab: Video-Benachrichtigungen

Alle Video/Buchung-Kombinationen:

Spalte Beschreibung
Video Video-Titel
Kurs Zugeordneter Kurs
Teilnehmer Name
Status Gesendet / Ausstehend

Aktionen: Senden, Erneut senden, Alle senden

Tab: Einstellungen

Option Beschreibung
Auto-Registrierung Teilnehmer automatisch bei Zoom registrieren
Video-Import Videos automatisch aus Zoom importieren
Benachrichtigung Teilnehmer per E-Mail benachrichtigen

Webhooks einrichten

Aktuelle Konfiguration

Event Status Funktion
recording.completed ✅ Aktiv Video Auto-Import
meeting.started ✅ Aktiv Status auf "live" (Sprint 75)
meeting.ended ✅ Aktiv Status auf "ended", Dauer (Sprint 75)
meeting.participant_joined ✅ Aktiv Teilnahme tracken (Sprint 75)

Webhooks aktivieren

  1. Oeffnen Sie Zoom Marketplace
  2. Waehlen Sie Ihre App "Kurs-Booking Integration"
  3. Gehen Sie zu Feature → Event Subscriptions
  4. Klicken Sie "Add Event Subscription" (falls nicht vorhanden)
  5. Konfigurieren:
Feld Wert
Subscription Name Kurs-Booking Events
Event notification endpoint URL https://islandpferde-melanieworbs.de/wp-json/kurs-booking/v1/zoom-webhook
  1. Unter Event types hinzufuegen:
  2. meeting.started
  3. meeting.ended
  4. meeting.participant_joined
  5. recording.completed (falls nicht vorhanden)

  6. Save klicken

  7. Secret Token kopieren (falls geaendert)
  8. In WordPress unter Einstellungen → Zoom → Webhook Secret eintragen

Webhook testen

Nach Aktivierung: 1. Erstellen Sie ein Test-Meeting 2. Starten Sie das Meeting 3. Pruefen Sie die Zoom Admin GUI → Uebersicht → Aktivitaets-Log 4. "meeting.started" sollte erscheinen


E-Mail-Platzhalter

In Buchungsbestaetigungs-E-Mails:

Platzhalter Ausgabe
{{zoom_join_url}} Persoenlicher Teilnehmer-Link
{{zoom_password}} Meeting-Kenncode
{{zoom_meeting_id}} Meeting-ID

Wichtig: {{zoom_join_url}} gibt den persoenlichen Link aus (falls Registrierung aktiv), nicht den allgemeinen Meeting-Link.

Beispiel E-Mail-Text

Ihr Zoom-Zugang:

Meeting-Link: {{zoom_join_url}}
Meeting-ID: {{zoom_meeting_id}}
Kenncode: {{zoom_password}}

Bitte treten Sie 5 Minuten vor Beginn bei.

Meeting erstellen

Manuell (Empfohlen)

  1. Kurs bearbeiten (Produktart mit Art = "online")
  2. In der Seitenleiste: "Zoom Meeting" Box
  3. Klicken Sie "Meeting erstellen"
  4. Fertig! Meeting-ID und Links werden gespeichert

Meeting-Einstellungen

Das Meeting wird mit diesen Standardeinstellungen erstellt:

  • Host-Video: An
  • Teilnehmer-Video: Aus
  • Warteraum: Aktiviert
  • Stummschaltung beim Beitritt: An
  • Registrierung: Erforderlich (fuer persoenliche Links)

Unterstuetzte Produktarten

Zoom ist fuer alle Produktarten mit Art = "online" verfuegbar:

Produktart Art Zoom
Live Webinar online
Workshop Online online
Coaching Online online
Praesenz-Kurs praesenz
Lehrvideo digital

Hinweis: Die "Art" wird in den Dienstleistungen-Einstellungen festgelegt.


Fehlerbehebung

API-Verbindung schlaegt fehl

Problem Loesung
"Invalid credentials" Client ID/Secret pruefen
"Account not found" Account ID pruefen
"Insufficient scope" Scopes in Zoom App aktivieren
"App not activated" App in Zoom aktivieren

Registrierung schlaegt fehl

Problem Loesung
"Registration not enabled" Meeting mit Registrierung erstellen
"Invalid email" E-Mail-Format pruefen
Status "error:..." Fehlermeldung in Admin GUI pruefen

Video wird nicht importiert

Problem Loesung
Webhook nicht empfangen Event Subscription pruefen
"Invalid signature" Webhook Secret pruefen
Video nicht zugeordnet Meeting-ID mit Kurs verknuepft?

Technische Referenz

Betroffene Dateien

Datei Zweck
class-zoom-api.php OAuth + API-Aufrufe
class-zoom-settings.php Einstellungen-Tab
class-zoom-kurs.php Kurs-Metabox + Meeting CRUD
class-zoom-webhook.php Webhook-Handler
class-zoom-registrant.php Teilnehmer-Registrierung
class-zoom-video-import.php Video Auto-Import
class-zoom-admin.php Admin GUI (4 Tabs)
class-video-notification.php E-Mail-Benachrichtigung

Meta-Felder (Kurs)

Meta-Key Beschreibung
_kurs_zoom_meeting_id Zoom Meeting-ID
_kurs_zoom_join_url Allgemeiner Teilnehmer-Link
_kurs_zoom_start_url Host-Link
_kurs_zoom_password Meeting-Kenncode
_kurs_zoom_status Status (none/planned/live/ended)

Meta-Felder (Buchung)

Meta-Key Beschreibung
_buchung_zoom_registrant_id Zoom Registrant-ID
_buchung_zoom_registration_status registered/error/test_mode
_buchung_zoom_join_url Persoenlicher Join-Link
_buchung_zoom_registered_at Registrierungsdatum
_buchung_zoom_attended Teilnahme (1/0)
_video_notification_sent_{id} Video-Benachrichtigung gesendet

Letzte Aktualisierung: 27. Januar 2026 (Sprint 75 Zoom-Konfiguration abgeschlossen)