Integraties
Stuur formulierantwoorden via webhooks
Webhooks zijn de algemene manier van YeetForm om antwoorddata overal naartoe te sturen: je eigen backend, een database-synctaak, of een ander automatiseringsplatform. Voeg een HTTPS-endpoint toe onder het tabblad Integraties van een formulier, en YeetForm stuurt bij elk nieuw antwoord een ondertekende JSON-payload via POST, met een geheim waartegen je kunt verifiëren met HMAC-SHA256. Mislukte leveringen worden automatisch opnieuw geprobeerd. Deze pagina behandelt het exacte handtekeningformaat, de vorm van de payload en het retryschema, zodat je met vertrouwen een ontvanger kunt bouwen.
Instellen
Voeg een endpoint toe
Plak in het tabblad Integraties van het formulier je HTTPS-endpoint-URL bij Webhooks en klik op Webhook toevoegen. YeetForm genereert een ondertekeningsgeheim (whsec_...) voor dat endpoint.
Verifieer de handtekening
Elke levering bevat een X-YeetForm-Signature-header: t=<unix ts>,v1=<hex hmac-sha256 van `${t}.${body}`>. Verifieer deze tegen de ruwe request body voordat je de payload vertrouwt.
import { createHmac, timingSafeEqual } from "crypto";
function verify(secret, signatureHeader, rawBody) {
const [tPart, v1Part] = signatureHeader.split(",");
const timestamp = tPart.split("=")[1];
const signature = v1Part.split("=")[1];
const expected = createHmac("sha256", secret)
.update(`${timestamp}.${rawBody}`)
.digest("hex");
const a = Buffer.from(signature, "hex");
const b = Buffer.from(expected, "hex");
if (a.length !== b.length) return false;
return timingSafeEqual(a, b);
}Lees de payload
POSTs worden getriggerd bij response.created (en webhook.test voor de handmatige testknop), met het formulier-id, antwoord-id, aantal antwoorden en antwoorden gesleuteld op veld-id, plus een fields-array met het label van elk veld.
{
"event": "response.created",
"form_id": "<uuid>",
"form_title": "Customer Feedback",
"response_id": "<uuid>",
"response_count": 42,
"answers": { "fld_x": "..." },
"fields": [{ "id": "fld_x", "label": "Your name", "type": "text" }],
"submitted_at": "2026-09-13T12:00:00.000Z"
}Ga om met retries
Een niet-2xx-respons (of een time-out) triggert een retry: direct, dan na 30 seconden, dan na 5 minuten - 3 pogingen in totaal voordat YeetForm de levering als mislukt markeert. Redirects worden niet gevolgd, richt de URL dus rechtstreeks op je endpoint.
Tips
- →Veldlabels staan in de fields-array van de payload (id, label, type), zodat je veld-id's niet hoeft te hardcoderen downstream.
- →Elk antwoord heeft een stabiele response_id - gebruik die als je idempotentiesleutel, want een herhaalde levering hergebruikt hetzelfde id.
- →Een mislukte levering wordt in totaal maximaal 3 keer opnieuw geprobeerd (direct, 30s, 5 min) voordat hij als mislukt wordt gemarkeerd - een 2xx-respons is vereist om als geslaagd te tellen, en redirects worden niet gevolgd.