WhatsApp-bevestiging versturen na een Typeform-inzending
Typeform wordt vaak gebruikt voor intakeformulieren, inschrijvingen of aanvraagformulieren omdat het prettig invult op mobiel. Het nadeel: zonder extra tooling merk je een nieuwe inzending pas op wanneer je toevallig het dashboard opent. Typeform heeft, in tegenstelling tot Google Forms, wél een ingebouwde webhook — je hebt dus geen Apps Script of tussenlaag nodig om meteen een WhatsApp-bericht te sturen zodra iemand op "verzenden" klikt.
Dit artikel toont hoe je die native webhook rechtstreeks koppelt aan de textmeflow API met een klein PHP-endpoint.
Hoe het werkt
Typeform kan bij elke inzending een POST-request sturen naar een URL die jij opgeeft, met de volledige antwoorden als JSON-payload. Dat endpoint hoeft niets ingewikkelds te doen: het leest de relevante velden uit de payload en roept de textmeflow API aan om het WhatsApp-bericht te versturen.
Twee onderdelen dus:
- De webhook-instelling in je Typeform-formulier
- Een PHP-script dat de payload ontvangt en doorstuurt naar textmeflow
Stap 1: webhook toevoegen in Typeform
Ga in de Typeform-editor naar Connect → Webhooks → Add a webhook en vul de URL van je eigen endpoint in (bijvoorbeeld https://jouwdomein.be/typeform-hook.php). Typeform ondertekent elke request met een HMAC-SHA256-signature in de header Typeform-Signature, berekend met een secret dat je zelf instelt bij het aanmaken van de webhook. Bewaar dat secret — je hebt het nodig om te verifiëren dat een binnenkomende request écht van Typeform komt en niet vervalst is.
Stap 2: het PHP-endpoint
<?php
$secret = "JOUW_TYPEFORM_WEBHOOK_SECRET";
$body = file_get_contents("php://input");
$signature = "sha256=" . base64_encode(hash_hmac("sha256", $body, $secret, true));
if (!hash_equals($signature, $_SERVER["HTTP_TYPEFORM_SIGNATURE"] ?? "")) {
http_response_code(401);
exit("invalid signature");
}
$payload = json_decode($body, true);
$answers = $payload["form_response"]["answers"] ?? [];
$naam = "onbekend";
$telefoon = null;
foreach ($answers as $antwoord) {
if ($antwoord["field"]["ref"] === "naam") {
$naam = $antwoord["text"] ?? $naam;
}
if ($antwoord["field"]["ref"] === "telefoon") {
$telefoon = $antwoord["phone_number"] ?? null;
}
}
$tekst = "Bedankt voor je inzending, {$naam}! We nemen snel contact op.";
$ch = curl_init("https://textmeflow.eu/api/messages");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Authorization: Bearer JOUW_API_KEY",
],
CURLOPT_POSTFIELDS => json_encode([
"to" => $telefoon,
"message" => $tekst,
]),
]);
curl_exec($ch);
curl_close($ch);
http_response_code(200);
De ref-waarden ("naam", "telefoon") moet je aanpassen naar de veld-ID's uit jouw eigen formulier — die stel je zelf in per vraag onder Field settings → Ref. Het volledige overzicht van parameters en endpoints van de textmeflow API staat in /docs/api; hoe je binnenkomende webhook-signatures algemener verifieert (ook voor textmeflow's eigen uitgaande webhooks) lees je in /blog/verify-whatsapp-webhook-signatures.
Alleen bevestigen als er toestemming is
Stuur alleen een WhatsApp-bericht naar het telefoonnummer uit het formulier als de invuller daar expliciet mee instemde — bijvoorbeeld via een checkbox-vraag ("Ik geef toestemming om via WhatsApp gecontacteerd te worden"). Zonder die toestemming verstuur je in principe ongevraagde berichten, wat op termijn ook je verzendreputatie schaadt.
Aandachtspunten
- Telefoonnummer-formaat: Typeform's
phone_number-vraagtype levert doorgaans al een internationaal formaat, maar controleer dit voor je gaat versturen — de textmeflow API verwacht een geldig E.164-nummer zonder voorloop-+of00. - Rate limits: bij een piek in inzendingen (bv. na een marketingcampagne) kan je tegen de standaard rate limits van je plan aanlopen. De exacte limieten per plan en de foutresponses staan in /docs/rate-limits.
- Foutafhandeling: controleer de HTTP-statuscode van de
curl-call. Bij een4xx- of5xx-response van textmeflow log je die best, zodat een mislukte send niet stilletjes verloren gaat. - Geen eigen server? Zonder PHP-hosting kan je dezelfde flow ook zonder code bouwen via een automatiseringstool — zie /docs/integrations voor de n8n/Make/Zapier-aanpak.
Conclusie
Omdat Typeform native webhooks aanbiedt, is de kortste weg naar een automatische WhatsApp-bevestiging een klein, stateloos endpoint dat de payload doorvertaalt naar een API-call — geen extra abonnement of tussenlaag nodig. Voor complexere flows met meerdere vervolgstappen (CRM-update, Slack-melding, taak aanmaken) grijp je best naar een automatiseringstool.
Nog geen account? Je kan gratis starten met 50 berichten per maand, voor altijd — geen creditcard nodig. Maak een gratis account aan.
Zelf WhatsApp-berichten versturen via API?
Gratis voor altijd tot 50 berichten/maand. QR scannen en binnen 5 minuten verstuur je je eerste bericht.
Gratis voor altijd