All support articles
Pro

Webhooks for Zapier, Make, Slack & n8n

Webhooks send a JSON POST to your URL on every new submission (not spam). Use any tool that accepts a custom webhook, then forward to Slack, sheets, CRMs, and more.

Before you start

  • Pro plan — Webhooks are available on Pro. Open your form in the dashboard → Settings Integrations → Webhook URL.
  • HTTPS — Use a public https:// URL. We validate outbound URLs for security.
  • One delivery attempt — We do not retry failed webhook calls. For critical workflows, use an automation platform with retries or queues.
Request format

Each successful, non-spam submission triggers a single POST with Content-Type: application/json.

Headers include X-FormsFyi-Event: submission.created and User-Agent: Forms.fyi-Webhook/1.0.

Example body:

{
  "form_id": "frm_…",
  "form_name": "Contact",
  "submission_id": "…",
  "data": {
    "email": "visitor@example.com",
    "message": "Hello"
  },
  "metadata": {
    "origin": "https://yoursite.com",
    "submitted_at": "2026-04-26T12:00:00.000Z",
    "file_urls": []
  },
  "is_spam": false,
  "submitted_at": "2026-04-26T12:00:00.000Z"
}

Field values live under data. File uploads appear as signed URLs in metadata.file_urls and inside data when applicable.

Zapier

  1. Create a Zap and choose Webhooks by ZapierCatch Hook.
  2. Copy the Custom Webhook URL Zapier gives you.
  3. Paste it into Forms.fyi → form SettingsWebhook URL, then save.
  4. Submit your form once to send a test payload; Zapier will show the sample fields to map.
  5. Add your next Zapier steps (Slack, Gmail, Sheets, etc.) and map fields from the webhook body.

Make (Integromat)

  1. Create a scenario and add the Webhooks module → Custom webhook (or Custom mailhook if you use email — for HTTP, use Custom webhook).
  2. Save the scenario and copy the webhook URL.
  3. Paste the URL into your form's Webhook URL in Forms.fyi and save.
  4. Run a test submission; Make will parse the JSON and expose data, metadata, etc. for following modules.

n8n

  1. Add a Webhook node (trigger) to your workflow.
  2. Use POST and activate the workflow to get your production webhook URL (or use test URL while building).
  3. Paste that URL into Forms.fyi → Webhook URL and save.
  4. Submit the form to capture a sample; use n8n's JSON fields in downstream nodes.

Slack

Slack's legacy Incoming Webhooks URL expects a specific JSON shape (for example a text or blocks field). Forms.fyi sends our own schema, so you should not paste a Slack incoming webhook URL directly into Forms.fyi.

Recommended paths:

  • Zapier or Make — Catch our webhook, then use their Slack action to post a message with the fields you choose.
  • n8n — Webhook trigger → Slack node, mapping data into message text or blocks.
  • Your own endpoint — Small serverless function that receives our JSON and calls Slack's chat.postMessage API with a bot token.

Troubleshooting

  • No webhook for honeypot or flagged spam submissions.
  • URLs must be reachable from the public internet; we do not follow redirects to another host.
  • Trim spaces from your URL in the dashboard if validation fails.
  • If the automation tool shows no data, submit a real form once after saving the URL so the first payload arrives.