FormThunder isn't open yet. This site describes the service as it will run at launch. Find out more

FormThunder
Menu

Start an n8n workflow from every form submission

FormThunder starts an n8n workflow by posting each form submission to n8n's Webhook node, on n8n cloud or your own server. Use the node's production URL, activate the workflow, and each form field arrives under body.data. Since it's a normal signed webhook, you can verify the signature inside the workflow. It needs FormThunder's Pro plan.

Updated

Set it up

  1. Add a Webhook node set to POST and copy its production URL.
  2. Set that URL as the form's webhook and activate the workflow.
  3. Send a test submission and read the fields from body.data.
Set it through the API
curl -X PATCH https://formthunder.com/api/v1/forms/YOUR_FORM_ID \
  -H "Authorization: Bearer ft_live_..." \
  -H "Content-Type: application/json" \
  -d '{"integrations":{"webhook":{"enabled":true,"url":"https://n8n.example.com/webhook/contact-form"}}}'
Code node: verify the signature
const crypto = require("crypto");
const item = $input.first();
const header = item.json.headers["x-formthunder-signature"];
const parts = Object.fromEntries(header.split(",").map((p) => p.split("=")));
const raw = JSON.stringify(item.json.body);
const expected = crypto.createHmac("sha256", $env.FORMTHUNDER_WEBHOOK_SECRET)
  .update(parts.t + "." + raw).digest("hex");
if (expected !== parts.v1) throw new Error("Bad signature");
return $input.all();

What to know about n8n

  • The Webhook node has a test URL and a production URL. The test URL only listens while you press Listen for test event, so a form pointed at it fails the rest of the time.
  • A self-hosted n8n must be reachable over public HTTPS. FormThunder refuses plain HTTP and private addresses.
  • The Code node above needs crypto allowed through NODE_FUNCTION_ALLOW_BUILTIN on self-hosted n8n, and environment access for $env. If it can't get the raw body it re-serialises the JSON, which matches FormThunder's output as long as n8n preserves key order.

Or ask your AI

An agent connected over MCP can set this up, send a test through it and read the result.

You, to your AI
Send submissions from my contact form to n8n. Send a test and tell me whether it arrived.

Questions

Does this work with self-hosted n8n?

Yes, as long as the webhook URL is on public HTTPS. A localhost URL or a private IP is refused.

Why do I get a 404 from n8n?

Usually the form points at the test URL, or the workflow isn't active. Use the production URL and activate the workflow, then press resend on the failed delivery.

Connect your form to n8n

Integrations are on Pro at $12 a month and Agency at $39 a month. The form itself is free to start.