Webhooks
Webhooks deliver real-time HTTP notifications to your server whenever a form submission event occurs. Formtorch sends a signed POST request to each configured endpoint.
How it works
- A user submits your form
- Formtorch processes the submission (spam check, storage)
- For each active endpoint subscribed to the matching event, Formtorch enqueues a delivery job
- The job sends a
POSTwith the signed payload to your endpoint - Your server returns a
2xxresponse - Formtorch marks the delivery as successful
If your server returns a non-2xx response or times out, the delivery is retried automatically.
Setting up webhooks
Webhook endpoints are workspace-level: one endpoint can receive events from all your forms.
From the dashboard:
- Go to Settings → Webhooks
- Click Add Endpoint
- Enter your endpoint URL (must be
https://) - Select the events to subscribe to:
form.submitted,form.spam, and/orform.test - Save and copy the signing secret (shown once)
Event types
| Event | When it fires |
|---|---|
form.submitted | A real, non-spam submission is received |
form.spam | TorchWarden flags a submission as spam |
form.test | A test submission is sent via the dashboard or _test=true |
See Webhook Events for full payload shapes.
Delivery model
- Each subscribed endpoint receives an independent delivery
- Delivery order is not guaranteed when a form has multiple endpoints
- Paused endpoints do not receive deliveries; queued jobs for a paused endpoint are dropped
Retry schedule
Your endpoint must respond within 30 seconds with a 2xx status.
If it fails, Formtorch retries with exponential backoff for up to 6 total attempts (1 initial + 5 retries). After all attempts are exhausted, the delivery is marked failed and can be retried manually from the delivery log in Settings → Webhooks.
Return 200 OK immediately and process asynchronously if your handler takes
more than a few seconds to complete.
Delivery log and manual retry
The delivery log for each endpoint is visible in Settings → Webhooks. It shows status, HTTP response code, and response time for recent deliveries. Failed deliveries have a Retry button.
Testing
Use the Send Test button on any endpoint to fire a form.test event immediately. This verifies your endpoint and signature verification are working before you go live.
For a complete implementation example including signature verification, see Webhook Processing.