Form webhooks — real-time POST to any URL on every submission
Pipe submissions into your CRM, Slack bot, Postgres, or homemade Lambda — anywhere that speaks HTTP. Signed payloads, automatic retries, full inspection log.
Webhooks
- ✓Sub-second delivery — POST hits your endpoint within ~1 second of submit
- ✓HMAC-SHA256 signed requests — verify the payload came from splitforms in constant time
- ✓Automatic exponential-backoff retries (30s → 2m → 10m → 1h → 6h → daily) for 24 hours
Webhooks in splitforms, shipped to production.
Pipe submissions into your CRM, Slack bot, Postgres, or homemade Lambda — anywhere that speaks HTTP. Signed payloads, automatic retries, full inspection log.
splitforms turns every form submission into a signed HTTP POST that lands at any URL you choose, within roughly one second of the user clicking Submit. Add a webhook in the dashboard, and from then on your endpoint receives a JSON payload containing form_id, submission_id, an ISO-8601 created_at timestamp, the form fields under data, any uploaded files under files (as signed download URLs with size and MIME), and request metadata under meta (ip, country, user_agent, referer). Each request includes an X-Splitforms-Signature header — an HMAC-SHA256 of the raw request body, signed with the per-webhook secret in your dashboard — so your endpoint can verify it really came from splitforms rather than a stranger guessing your URL. If your endpoint is down, slow (timeout is 10 seconds), or returns a non-2xx response, splitforms retries with exponential backoff: 30 seconds, then 2 minutes, 10 minutes, 1 hour, 6 hours, then daily for up to 24 hours. Every attempt — successful or failed — appears in the delivery log with the full response body, status code, and latency, and any past submission can be manually replayed against your endpoint with one click. Fan out to as many webhooks per form as you need (one for your CRM, one for Slack, one for an internal Postgres, one for a Lambda), each with its own signing secret and independent retry queue. No polling, no cron, no missed leads.
webhooks.ts · live preview
Three steps. From zero to a working production setup.
How webhooks actually flows through splitforms — what you do, what we do, and what lands in your inbox.
Add a webhook URL in the dashboard
Open Form → Integrations → Webhooks → New webhook. Paste any HTTPS URL (HTTP works in development with a localhost tunnel like ngrok). Each webhook gets its own signing secret displayed once on creation — copy it into your env file as SPLITFORMS_WEBHOOK_SECRET.
Receive a signed JSON payload on every submission
Within ~1 second of submission, splitforms POSTs Content-Type: application/json to your URL with the form data, submission_id, created_at, file URLs, and metadata. The X-Splitforms-Signature header is a hex HMAC-SHA256 of the raw request body. Verify with constant-time comparison BEFORE parsing, then return any 2xx within 10 seconds.
Inspect, retry, and replay from the delivery log
Every attempt is logged with status code, response body, latency, and retry attempt number. Failed deliveries auto-retry six times over 24 hours with exponential backoff. You can manually replay any submission against any webhook from the dashboard — useful for backfilling after fixing a downstream bug.
Why teams pick splitforms for webhooks.
Five reasons this is the boring, reliable choice — every one shipped by default on every plan, including free.
Sub-second delivery — POST hits your endpoint within ~1 second of submit
HMAC-SHA256 signed requests — verify the payload came from splitforms in constant time
Automatic exponential-backoff retries (30s → 2m → 10m → 1h → 6h → daily) for 24 hours
Full delivery log — replay or debug any failed webhook by hand at any time
Multiple webhooks per form — fan out to CRM, Slack, Postgres, and Lambda in parallel
10-second timeout with X-Splitforms-Delivery idempotency header — safe to retry processing on your side
Drop this into any project.
Replace YOUR_ACCESS_KEY with the key from your splitforms dashboard. No SDK install. No package to npm i. The same ts you already know.
Things developers ask before they integrate.
Direct answers, no marketing fluff. Missing one? Email hello@splitforms.com.
Start using webhooks today.
Create your form, grab your access key, and ship it in five minutes. Free for 1,000 submissions per month, forever.
