Zoom Integration
Zoom-Meetings automatisch erstellen und verwalten
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
- Gehen Sie zu Kurs-Booking → Einstellungen → Module
- Aktivieren Sie "Zoom"
- Speichern
Schritt 2: Zoom Server-to-Server App erstellen
- Oeffnen Sie Zoom App Marketplace
- Klicken Sie auf "Build App"
- Waehlen Sie "Server-to-Server OAuth"
- Geben Sie einen Namen ein (z.B. "Kurs-Booking")
- 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
- Gehen Sie zu Kurs-Booking → Einstellungen → Zoom
- Tragen Sie die drei Werte ein:
- Account ID
- Client ID
- Client Secret
- Klicken Sie "Verbindung testen"
- Bei Erfolg: Gruener Haken erscheint
- 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-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
- Oeffnen Sie Zoom Marketplace
- Waehlen Sie Ihre App "Kurs-Booking Integration"
- Gehen Sie zu Feature → Event Subscriptions
- Klicken Sie "Add Event Subscription" (falls nicht vorhanden)
- Konfigurieren:
| Feld | Wert |
|---|---|
| Subscription Name | Kurs-Booking Events |
| Event notification endpoint URL | https://islandpferde-melanieworbs.de/wp-json/kurs-booking/v1/zoom-webhook |
- Unter Event types hinzufuegen:
meeting.startedmeeting.endedmeeting.participant_joined-
recording.completed(falls nicht vorhanden) -
Save klicken
- Secret Token kopieren (falls geaendert)
- 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)
- Kurs bearbeiten (Produktart mit Art = "online")
- In der Seitenleiste: "Zoom Meeting" Box
- Klicken Sie "Meeting erstellen"
- 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)