Webhooks · Last updated April 23, 2026
Destinations & presets
Each webhook picks a preset that fills in sensible defaults for the destination — method, content type, body shape, and auth. You can always fall back to the fully-flexible Generic JSON or Custom template presets if none of the named ones match.
Chat & messaging
These destinations want a message-shaped payload. SaveForm ships ready-to-use templates for each so you do not have to hand-write Block Kit or embed JSON.
Slack (Incoming Webhook)
Posts a Block Kit message to a channel. Grab an Incoming Webhook URL from your Slack workspace apps and paste it in. The secret is the URL itself — no auth header needed. Slack docs.
Slack Workflow Webhook
Triggers a Slack Workflow Builder workflow with flat JSON variables (title, message, form name, etc.), then composes the final message inside Slack. Nested objects like blocks are not supported here.
Discord
Sends a rich embed to a Discord channel via the channel's webhook URL (Integrations → Webhooks in your channel settings).
Automation platforms
These expect the raw submission so every field is available as an input to your Zap, scenario, or workflow. The preset defaults to raw payload mode.
Zapier
Triggers a Zap via the “Webhooks by Zapier” Catch Hook trigger. Create the Zap first so Zapier gives you a Catch Hook URL, then paste it.
n8n
Triggers a workflow via the Webhook node's production URL. Activate the workflow so the production URL becomes available, then paste it here.
Custom endpoints
Generic JSON endpoint
Pick this for your own backend, a CRM, or an Airtable proxy. SaveForm sends the raw submission envelope as application/json. Add auth if your endpoint needs it.
Custom JSON template
Build a fully custom JSON body using {{fieldName}} placeholders. Pick this when none of the named presets match your destination — the preview pane shows exactly what will be sent.
Preset constraints
Some destinations reject anything that does not match their expected shape. The editor locks those fields so you do not shoot yourself in the foot — for example, a Slack Incoming Webhook always needs POST + application/json + template mode.
| Preset | Locked for you |
|---|---|
| Slack | POST, application/json, template mode, no auth headers. |
| Slack Workflow | POST, application/json, template mode, flat JSON only. |
| Discord | POST, application/json, template mode, no auth headers. |
| Zapier / n8n | POST. Everything else is editable. |
| Generic / Custom | Nothing is locked — method, content type, auth, and body are all yours to configure. |