· 2 min · TextMeFlow Team

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:

  1. De webhook-instelling in je Typeform-formulier
  2. 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-+ of 00.
  • 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 een 4xx- of 5xx-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