What it does
splitforms delivers every submission on your form to Zapier the moment it arrives. On the Zapier side you build the workflow once — Webhooks by Zapier → Catch Hook 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.Zapier hands you a catch URL (https://hooks.zapier.com/hooks/catch/1234567/abcd123/), 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 500 submissions/month; webhooks unlock on paid plans.
- The Zapier catch URL.Created in the first setup step below — don't go looking for it in Zapier's settings, it only exists once you add the trigger.
Set up Zapier
In Zapier, make a new Zap and choose Webhooks by Zapier as the trigger app. Pick the Catch Hook trigger event.
Continue past the “Pick off a Child Key” screen (leave it empty) and copy the Custom Webhook URL Zapier generates. It looks like https://hooks.zapier.com/hooks/catch/1234567/abcd123/.
Open Dashboard → Integrations → Webhooks, click Add a webhook, and pick the Zapier preset. Paste the Zapier URL, choose whether it fires for all forms or one form, and save.
Click Test webhook right in the preset card. In the Zap editor, open the trigger's Test tab and pull in recent requests — the sample submission appears with every field under submission.data, which Zapier flattens for mapping.
Pick any app — Google Sheets, HubSpot, Mailchimp, Slack — and map fields from the Catch Hook payload into it.
From here on, every splitforms submission triggers the Zap. Zapier's free and Starter plans poll every few minutes, so delivery is near-real-time rather than instant.
Dashboard → Integrations → Webhooks shows these same steps next to the form where you paste the URL.Payload Zapier receives
Zapier 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
- Zapier's trigger test says “We couldn't find any requests”. Fire the splitforms Test webhook again while the Zapier test pane is open, and confirm the trigger is Webhooks by Zapier → Catch Hook — Retrieve Poll expects splitforms to answer a GET, which isn't supported.
- The test delivered (HTTP 200) but the Zap never runs. The Zap is off, or the trigger test was never completed — Zapier won't run a Zap whose trigger has no sample. Re-run the trigger test, finish the action mapping, and turn the Zap on.
- Fields are missing when mapping the action step. Form fields live under submission.data.<field name>; event and submission are the only top-level keys. If a field is absent, submit the form once with that field filled so Zapier sees it.
- splitforms reports a 4xx from the hook URL. The URL was copied incompletely or with a trailing space. Re-copy the full https://hooks.zapier.com/hooks/catch/… URL and save again.
FAQ
Do I need a paid Zapier plan?
Zapier's free plan covers 100 tasks/month with single-step Zaps; multi-step Zaps need their Starter plan. On the splitforms side, webhooks are a paid-plan feature — the form itself stays free for 500 submissions per month.
Can Zapier verify the webhook signature?
Not natively — the Catch Hook trigger accepts the POST as-is. If you need verification, add a Code by Zapier step that recomputes the HMAC-SHA256 of the raw body with your webhook secret and compares it to the X-Splitforms-Signature header. Most teams simply keep the catch URL private, since the URL itself acts as the shared secret.
How fast does a Zap fire after a submission?
Zapier polls its trigger queues every few minutes on free and Starter plans and about every minute on Professional. For sub-minute delivery, use a native splitforms integration (Slack, Discord) or Make, whose webhooks fire immediately.
Can one form feed several Zaps?
Yes. splitforms supports multiple webhooks per account, so register each Zap's catch URL as its own webhook — they fire independently and one failing doesn't block the others.
More automation guides
- Send form submissions to Make — Webhooks → Custom webhook.
- Send form submissions to n8n — Webhook trigger node.
- Browse all integrations — native and webhook destinations.