WhatsApp-Automatisierung — Einrichtung & Betrieb
Diese Anleitung beschreibt, wie die WhatsApp-Automatisierung (eingehende Nachricht → Workflow → 24h-Branching → Claude-AI-Antwort → Terminbuchung) scharf geschaltet und betrieben wird. Alles läuft zentral im Flow Builder (Seite „Workflows").
1. Voraussetzungen
Extern (mit Vorlaufzeit — früh starten):
- WhatsApp Business (WABA) Sender bei Twilio, von Meta freigeschaltet, inkl.
Absendenummer.
- Genehmigte Nachrichtenvorlagen (Templates) in Twilio (Content-SIDs) für:
- die Erstansprache (außerhalb des 24h-Fensters),
- die Fallback-/Reaktivierung (wenn das 24h-Fenster geschlossen ist).
In der App (Owner):
- Twilio-Zugang:
twilio_account_sid,twilio_auth_tokenund
twilio_whatsapp_number (Einstellungen → Telefonie/Twilio, bzw. ENV TWILIO_ACCOUNT_SID / TWILIO_AUTH_TOKEN / TWILIO_WHATSAPP_NUMBER).
- Org-eigener Anthropic-API-Key (KI-Karte) — wird in
workspace_ai
gespeichert. Ohne Key antwortet die KI nicht.
- Rollen: Workflows, Funnel scharf stellen und Kill-Switch sind owner-only.
- Event-Typ mit verbundenem Google-Kalender des Hosts (für freie Slots,
Meet-Link, Bestätigung) — nur nötig, wenn der Funnel Termine bucht.
2. Aktivierung Schritt für Schritt
Reihenfolge wichtig: ohne diese Schritte blockiert das Sende-Gate bewusst jeden automatischen Versand (Fail-safe).
- Twilio-Inbound-Webhook setzen
In der Twilio-Konsole (WhatsApp Sender → „When a message comes in"): https://<deine-domain>/api/twilio/whatsapp-inbound (HTTP POST). Die Nummer muss zur Org passen (twilio_whatsapp_number), sonst wird die Nachricht keinem Workspace zugeordnet.
- Anthropic-Key hinterlegen
Workspace → KI-Einstellungen → eigenen Anthropic-Key eintragen.
- Vorlagen hinterlegen
Die genehmigten Twilio-Content-SIDs stehen im Builder unter der Aktion „WhatsApp-Vorlage senden" als Auswahl bereit (geladen aus Twilio).
- Funnel scharf stellen + Versand-Einwilligung
Workflows → „WhatsApp · Erweitert" → Funnel-Sicherheit:
- „Funnel scharf stellen" (Aktivierungs-Gate) einschalten.
- „Ich sende verantwortungsvoll" (Sender-Opt-in) pro sendendem User
einschalten. Ohne Opt-in der Absende-Identität sendet die Engine NICHT.
- Optional Tageslimit (Meta-Schutz) prüfen (Standard 50).
- Workflow bauen (siehe Abschnitt 3) und über „Online schicken"
veröffentlichen (Versionsbump + Doppel-Bestätigung). Nur veröffentlichte, aktive Workflows laufen.
3. Workflow anlegen und mit WhatsApp verbinden
Im Flow Builder gibt es keinen separaten WhatsApp-Modus — WhatsApp ist über Trigger und Aktionen Teil jedes Workflows.
Trigger (Auslöser):
- „WhatsApp-Antwort erhalten" — reaktiv: startet, wenn ein Kontakt schreibt
(optional Schlüsselwort-Filter).
- „Manuelle Kontakt-Auswahl" — für den gedrosselten Batch-Drip: in der
Kontaktliste mehrere Kontakte markieren → Bulk-Aktion „Workflow" → diesen Workflow wählen. Der Versand wird über ein Drip-Fenster (Std.) mit Jitter verteilt (Meta-sicher, durabel über den Minuten-Cron).
Aktionen (Auswahl):
- „WhatsApp-Vorlage senden" — genehmigte Vorlage (Content-SID); funktioniert
auch außerhalb des 24h-Fensters.
- „KI antwortet auf WhatsApp (mit Ziel)" — Claude-Freitext im offenen
24h-Fenster; Feld „Ziel der KI" steuert das Gesprächsziel.
- „WhatsApp-Frage senden & auf Antwort warten" — pausiert den Lauf bis zur
Antwort (Funnel-Schritt).
- „Freie Termin-Slots abrufen" + „Termin buchen (KI wählt den Slot)" —
siehe Abschnitt 5.
Verbindung „hinterlegen": Es genügt, den Workflow zu veröffentlichen und (für Batch) über die Bulk-Aktion „Workflow" zu starten bzw. (reaktiv) den Trigger „WhatsApp-Antwort erhalten" zu nutzen. Der Inbound-Webhook ruft die Engine automatisch auf.
4. Das 24h-Branching
WhatsApp erlaubt freien Text nur innerhalb von 24 Stunden nach der letzten eingehenden Nachricht des Kontakts. Die Engine pflegt dafür contacts.last_whatsapp_inbound_at.
Im Builder über einen Filter-/Pfad-Knoten mit Feld „WhatsApp-Fenster (24h)":
- window_open → Kunde hat < 24h geschrieben → KI-Freitext erlaubt
(whatsapp_ai_reply, whatsapp_ask, WhatsApp senden).
- window_closed → Fenster zu → nur genehmigte Vorlage
(WhatsApp-Vorlage senden) zur Reaktivierung; sobald der Kunde wieder antwortet, öffnet sich das Fenster und der Flow läuft nahtlos weiter.
Wichtig: Freitext-Aktionen prüfen das Fenster zusätzlich selbst und brechen außerhalb ab (window_closed) — der Vorlagen-Pfad ist der vorgesehene Weg nach außen.
5. Terminbuchung anhängen
Im Funnel ohne Link — die KI bietet echte Zeiten an und bucht:
- „Freie Termin-Slots abrufen" (Event-Typ + Tage-Vorlauf) — legt die nächsten
freien Slots in den Kontext.
- „KI antwortet auf WhatsApp" — bietet die Slots konkret an und fragt, welcher
passt (kein Link).
- „WhatsApp-Frage senden & auf Antwort warten" — wartet auf die Wahl.
- „Termin buchen (KI wählt den Slot)" — ordnet die Antwort einem Slot zu und
bucht (Google-Event/Meet, Bestätigung, Reminder über den Cron).
Kontakt-Anlage (Event-Typ-Einstellung „Kontakt automatisch anlegen"):
- An (Standard): Unbekannte E-Mail → Kontakt wird neu angelegt, dann
Leadstatus gesetzt (über „Status nach Buchung"). Bekannte E-Mail → nur Status.
- Aus: Unbekannte E-Mail → Gast-Buchung (Termin ohne CRM-Kontakt).
- Im Event-Typ-Editor gibt es eine Test-Box: E-Mail eingeben → „Prüfen" zeigt
ohne echte Buchung, was passieren würde.
6. Compliance & Kill-Switch (rechtlich beachten)
- Einwilligung/Opt-in der Empfänger: WhatsApp-Erstansprache nur an Kontakte,
die zugestimmt haben. Außerhalb 24h ausschließlich genehmigte Vorlagen.
- Opt-out/STOP: Schreibt ein Kontakt „STOP" (bzw. Stopp, Unsubscribe,
Abmelden, Abbestellen, Optout — exakt; bzw. eindeutige Wörter führend), wird er zentral abgemeldet, laufende Funnel-Läufe werden gestoppt und eine Bestätigung gesendet. Abgemeldete werden bei JEDEM Versand geprüft (fail-safe).
- Tageslimit (
daily_cap, Standard 50): schützt vor Meta-Sperren. - Sender-Opt-in (pro User) und Funnel scharf stellen: ohne beide sendet
die Engine nicht — Schutz gegen versehentlichen Massenversand.
- Not-Aus (Kill-Switch): Workflows → „WhatsApp · Erweitert" → „Funnel-Sicherheit"
→ Not-Aus. Stoppt SOFORT alle laufenden Drips + wartenden Schritte der ganzen Org und entwaffnet den Funnel. Doppelt bestätigt.
7. Troubleshooting
| Symptom | Ursache / Lösung |
|---|---|
| KI antwortet nicht | Kein Org-Anthropic-Key (workspace_ai) → KI-Karte ausfüllen. |
Gar kein Versand, Lauf zeigt blocked_* | blocked_not_armed → Funnel scharf stellen. blocked_sender_not_opted_in → Sender-Opt-in. blocked_opted_out → Empfänger ist abgemeldet. blocked_check_failed → DB/Prüfung nicht erreichbar (fail-safe). |
| Versand stoppt nach X/Tag | daily_cap erreicht → Limit prüfen. |
| Inbound kommt nicht an | Twilio-Webhook falsch/fehlt, oder WA-Nummer keinem Workspace zugeordnet (twilio_whatsapp_number). Diagnose: Tabelle whatsapp_unrouted. |
| Außerhalb 24h keine Freitext-Antwort | Erwartet — window_closed. Vorlagen-Pfad nutzen. |
| Vorlage nicht wählbar | Twilio-Template nicht genehmigt / nicht geladen. |
| Termin wird nicht gebucht | Event-Typ ohne freie Slots oder Host-Google-Kalender nicht verbunden. |
| Drip läuft nicht weiter | Vercel-Cron /api/cron/workflow-tick inaktiv? (jede Minute nötig). |