WAHA + n8n: WhatsApp integratie
Installatienotitie voor uitrol bij klant (Sarana). Gebaseerd op eigen setup thuis (juni 2026).
Overzicht
WAHA (WhatsApp HTTP API) draait een WhatsApp Web sessie in een Docker container en stelt die bloot als REST API. n8n praat ermee via de WAHA community node. Gratis Core versie: 1 sessie (naam moet exact default zijn), tekst sturen/ontvangen. Media versturen vereist WAHA Plus (betalend).
Vereisten
- Docker host met n8n al draaiend (WAHA kan gewoon op dezelfde server, geen apart IP nodig)
- Apart WhatsApp nummer voor de bot (prepaid SIM, eSIM of VoIP nummer). GEEN persoonlijk nummer van de klant gebruiken: onofficiele API, banrisico bij hoog volume.
- Telefoon met dat nummer moet af en toe online komen (zelfde regel als WhatsApp Web)
Stap 1: WAHA container
Eenvoudigste opzet: WAHA in dezelfde stack (of op hetzelfde Docker netwerk) als n8n.
services:
waha:
image: devlikeapro/waha:latest
container_name: waha
restart: always
environment:
- WHATSAPP_API_KEY=<openssl rand -hex 32>
- WAHA_DASHBOARD_USERNAME=beheerder
- WAHA_DASHBOARD_PASSWORD=<sterk wachtwoord>
- WAHA_LOG_LEVEL=info
- TZ=Europe/Brussels
volumes:
- /srv/waha:/app/data
ports:
- "3000:3000"
Bereikbaarheid:
- n8n naar WAHA:
http://waha:3000(zelfde compose netwerk) ofhttp://<server-ip>:3000 - WAHA webhook naar n8n:
http://n8n:5678/webhook/...of via host-IP - De
portsmapping dient enkel om zelf aan het dashboard te kunnen; container-naar-container verkeer heeft die niet nodig
Aandachtspunten:
- API key: enkel hex, geen speciale tekens (openssl rand -hex 32)
- Volume bewaart de sessie, dus geen QR scan na restart
- Eerste pull duurt enkele minuten (image bevat Chromium, 1 a 2 GB)
- Macvlan met eigen IP (zoals thuis) kan ook, maar is niet nodig; let dan op de klassieke beperking dat de host de container niet rechtstreeks bereikt
Stap 2: WhatsApp koppelen
- Dashboard openen:
http://<server-ip>:3000/dashboard, inloggen - Rechtsboven kan "No connected server" verschijnen: bij Workers op Connect klikken en de API key invullen
- Sessions > Start New, naam exact
default(Core laat geen andere naam toe, de auto gegenereerde naam vervangen!) - QR scannen met telefoon bot-nummer: WhatsApp > Instellingen > Gekoppelde apparaten > Apparaat koppelen
- Status moet naar WORKING gaan
Test via curl:
curl -X POST http://<server-ip>:3000/api/sendText \
-H "X-Api-Key: <api_key>" \
-H "Content-Type: application/json" \
-d '{"session":"default","chatId":"324XXXXXXXX@c.us","text":"Test"}'
ChatId formaat: landcode zonder + en zonder leidende 0, gevolgd door @c.us. Groepen: <groepsid>@g.us (op te vragen via GET /api/default/groups, bot moet lid zijn).
Let op: sturen naar het eigen bot-nummer = "Message yourself" chat, geen notificatiegeluid. Normaal gedrag.
Stap 3: n8n koppelen
- n8n > Settings > Community nodes > installeer
@devlikeapro/n8n-nodes-waha - Credentials aanmaken: type WAHA API, URL
http://waha:3000(of host-IP), API key invullen - Versturen: WAHA node, resource Chatting, operation Send Text (session
default, chatId, text) - Ontvangen: WAHA Trigger node toevoegen. De webhook URL die n8n toont in de sessieconfig zetten: WAHA dashboard > sessie bewerken > webhook toevoegen, event
message
Testtip: stuur 1 echt bericht naar de bot, pin de trigger output in n8n, en bouw daarop verder zonder telkens berichten te sturen.
Stap 4: klant workflow (te bouwen)
Koppeling op bestaande n8n + Baserow ticketing:
- WAHA Trigger: inkomend WhatsApp bericht van klant
- Filter:
fromMe= false (anders loop met eigen antwoorden!) - Klant opzoeken/aanmaken in Baserow op basis van telefoonnummer
- Ticket aanmaken in Baserow (bestaande tabel/flow hergebruiken)
- WAHA Send Text: bevestiging terug met ticketnummer, met Reply To = message ID van het inkomende bericht
- Bestaande email notificatie flow blijft parallel werken
Productie aandachtspunten
- Rate limiting: vers nummer ruim onder 20 berichten/minuut houden, Wait node tussen sends
- Reactieve bot = ok, mass marketing/broadcast = niet doen (banrisico)
- Loop preventie: altijd filteren op
fromMe= false in trigger workflows - Monitoring: Uptime Kuma check op
GET /api/sessions(status WORKING), sessie kan sporadisch breken na WhatsApp updates aan hun kant, dan eenmalig opnieuw scannen - API nooit blootstellen op internet zonder reverse proxy + API key
Referenties
- WAHA docs: https://waha.devlike.pro
- n8n + WAHA guide: https://waha.devlike.pro/blog/waha-n8n/
- Workflow templates: https://waha-n8n-workflows.devlike.pro