What it does
splitforms delivers every submission on your form to n8n the moment it arrives. On the n8n side you build the workflow once — Webhook trigger node as the trigger, any apps you like after it — and splitforms keeps it fed.
The connection is a signed outbound webhook, not an OAuth app: there is nothing to install and no credentials to rotate.n8n hands you a catch URL (https://your-instance.app.n8n.cloud/webhook/abcd-1234), you paste it into splitforms, and every submission is POSTed there as JSON.
Before you start
- A splitforms form. Your form's
access_keyidentifies it in the HTML that posts tohttps://splitforms.com/api/submit— that's what connects a page on your site to the webhook. New accounts get a form and key automatically; find it underDashboard → Forms. - A paid splitforms plan. Forms and the dashboard are free for 200 submissions total; webhooks unlock on paid plans.
- The n8n catch URL.Created in the first setup step below — don't go looking for it in n8n's settings, it only exists once you add the trigger.
Set up n8n
In n8n, create a workflow and add a Webhook node as the trigger. Set HTTP Method to POST.
Use the Production URL (https://<instance>/webhook/<path>) — the Test URL (/webhook-test/<path>) only accepts a single call while the editor is listening. Self-hosted instances must be reachable at a public HTTPS address; splitforms refuses private and loopback targets.
Open Dashboard → Integrations → Webhooks, click Add a webhook, and pick the n8n preset. Paste the n8n URL, choose whether it fires for all forms or one form, and save.
Click Test webhook right in the preset card. The sample execution appears in n8n's Executions list. Open the Webhook node's output — the JSON body carries the submission under body.submission, with your form fields at body.submission.data.
Wire in Set, Notion, Postgres, Slack, or any of n8n's 400+ nodes and reference the submission fields from the webhook output.
Inactive workflows don't listen on the Production URL. Save and activate, and every splitforms submission now triggers a run.
Dashboard → Integrations → Webhooks shows these same steps next to the form where you paste the URL.Payload n8n receives
n8n gets the full submission as JSON — the same body documented in Webhooks:
{
"event": "submission.created",
"submission": {
"id": "3f9a2b7e-4c1d-4e9a-9b2f-7a6c1d3e4f5a",
"form_name": "Contact",
"data": {
"name": "Ada Lovelace",
"email": "[email protected]",
"message": "Hello."
},
"ip_address": "203.0.113.7",
"referer": "https://yoursite.com/contact",
"created_at": "2026-05-04T14:31:04.123Z"
}
}Your form's fields live under submission.data with the exact name attributes from your HTML. Alongside the body, splitforms sends these headers:
| Header | Value |
|---|---|
| Content-Type | application/json |
| X-Splitforms-Event | submission.created |
| X-Splitforms-Signature | sha256=<HMAC-SHA256 of the raw body with the webhook secret> |
| User-Agent | splitforms.com-webhook/1.0 |
Delivery times out after 8 seconds and is not auto-retried — the dashboard shows the last status and error per webhook. Want to inspect a payload by hand? Paste it into the webhook tester.
Troubleshooting
- n8n returns 404 for the webhook. The workflow isn't activated, or you saved the Test URL in splitforms. The Production URL only responds while the workflow is active — switch the URL and toggle the workflow on.
- splitforms can't reach your n8n instance at all. Self-hosted n8n must be on a public HTTPS address. splitforms delivers only to public hosts (private IPs and loopback are refused), so put the instance behind a proper domain with TLS.
- It worked while testing in the editor, but real submissions do nothing. Editor listening uses the Test URL and stops after one call. Save the Production URL in splitforms and activate the workflow.
- You want to verify requests are really from splitforms. Each webhook has a signing secret in the splitforms dashboard. Verify the X-Splitforms-Signature header (HMAC-SHA256 of the raw body) in a Code node before processing.
FAQ
Does this work with n8n cloud and self-hosted n8n?
Both. n8n cloud instances are publicly reachable out of the box; self-hosted instances need a public HTTPS address, since splitforms refuses to deliver to private or loopback targets.
Is there OAuth or an app to install?
No. The integration is a plain signed webhook: you paste n8n's Production URL into splitforms and submissions start flowing. Nothing to install on either side.
Can one workflow handle submissions from several forms?
Yes. A splitforms webhook is account-wide by default (or scoped to one form), and the payload's submission.form_name field tells you which form each submission came from.
Does splitforms retry a delivery if n8n is down?
No — the dashboard records the webhook's last status and error instead. The lead is never lost: every submission is saved to the dashboard and emailed regardless of webhook outcome, so once the workflow recovers you can act on anything missed from the dashboard.
More automation guides
- Send form submissions to Zapier — Webhooks by Zapier → Catch Hook.
- Send form submissions to Make — Webhooks → Custom webhook.
- Browse all integrations — native and webhook destinations.