Hoe webhooks werken
Stel één keer een webhook-URL in via de API of het dashboard. Daarna verloopt alles automatisch.
Klant stuurt een bericht
Een klant stuurt een WhatsApp-bericht (tekst, foto, document of locatie) naar jouw nummer.
Gateway verwerkt het bericht
De gateway ontvangt het bericht, converteert het naar een gestandaardiseerde JSON-structuur en bepaalt het type.
HTTP POST naar jouw URL
Binnen < 1 seconde stuurt de gateway een HTTP POST naar jouw geconfigureerde webhook-URL met de volledige payload.
Jouw systeem reageert
Retourneer HTTP 200 om ontvangst te bevestigen. De gateway herprobeert automatisch bij een fout of timeout.
JSON-structuur inkomend bericht
{
"event": "message",
"from": "31612345678",
"name": "Jan de Vries",
"body": "Ik wil een afspraak maken voor volgende week",
"type": "text",
"timestamp": "2026-06-20T14:30:00Z",
"media_url": null,
"gateway_id": "gw_7f2a9c"
}
<?php // Verifieer webhook-handtekening $secret = 'jouw-webhook-secret'; $header = $_SERVER['HTTP_X_WA_SECRET'] ?? ''; if (!hash_equals($secret, $header)) { http_response_code(401); exit; } // Verwerk inkomend bericht $data = json_decode(file_get_contents('php://input'), true); if ($data['event'] === 'message') { $from = $data['from']; $tekst = $data['body']; // Sla op, stuur antwoord, trigger workflow... slaOpInDB($from, $tekst); } http_response_code(200);
curl -X POST https://gateway.itlive.nl/gw/TOKEN/api/webhook \ -H "Content-Type: application/json" \ -d '{ "url": "https://jouwserver.nl/webhook.php", "secret": "jouw-webhook-secret", "events": ["message", "status", "media"] }' # Response { "ok": true, "webhook_id": "wh_8c3f1a", "status": "active" }
Real-time levering
Bericht afgeleverd binnen < 1 seconde na ontvangst. Geen polling of langdurige verbindingen nodig.
Alle berichttypen
Tekst, afbeeldingen, video, audio, documenten en locaties — allemaal via dezelfde webhook-URL.
Handtekeningverificatie
Verifieer dat de POST echt van WA Gateway afkomt via de X-WA-Secret header.
Media via URL
Ontvangen mediabestanden zijn direct beschikbaar via een tijdelijke download-URL in de payload.