splitforms.com
All articles/ INTEGRATIONS8 MIN READPublished May 2, 2026

How to Connect splitforms to Zapier

Wire any splitforms contact form to Zapier in under five minutes using the Webhooks by Zapier trigger. Parse the splitforms payload, route to Google Sheets, Slack, HubSpot, or Mailchimp — and learn when native splitforms webhooks are the better, cheaper choice.

✶ Written by
splitforms.com / blog

Founder of splitforms — the form backend API for developers. Writes about form UX, anti-spam, and shipping web apps without backend code.

When Zapier is the right tool (and when it isn't)

Zapier is the Swiss Army knife of integrations — 6,000+ pre-built app connectors, a visual builder, and enough non-developers using it that wiring up "form submission to obscure SaaS" is usually a five-minute job. The catch is the bill: a contact form pushing 30 submissions a day on a Starter plan ($19.99/mo) eats most of your task quota by mid-month, and that's before you add a Slack ping and a Google Sheets row to the same Zap (3 tasks per submission).

The honest answer: splitformsships native presets for the destinations 80% of users actually want — email, Slack, Discord, generic webhooks, Google Sheets via a free Apps Script — all with no per-event cost on the free tier. Zapier earns its keep when you need (a) an app splitforms doesn't have a preset for, (b) conditional routing without writing code, or (c) a non-dev on your team to own the integration. This guide covers the wiring for all three cases.

Step 1 — Set up the Webhooks by Zapier trigger

splitforms doesn't need a native Zapier app. The generic "Webhooks by Zapier" trigger receives any HTTPS POST and parses the JSON automatically.

  1. In Zapier, click Create Zap.
  2. Search for and pick Webhooks by Zapier as the trigger app.
  3. Trigger event: Catch Hook (not Catch Raw Hook — Catch Hook gives you parsed JSON fields).
  4. Click Continue. Zapier shows you a custom URL like https://hooks.zapier.com/hooks/catch/12345678/abc123/. Copy it.
  5. Leave the "Pick off a Child Key" field blank. splitforms posts the data at the top level — Zapier maps it directly.

Don't click Test trigger yet. Set up the splitforms side first so you have a real payload to work with.

Step 2 — Add the URL to splitforms

Open your form in the splitforms dashboard, click Webhooks → Add, pick Generic JSON, paste the Zapier URL, and save.

Webhook URL: https://hooks.zapier.com/hooks/catch/12345678/abc123/
Type:        Generic JSON
Events:      submission.created
Retry:       enabled (24h, exponential backoff)

Click Send test event. splitforms fires a sample submission. Now go back to Zapier and click Test trigger — it should pull the test payload in within a few seconds.

From the API:

curl -X POST https://splitforms.com/api/forms/frm_5fK9.../webhooks \
  -H "Authorization: Bearer YOUR_ACCESS_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://hooks.zapier.com/hooks/catch/12345678/abc123/",
    "type": "generic",
    "events": ["submission.created"]
  }'

The splitforms payload Zapier sees

Every webhook from splitforms has the same envelope. Once Zapier has parsed your test event, every key below shows up in the "Pick off a Field" dropdown for downstream steps.

{
  "event": "submission.created",
  "submission_id": "sub_2A4f9KqL",
  "form_id":       "frm_5fK9qZ8",
  "submitted_at":  "2026-05-02T12:00:00.000Z",
  "spam_score":    0.04,
  "ip":            "203.0.113.42",
  "user_agent":    "Mozilla/5.0 ...",
  "referrer":      "https://example.com/contact",
  "fields": {
    "name":    "Ada Lovelace",
    "email":   "ada@example.com",
    "subject": "Demo request",
    "message": "Hi — I'd like a 15-min call.",
    "company": "Lovelace Industries"
  },
  "files": [
    { "field": "resume", "url": "https://splitforms-cdn.com/u/abc.pdf", "size": 184320 }
  ]
}

In Zapier's field mapper this shows up as Fields Name, Fields Email, Spam Score, etc. Custom fields are picked up automatically — every key under fields becomes a draggable variable.

Common downstream actions

The whole point of routing through Zapier is the action library. The five most common splitforms-to-X flows:

  • Google Sheets — Create Spreadsheet Row. Map Fields Name → Name column, Fields Email → Email column, Submitted At → Timestamp. Native splitforms also supports this via the Sheets preset, but Zapier wins if you want to write to a sheet someone else owns or that's in a different Google account.
  • Slack — Send Channel Message. Format a Block Kit message in the Slack action. Native splitforms ships a Slack preset that does this in 250ms; Zapier's flavor takes 5-15 seconds. Use Zapier when you want conditional pings (only @here for high-priority forms).
  • HubSpot — Create or Update Contact. Map email → email, name → first/last name, company → company. Zapier handles the dedupe automatically (HubSpot upserts by email). For raw forwarding without dedupe, the native HubSpot proxy is faster and free.
  • Mailchimp — Add/Update Subscriber. Hook a newsletter signup form to your audience list. Add a Filter step before this to skip submissions where fields.subscribe is false.
  • Salesforce — Create Lead. The Zapier Salesforce action handles OAuth + custom fields without you touching any auth code. This is genuinely the cheapest path if Salesforce is the destination — direct Salesforce API integration is significantly more work.

Filters, formatters, and paths

The reason Zapier is worth a paid plan, if it's worth one at all, is the middleware between trigger and action.

Filter by Zapier. Skip the rest of the Zap unless a condition is met. Useful for:

Only continue if:
  Spam Score             (Number) Less than       0.3
  Fields Subject         (Text)   Does not contain  "spam"
  Fields Email           (Text)   Ends with         "@trusted-partner.com"

Formatter by Zapier. Reshape data before passing it on — title-case names, parse dates into a different format, lookup-table-replace the value of a field, regex-extract a phone number from a free-text field. The Text → Split / Truncate / Default Value transforms cover 90% of real cases.

Paths.Branch the Zap based on a field. Enterprise leads (company size > 100) go to Salesforce + Slack; freelance leads go to a simple Google Sheet. Each path counts independently against your task quota, so this gets expensive fast — but it's the cleanest way to do conditional fan-out without code.

For complex routing (more than two paths, or anything involving math), this is the threshold where rolling a Cloudflare Worker becomes cheaper than Zapier. The same routing logic in code is 30 lines and free; in Zapier it's 4 paths × 3 actions × 30 submissions/day × 30 days = 10,800 tasks/mo, well into the Professional plan ($49/mo).

The cost question: native webhooks vs Zapier

The honest comparison for a typical contact form (~30 submissions/day, two destinations like Slack + Google Sheets):

splitforms native webhooks
  Slack preset:           free
  Google Sheets via       free (Apps Script)
  Total:                  $0/mo
  Latency per submission: ~250ms

Zapier (Starter, $19.99/mo)
  30 submissions × 3 tasks/day × 30 days = 2,700 tasks/mo
  Starter cap: 750 tasks/mo
  → Forced upgrade to Professional ($49/mo)
  Latency per submission: 5-30s

The math gets worse at higher volume. The math gets better when you genuinely need an app outside the splitforms preset list, or when the time you'd spend building a proxy is worth more than the Zapier subscription.

The recommended pattern: use splitforms native webhooks for everything you can, and use Zapier for the long-tail destinations (Salesforce, niche CRMs, Pipedrive, Trello, Asana). Pair this with the rest of your contact form stack, and grab a starter form from the templates if you need one. The full webhook spec including HMAC signing and retry policy is in the splitforms docs.

Tech support / troubleshooting

  • Zapier "Test trigger" never finds an event. You picked Catch Raw Hook instead of Catch Hook, or you copied the URL incorrectly. Re-create the trigger and verify the URL ends with a trailing slash.
  • Custom fields are missing in the field mapper. The test event did not include them. Submit a real test entry that fills every field, then re-pull the trigger sample in Zapier.
  • Tasks are burning faster than expected. Each multi-step Zap action counts as one task. A single submission going to Slack + Sheets + HubSpot is 3 tasks. Consolidate to native splitforms webhooks for the apps that have presets.
  • Zapier returns 5xx and the Zap is paused. splitforms retries with exponential backoff for 24 hours and reuses the X-Splitforms-Delivery ID so Zapier can dedupe. Reactivate the Zap in Zapier and the queued events flow through.
  • Spam keeps reaching Zapier. Add a Filter step at the top of the Zap: Spam Score < 0.3. The classifier already runs in splitforms, so the score is always present.

Next steps and where to get help

FAQ

Does splitforms have a native Zapier integration in the Zapier app directory?

Not yet — splitforms is new and a public Zapier integration takes weeks to clear Zapier's review queue. The Webhooks by Zapier trigger covers every use case the native integration would, with one extra step (paste the webhook URL into splitforms). Once you've set it up the experience is identical from the user side.

How much does Zapier cost for a contact form?

Zapier's free plan supports up to 100 tasks per month and only single-step Zaps. The first paid tier is Starter at $19.99/mo for 750 tasks and multi-step Zaps. If your contact form gets more than ~3 submissions per day or you need filters / fan-out, you're on a paid plan. splitforms native webhooks are free with no per-event cost.

Why would I use Zapier instead of splitforms native webhooks?

Use Zapier when the destination is a niche app splitforms doesn't have a preset for, when you need conditional logic (filter by spam_score > 0.5, route by form field), when you need data transformation (formatter steps), or when a non-developer on your team owns the wiring. Use native webhooks for any high-volume, latency-sensitive, or cost-sensitive forwarding.

How quickly does Zapier process a submission?

On the free and Starter plans, Zaps run on a 1-2 minute polling-or-instant cycle. Webhooks by Zapier triggers are 'instant' — typically delivered in 5-15 seconds. Native splitforms webhooks deliver in under 250ms. If you need a Slack alert for a hot lead, the difference matters.

What does the splitforms webhook payload look like in Zapier?

After you wire up the trigger and send a test event, Zapier displays the full JSON tree as named fields you can drag into the next step. The keys you'll use most are 'fields.<your_field_name>' (every form field is a top-level key under 'fields'), 'submitted_at' (ISO 8601), 'submission_id', 'form_id', and 'spam_score' (0.0 to 1.0). Custom fields appear automatically — Zapier picks them up from the test payload.

Can I send the same submission to multiple apps through one Zap?

Yes — multi-step Zaps (Starter and up) chain actions. Submission → Slack message → Google Sheets row → HubSpot contact, all in one Zap. You can also fan out by adding a Path step that branches based on a field value (e.g., enterprise leads go to Salesforce, freelance leads go to a simple sheet). Each step counts as one task against your monthly quota.

How do I test a Zap without actually submitting my live form?

Two options. (1) In splitforms, every form has a 'Send test event' button that fires a synthetic submission with sample data — Zapier picks it up the same as a real one. (2) Use a tool like httpie or curl to POST to the Zapier webhook URL directly with a payload shape that matches splitforms. Option 1 is faster because it exercises the whole pipeline including spam scoring.

What's the cleanest way to dedupe duplicate submissions in Zapier?

Add a Filter step right after the Webhook trigger: 'Only continue if spam_score is less than 0.3'. For literal duplicates (someone double-clicking submit), splitforms already deduplicates on the server side using a 30-second submission_id window — you'll only ever get one webhook per real submission, so Zapier doesn't need to handle this case.

About the author
✻ ✻ ✻

Get your free contact form API key in 60 seconds.

1,000 free form submissions per month. No credit card. No SDK, no PHP, no plugin. Drop one POST endpoint in your form and submissions land in your inbox.

Generate access key →Read the docs
v0.1 · founders pricing locked in · early access open