Integrationen

Formularantworten per Webhook senden

Webhooks sind YeetForms universeller Weg, Antwortdaten irgendwohin zu senden: an ein eigenes Backend, einen Datenbank-Sync-Job oder eine andere Automatisierungsplattform. Fügen Sie im Tab Integrationen eines Formulars einen HTTPS-Endpunkt hinzu, und YeetForm sendet bei jeder neuen Antwort einen signierten JSON-Payload per POST, mit einem Secret, gegen das Sie per HMAC-SHA256 prüfen können. Fehlgeschlagene Zustellungen werden automatisch wiederholt. Diese Seite erklärt das genaue Signaturformat, die Payload-Struktur und den Wiederholungsplan, damit Sie einen Empfänger mit Zuversicht bauen können.

Einrichtung

1

Endpunkt hinzufügen

Fügen Sie im Tab Integrationen des Formulars unter Webhooks die URL Ihres HTTPS-Endpunkts ein und klicken Sie auf Webhook hinzufügen. YeetForm generiert für diesen Endpunkt ein Signatur-Secret (whsec_...).

2

Signatur prüfen

Jede Zustellung trägt den Header X-YeetForm-Signature: t=<Unix-Zeitstempel>,v1=<Hex-HMAC-SHA256 von `${t}.${body}`>. Prüfen Sie ihn gegen den rohen Request-Body, bevor Sie dem Payload vertrauen.

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);
}
3

Payload lesen

POSTs feuern bei response.created (und webhook.test über den manuellen Testbutton), mit Formular-ID, Antwort-ID, Antwortanzahl und Antworten, die nach Feld-ID indexiert sind, plus einem fields-Array mit der Bezeichnung jedes Feldes.

{
  "event": "response.created",
  "form_id": "<uuid>",
  "form_title": "Customer Feedback",
  "response_id": "<uuid>",
  "response_count": 42,
  "answers": { "fld_x": "..." },
  "submitted_at": "2026-09-13T12:00:00.000Z"
}
4

Wiederholungen behandeln

Eine Antwort ohne 2xx (oder ein Timeout) löst eine Wiederholung aus: sofort, dann nach 30 Sekunden, dann nach 5 Minuten - insgesamt 3 Versuche, bevor YeetForm die Zustellung als fehlgeschlagen markiert. Weiterleitungen werden nicht verfolgt, richten Sie die URL also direkt auf Ihren Endpunkt.

Tipps

  • Feldbezeichnungen stehen im fields-Array des Payloads (id, label, type), sodass Sie Feld-IDs nicht fest im Downstream-System verdrahten müssen.
  • Jede Antwort trägt eine stabile response_id - nutzen Sie sie als Idempotenzschlüssel, da eine wiederholte Zustellung dieselbe ID verwendet.
  • Eine fehlgeschlagene Zustellung wird insgesamt 3 Mal wiederholt (sofort, 30 s, 5 min), bevor sie als fehlgeschlagen markiert wird - für Erfolg ist eine 2xx-Antwort nötig, Weiterleitungen werden nicht verfolgt.

Erstellen Sie Ihr Formular in Sekunden per KI

Kostenlos starten

FAQ

Was löst einen Webhook aus?+
response.created feuert bei jeder neuen Antwort; webhook.test feuert, wenn Sie den Testbutton der Integration klicken, sodass Sie Ihren Endpunkt vor dem Livegang prüfen können.
Woher weiß ich, dass eine Anfrage wirklich von YeetForm kommt?+
Prüfen Sie den Header X-YeetForm-Signature gegen Ihr Endpunkt-Secret per HMAC-SHA256 über `${Zeitstempel}.${roher_Body}` - siehe das Prüf-Snippet oben.
Was passiert, wenn mein Endpunkt down ist?+
YeetForm versucht es insgesamt 3 Mal: sofort, nach 30 Sekunden, dann nach 5 Minuten. Scheitern alle drei, wird die Zustellung als fehlgeschlagen markiert und nicht weiter wiederholt.
Kann ich eigene Header hinzufügen?+
Ja, beim Konfigurieren des Webhooks können Sie eigene Header setzen - sie werden eingemischt, aber YeetForms eigene Content-Type- und X-YeetForm-*-Header gewinnen bei einem Konflikt immer.