Webhook
Send submission data to any URL via HTTP POST.
The Webhook integration sends an HTTP POST request to any URL you control on every new submission.
Required fields
| Field | Required | Description |
|---|---|---|
| Endpoint URL | Yes | The URL that will receive the POST request. |
| Secret | No | Sent as the X-NBForms-Secret header so your server can verify the request origin. |
Setup
- Set up an endpoint on your server (or use a service like webhook.site for testing).
- Open your form → Integrations → Add next to Webhook.
- Paste your endpoint URL.
- Optionally add a secret string.
- Save.
Request format
NBForms sends a POST request with Content-Type: application/json.
{
"formId": 42,
"formName": "Contact",
"submittedAt": "2025-06-14T10:23:00.000Z",
"data": {
"name": "Sarah Chen",
"email": "[email protected]",
"message": "Hello!"
}
}File uploads are not included in the JSON body.
Verifying the secret
If you set a secret, check the X-NBForms-Secret header in your handler and reject requests where it does not match:
// Node.js / Express example
app.post('/webhook', (req, res) => {
if (req.headers['x-nbforms-secret'] !== process.env.NBFORMS_SECRET) {
return res.status(401).end()
}
// process req.body ...
res.status(200).end()
})Response expectations
Your endpoint should return a 2xx status code within 10 seconds. If it returns a non-2xx status or times out, the worker will retry with exponential back-off.