Webhooks-API
Konfiguriere formularspezifische und globale Webhooks für Echtzeit-Benachrichtigungen über Antworten.
Mit Webhooks erhältst du in Echtzeit HTTP-POST-Benachrichtigungen, wenn Formulare neue Übermittlungen empfangen. NueForm unterstützt zwei Ebenen von Webhooks:
- Formular-Webhooks — Eine einzelne URL pro Formular, die Übermittlungen für dieses spezifische Formular empfängt.
- Globale Webhooks — Bis zu 5 URLs, die Übermittlungen von all deinen Formularen empfangen.
Webhooks erfordern einen Pro-Plan oder höher. Der Versuch, Webhook-Endpunkte in einem kostenlosen Plan zu nutzen, gibt einen 403-Fehler zurück.
Alle Request- und Antwort-Bodys verwenden Feldnamen in snake_case.
Formular-Webhook abrufen
/api/v1/forms/:id/webhooksRuft die für ein bestimmtes Formular konfigurierte Webhook-URL ab.
Pfad-Parameter
idstringerforderlichDie Formular-ID
Ist kein Webhook konfiguriert, ist webhook_url gleich null.
Antwort
{
"webhook_url": "https://example.com/hooks/nueform"
}
Codebeispiele
curl -X GET "https://api.nueform.io/api/v1/forms/665a1b2c3d4e5f6a7b8c9d0e/webhooks" \
-H "Authorization: Bearer YOUR_API_KEY"
Formular-Webhook setzen
/api/v1/forms/:id/webhooksSetzt oder entfernt die Webhook-URL für ein bestimmtes Formular. Bei Eingang einer Übermittlung sendet NueForm einen HTTP POST mit den Antwortdaten an diese URL.
Pfad-Parameter
idstringerforderlichDie Formular-ID
Request-Body
urlstring or nullerforderlichDie Webhook-URL. Muss eine gültige URL sein. Setze null, um den Webhook zu entfernen.
Request-Beispiel
{
"url": "https://example.com/hooks/nueform"
}
So entfernst du einen Webhook:
{
"url": null
}
Antwort
{
"webhook_url": "https://example.com/hooks/nueform"
}
Codebeispiele
curl -X PUT "https://api.nueform.io/api/v1/forms/665a1b2c3d4e5f6a7b8c9d0e/webhooks" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "url": "https://example.com/hooks/nueform" }'
Globale Webhooks auflisten
/api/v1/webhooksRuft alle für dein Konto konfigurierten globalen Webhooks ab. Globale Webhooks feuern bei jeder Formularübermittlung über alle deine Formulare hinweg.
Antwort
{
"webhooks": [
{
"url": "https://example.com/hooks/all-forms",
"enabled": true
},
{
"url": "https://backup.example.com/hooks/nueform",
"enabled": false
}
]
}
Codebeispiele
curl -X GET "https://api.nueform.io/api/v1/webhooks" \
-H "Authorization: Bearer YOUR_API_KEY"
Globale Webhooks setzen
/api/v1/webhooksErsetzt alle globalen Webhooks durch das übergebene Array. Du kannst bis zu 5 globale Webhooks konfigurieren. Jeder Webhook kann einzeln aktiviert oder deaktiviert werden.
Request-Body
webhooksarrayerforderlichArray von Webhook-Objekten (max. 5)
Request-Beispiel
{
"webhooks": [
{
"url": "https://example.com/hooks/all-forms",
"enabled": true
},
{
"url": "https://slack-webhook.example.com/nueform",
"enabled": true
},
{
"url": "https://backup.example.com/hooks/nueform",
"enabled": false
}
]
}
Antwort
{
"webhooks": [
{
"url": "https://example.com/hooks/all-forms",
"enabled": true
},
{
"url": "https://slack-webhook.example.com/nueform",
"enabled": true
},
{
"url": "https://backup.example.com/hooks/nueform",
"enabled": false
}
]
}
Codebeispiele
curl -X PUT "https://api.nueform.io/api/v1/webhooks" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"webhooks": [
{ "url": "https://example.com/hooks/all-forms", "enabled": true },
{ "url": "https://backup.example.com/hooks/nueform", "enabled": false }
]
}'
Webhook-Secret abrufen
/api/v1/webhooks/secretRuft dein Webhook-Signatur-Secret ab. Existiert noch kein Secret, wird automatisch eines generiert. Das Secret ist ein 64-stelliger Hex-String, abgeleitet aus 32 Zufallsbytes.
Verwende dieses Secret, um zu verifizieren, dass eingehende Webhook-Requests wirklich von NueForm stammen, indem du die HMAC-SHA256-Signatur im Header X-NueForm-Signature validierst.
Signaturen verifizieren
Wenn NueForm einen Webhook sendet, enthält er einen X-NueForm-Signature-Header mit einem HMAC-SHA256-Hex-Digest des Request-Bodys. Verifiziere ihn in deinem Webhook-Handler, um die Echtheit sicherzustellen.
Antwort
{
"secret": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2"
}
Beispiele zur Signaturverifizierung
const crypto = require("crypto");
function verifyWebhookSignature(body, signature, secret) {
const expected = crypto
.createHmac("sha256", secret)
.update(body)
.digest("hex");
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expected)
);
}
Codebeispiele
curl -X GET "https://api.nueform.io/api/v1/webhooks/secret" \
-H "Authorization: Bearer YOUR_API_KEY"
Webhook-Secret neu generieren
/api/v1/webhooks/secretGeneriert ein neues Webhook-Signatur-Secret und ersetzt das bestehende. Nach der Neugenerierung werden alle Webhook-Zustellungen mit dem neuen Secret signiert.
Aktualisiere nach der Neugenerierung sofort deine Webhook-Empfänger auf das neue Secret. Requests, die mit dem alten Secret signiert wurden, schlagen bei der Verifizierung fehl.
Antwort
{
"secret": "f0e1d2c3b4a5968778695a4b3c2d1e0f9a8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d"
}
Codebeispiele
curl -X POST "https://api.nueform.io/api/v1/webhooks/secret" \
-H "Authorization: Bearer YOUR_API_KEY"
Webhook-Payload-Format
Wenn ein Formular eine Übermittlung erhält, sendet NueForm einen POST-Request mit folgendem Payload an deine konfigurierten Webhook-URLs.
Das Feld event identifiziert den Ereignistyp, und das response-Objekt enthält die vollständigen Übermittlungsdaten inklusive aller Antworten.
Header
Content-Typeapplication/jsonContent-Type des Request-Bodys
X-NueForm-SignaturestringHMAC-SHA256-Hex-Digest des Request-Bodys
X-NueForm-EventstringEreignistyp (z. B. response.submitted)
Payload-Beispiel
{
"event": "response.submitted",
"form_id": "665a1b2c3d4e5f6a7b8c9d0e",
"form_title": "Customer Feedback Survey",
"response": {
"id": "667a1b2c3d4e5f6a7b8c9d01",
"submitted_at": "2026-02-27T15:42:00.000Z",
"completed_at": "2026-02-27T15:45:30.000Z",
"answers": [
{
"question_id": "66a1b2c3d4e5f6a7b8c9d001",
"question_title": "What is your name?",
"value": "Jane Smith"
}
]
}
}
Fehlerantworten
Standard-Fehlerantworten, die Webhook-Endpunkte zurückgeben.
Fehlercodes
400Bad RequestUngültiges URL-Format, mehr als 5 globale Webhooks oder fehlende Pflichtfelder
401UnauthorizedFehlender oder ungültiger API-Schlüssel
403ForbiddenWebhooks erfordern einen Pro-Plan oder höher
404Not FoundFormular nicht gefunden
500Server ErrorInterner Serverfehler
Fehlerbeispiel
{
"error": "Webhooks require a Pro plan or higher"
}