Connect to 1,000+ apps via Zapier, Make, n8n, or Activepieces.
Every form on Form4Dev can push to a signed webhook on every submission. That single webhook is all Zapier, Make, n8n, and Activepieces need to wire your form to Gmail, Google Sheets, Notion, HubSpot, Slack, Airtable, Pipedrive, Trello — anything any of them supports. You don't need a separate Form4Dev connector. The webhook is the connector.
How it works — 60 seconds
- In your workflow tool (Zapier / Make / n8n / Activepieces), create a new flow with a Webhook trigger. The tool gives you a unique webhook URL.
- Open your form in Form4Dev → Webhooks, click Add webhook, paste that URL, save.
- Submit a test entry to your form. The webhook fires within a second; your workflow tool now sees a sample payload and you can map the fields to a destination — Gmail, Sheets, Notion, whatever your tool supports.
That's the whole pattern. The four recipes below are just the same three steps with each tool's UI labels.
The webhook payload
Every event is a single JSON POST with this body:
{ "event": "submission.created", "formId": "frm_a1b2c3", "formName": "Contact form", "submissionId": "sub_4d5e6f", "createdAt": "2026-05-29T14:30:00.000Z", "data": { "name": "Ada Lovelace", "email": "[email protected]", "message": "I'd like a demo." } }
data is whatever the form submitter sent — the keys
match your form's field IDs. Magic fields (_replyto,
_subject, etc.) are stripped from data
before delivery, so you only see the real form fields.
| event | when it fires |
|---|---|
submission.created | Every non-spam submission. The default — what you almost always want. |
submission.spam | A submission that was caught by the spam pipeline. Subscribe to this if you want a separate "quarantine review" workflow; otherwise leave it off. |
submission.deleted | A submission was deleted from the dashboard. Useful for keeping a downstream CRM in sync. |
Pick which events your webhook subscribes to in the form's webhook settings. submission.created is the default if you pick nothing.
Headers we send
| header | value |
|---|---|
Content-Type | application/json |
User-Agent | Form4Dev-Webhook/1.0 — allowlist this if your edge proxies block unknown UAs. |
X-Form4Dev-Event | e.g. submission.created — useful when one endpoint handles multiple event types. |
X-Form4Dev-Delivery | Unique delivery ID. If you retry a downstream action, dedupe on this so a retried delivery doesn't double-post. |
X-Form4Dev-Attempt | 1 on the first try, 2..5 on retries. |
X-Form4Dev-Signature | sha256=<hex> HMAC-SHA256 over the raw request body, using your webhook's secret. Only sent when a secret is configured. |
Verifying the signature (when your tool supports it)
Most no-code workflow tools (Zapier, Make, Activepieces) don't check signatures — they trust the URL is hard to guess. Fine for most cases. If you're running n8n on your own server or a custom endpoint and want HMAC verification, set a secret on the webhook in Form4Dev and verify it like this:
import { createHmac, timingSafeEqual } from "node:crypto"; const raw = await request.text(); const expected = "sha256=" + createHmac("sha256", secret).update(raw).digest("hex"); const sent = request.headers.get("x-form4dev-signature") ?? ""; if (sent.length !== expected.length || !timingSafeEqual(Buffer.from(sent), Buffer.from(expected))) { return new Response("bad signature", { status: 401 }); }
Compute the HMAC over the raw request body — don't parse and re-stringify, the spaces will mismatch and signatures will never pass.
Retries and delivery log
We treat any 2xx response as success. Anything else (or a timeout past 10 seconds) is retried with exponential backoff:
| attempt | delay after previous failure |
|---|---|
| 1 | immediately (when the submission lands) |
| 2 | +1 minute |
| 3 | +5 minutes |
| 4 | +30 minutes |
| 5 | +2 hours |
| (give up) | after 5 failed attempts the delivery is marked abandoned |
The dashboard shows the full delivery history for every webhook — request body, response status, response body (first 2KB), timestamps, attempt number. If something downstream broke, replaying or debugging starts there.
Recipe: Form4Dev → Zapier → anything
- In Zapier, click Create Zap. For the trigger, pick Webhooks by Zapier → Catch Hook.
- Zapier shows you a unique URL like
https://hooks.zapier.com/hooks/catch/12345/abcdef/. Copy it. - Open your form in Form4Dev → Webhooks → Add webhook. Paste the URL, save.
- In Zapier, click Test trigger. Submit a real entry to your Form4Dev form (or use the dashboard's Send test button). Zapier picks up the payload.
- Add an Action. Examples: Gmail → Send Email (map
data.emailto To,data.messageto Body), Google Sheets → Create Spreadsheet Row (one column perdata.*field), Slack → Send Channel Message, etc. - Publish. From now on every submission flows through.
Zapier's free plan gives you ~100 tasks/month — enough to wire one or two forms. The webhook itself is free on every Form4Dev plan including Free.
Recipe: Form4Dev → Make → anything
- In Make (formerly Integromat), create a new Scenario. Pick Webhooks → Custom webhook as the first module.
- Click Add, give it a name, then Save. Make shows the webhook URL — copy it.
- Paste into Form4Dev → Webhooks. Save.
- Back in Make, click Run once. Submit a test entry. Make captures the payload structure.
- Add the next module — Gmail → Send an email, Google Sheets → Add a row, Notion → Create a database item, etc. Map fields from
1.data.<field>. - Activate the scenario.
Recipe: Form4Dev → n8n → anything
- In n8n, create a new workflow. Add a Webhook node as the trigger. Set the HTTP method to POST.
- Copy the Test URL (during development) or Production URL (when live). Paste into Form4Dev → Webhooks.
- If you want HMAC verification, set a secret on the Form4Dev webhook and add a Function node right after the webhook to verify
X-Form4Dev-Signatureagainst the raw body — snippet under Verifying the signature. - Add an action node — Gmail, Notion, Airtable, HubSpot, anything in n8n's catalogue. Reference fields as
{{$json.data.email}}etc. - Save and activate.
n8n on your own server is the right pick if you want signature verification, full payload control, and no per-execution metering. Cloud-hosted n8n works identically.
Recipe: Form4Dev → Activepieces → anything
- In Activepieces, create a new Flow. Pick Webhook as the trigger.
- Activepieces gives you a webhook URL — copy it.
- Paste into Form4Dev → Webhooks. Save.
- Submit a test entry; Activepieces captures the sample.
- Add the next step — Gmail, Google Sheets, Slack, HubSpot, etc. Map fields from
trigger.body.data.<field>. - Publish.
Activepieces can also run inside your own infrastructure — useful if you want the workflow engine on your servers.
Test before you wire it
If you want to see the exact bytes Form4Dev sends before you commit to a workflow tool, point a webhook at webhook.site for five minutes. Submit a test entry. You'll see the full request — method, URL, headers, body — and can copy the JSON into whichever tool you end up using. Delete the test webhook afterwards.
FAQ
Do I need a paid plan? No. Webhooks work on every plan including Free.
How many webhooks per form? No hard limit — add one for each destination. They all fire in parallel after the submission lands.
What if my workflow tool is slow? We wait up to 10 seconds for a response. After that the delivery is logged as a timeout and retried per the schedule above. Your tool sees the same delivery ID — dedupe on X-Form4Dev-Delivery if you're doing something non-idempotent downstream.
Can I use this to call my own backend? Yes — that's the original use case. Set a secret, verify the HMAC, you're done. See the snippet under Verifying the signature.
Does this replace the built-in Slack / Discord / Telegram / Mailchimp integrations? No, those still exist for one-click setup. Webhooks are for everything else — anything outside that short list. You can use both on the same form.
What about Gmail OAuth, Notion OAuth, HubSpot OAuth? Your workflow tool handles all of that — you authorize Zapier / Make / n8n / Activepieces against those services once in their UI, and Form4Dev never sees those credentials. We just push the submission payload to the URL you gave us.
Need help wiring a specific destination? Email [email protected] with the tool you're using and the destination you want, we'll send you a screenshot walkthrough.