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 Meeting-Erstellung | ⚠️ Deaktiviert | Im Code vorbereitet |
| Webhook-Endpoint | ⚠️ Nicht konfiguriert | Erfordert Zoom Marketplace Setup |
| Teilnahme-Tracking | ⚠️ Wartet auf Webhook | Code fertig |
| Recording-Import | ⚠️ Wartet auf Webhook | Code fertig |
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 |
Danach App aktivieren (Activate your app).
Meeting erstellen
Manuell (Empfohlen)
Wenn ein Kurs die Produktart "online" hat (z.B. Live Webinar), erscheint eine Zoom-Metabox:
- Kurs bearbeiten
- In der Seitenleiste: "Zoom Meeting" Box
- Klicken Sie "Meeting erstellen"
- Fertig! Meeting-ID und Links werden gespeichert
Was wird erstellt?
| Feld | Beschreibung |
|---|---|
| Meeting-ID | Eindeutige Zoom-ID |
| Teilnehmer-Link | URL fuer Teilnehmer (in E-Mails) |
| Host-Link | URL fuer Sie als Gastgeber |
| Kenncode | Meeting-Passwort |
Meeting-Einstellungen
Das Meeting wird mit diesen Standardeinstellungen erstellt:
- Host-Video: An
- Teilnehmer-Video: Aus
- Warteraum: Aktiviert
- Stummschaltung beim Beitritt: An
- Aufnahme: Keine
Zoom-Metabox im Kurs
Ohne Meeting
Wenn noch kein Meeting existiert:
┌─────────────────────────────────┐
│ Zoom Meeting │
├─────────────────────────────────┤
│ Noch kein Zoom-Meeting │
│ │
│ [Meeting erstellen] │
└─────────────────────────────────┘
Mit Meeting
Nach dem Erstellen:
┌─────────────────────────────────┐
│ Zoom Meeting │
├─────────────────────────────────┤
│ ✓ Meeting aktiv │
│ │
│ Meeting-ID: 856 7890 1234 │
│ Kenncode: 123456 │
│ │
│ [Teilnehmer-Link] [Meeting starten]│
│ │
│ ─────────────────────────────── │
│ [Meeting loeschen] │
└─────────────────────────────────┘
Wann erscheint die Metabox?
Die Zoom-Metabox erscheint nur wenn:
- Zoom-Modul aktiviert ist
- API-Zugangsdaten konfiguriert sind
- Kurs hat Produktart mit Art = "online"
E-Mail-Platzhalter
In Buchungsbestaetigungs-E-Mails koennen Sie Zoom-Daten einfuegen:
| Platzhalter | Ausgabe |
|---|---|
{{zoom_join_url}} |
Teilnehmer-Link |
{{zoom_password}} |
Meeting-Kenncode |
{{zoom_meeting_id}} |
Meeting-ID |
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.
Aktueller Workflow
So funktioniert die Zoom-Integration aktuell:
1. Admin aktiviert Zoom-Modul (Einstellungen → Module)
2. Admin traegt Zoom-Credentials ein (Account ID, Client ID, Secret)
3. Admin testet Verbindung
4. Admin erstellt Online-Kurs
5. Admin klickt manuell "Meeting erstellen" in der Metabox
→ Meeting wird bei Zoom erstellt
→ Join-URL wird gespeichert
6. Kunde bucht Kurs
7. Buchungsbestaetigung enthaelt {{zoom_join_url}} (wenn Template konfiguriert)
8. Kunde tritt Meeting bei ueber Link
Was NICHT passiert (ohne Webhook-Setup):
- Keine automatische Meeting-Erstellung bei Kurs-Speicherung
- Kein Tracking wer teilgenommen hat
- Keine automatische Recording-Speicherung
- Keine Registrierung der Teilnehmer bei Zoom
Webhooks (Optional/Erweitert)
Hinweis: Webhooks erfordern zusaetzliches Setup im Zoom Marketplace.
Webhook-Features (im Code vorbereitet)
| Feature | Status | Beschreibung |
|---|---|---|
| Meeting gestartet | ⚠️ | Status-Update in WordPress |
| Meeting beendet | ⚠️ | Dauer speichern |
| Teilnehmer beigetreten | ⚠️ | Anwesenheit tracken |
| Aufnahme fertig | ⚠️ | Recording-URL speichern |
Webhook einrichten
- In Zoom App: "Feature" → "Event Subscriptions"
- Webhook-URL aus Plugin-Einstellungen kopieren:
https://ihre-domain.de/wp-json/kurs-booking/v1/zoom-webhook - Events aktivieren:
meeting.startedmeeting.endedmeeting.participant_joinedrecording.completed- Secret Token kopieren und in WordPress eintragen
- Checkbox "Teilnahme erfassen" aktivieren
Technische Einstellungen
Unter "Technische Einstellungen" (aufklappbar) finden Sie:
| Feld | Beschreibung |
|---|---|
| Webhook Secret | Fuer Signatur-Verifizierung |
| Verification Token | Fuer URL-Validierung |
| Endpoint URL | Webhook-Adresse fuer Zoom |
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 |
Meeting wird nicht erstellt
| Problem | Loesung |
|---|---|
| Button fehlt | Produktart auf "online" setzen |
| "API nicht konfiguriert" | Zugangsdaten eintragen |
| "Berechtigung fehlt" | Admin-Rechte pruefen |
Metabox erscheint nicht
- Zoom-Modul aktiviert?
- API-Zugangsdaten eingetragen?
- Kurs hat Online-Produktart?
Sicherheit
Zugangsdaten
- Client Secret wird verschluesselt gespeichert
- Host-Link niemals in E-Mails (nur fuer Admin!)
- Teilnehmer-Link ist sicher zum Versenden
Best Practices
- Warteraum aktiviert lassen - Kontrolle ueber Teilnehmer
- Kenncode verwenden - Zusaetzliche Sicherheit
- Host-Link geheim halten - Nur Sie als Gastgeber
Haeufige Fragen
Brauche ich einen kostenpflichtigen Zoom-Account?
Fuer die API-Integration: Ja, mindestens Zoom Pro (~14€/Monat). Die Server-to-Server OAuth App erfordert einen bezahlten Account.
Was passiert wenn ich den Kurs loesche?
Das Zoom-Meeting wird automatisch mitgeloescht.
Kann ich ein bestehendes Meeting verwenden?
Aktuell werden Meetings nur ueber das Plugin erstellt. Manuelle Meeting-IDs werden nicht unterstuetzt.
Werden Serien-Termine unterstuetzt?
Recurring Meetings sind fuer eine spaetere Version geplant.
Warum keine automatische Meeting-Erstellung?
Die automatische Erstellung beim Kurs-Speichern ist im Code vorbereitet, aber bewusst deaktiviert. Grund: Manuelles Erstellen gibt mehr Kontrolle darueber, wann ein Meeting angelegt wird.
Technische Referenz
Betroffene Dateien
| Datei | Zweck |
|---|---|
includes/class-zoom-api.php |
OAuth + API-Aufrufe |
includes/class-zoom-settings.php |
Einstellungen-Tab |
includes/class-zoom-kurs.php |
Kurs-Metabox + CRUD |
includes/class-zoom-webhook.php |
Webhook-Handler |
includes/class-email.php |
E-Mail-Platzhalter |
Meta-Felder
| Meta-Key | Beschreibung |
|---|---|
_kurs_zoom_meeting_id |
Zoom Meeting-ID |
_kurs_zoom_join_url |
Teilnehmer-Link |
_kurs_zoom_start_url |
Host-Link |
_kurs_zoom_password |
Meeting-Kenncode |
_kurs_zoom_status |
Status (none/planned/live/ended) |
Letzte Aktualisierung: 24. Januar 2026 (Ehrliche Bestandsaufnahme)