Anticode Open builder

Website form to n8n: trigger a workflow on n8n cloud or your own server

An n8n Webhook node gives each workflow an address. Put the production address into Anticode's webhook connector and every form sent on your published sites starts the workflow, with the visitor's fields under body. It works on n8n cloud and on a self-hosted n8n, as long as the self-hosted one has a public HTTPS name.

Updated · By the Anticode team

Why people pick n8n for this

n8n appeals to people who want automation they can host and inspect: the workflow runs on your own machine or VPS, data stays where you put it, and you can drop into a Code node when a built-in node isn't enough. Wiring a website form to n8n gives you that control over every submission, for example writing bookings into your own Postgres, enriching a lead before it reaches a CRM, or sending different forms to different teams.

Two URLs, and which one Anticode needs

n8n's Webhook node documentation explains that every Webhook node has a test URL and a production URL. The test URL only listens while you press Listen for Test Event (or run the workflow by hand) and shows the request in the editor. The production URL works once the workflow is published (active), and its runs appear in the Executions tab rather than the canvas.

Use the test URL briefly to capture a sample, then switch Anticode to the production URL. Leaving the test URL saved is the most common reason live forms go nowhere: outside a listening session, n8n answers 404 and Anticode records the delivery as failed.

Step by step

  1. Add a Webhook node. Set HTTP Method to POST, choose a readable path such as anticode-forms, set Authentication to None and Respond to Immediately.
  2. Copy the Test URL, paste it into Anticode under Connectors › Webhook and press Save and turn on.
  3. Click Listen for Test Event in n8n, then Send a test in Anticode. The sample contact message appears in the node's output.
  4. Build the rest of the workflow using that sample, then publish it.
  5. Copy the Production URL, paste it over the test one in Anticode and save. Send one more test and confirm it appears under Executions.

Reading the fields

n8n wraps the request as { body, headers, params, query }. Anticode's JSON lands in body, so in an expression you refer to $json.body.form, $json.body.site or $json.body.data.email. A Switch node on $json.body.form with an output per form (booking, contact, subscribe, signin, or fn: plus the name for a custom form) is a tidy first step. Bookings carry data.service, data.day, data.time, data.name, data.phone and data.email; contact messages carry data.name, data.email and data.message. body.submittedAt is the arrival time in UTC.

If you host n8n yourself

Anticode's server sends the request, and it refuses destinations that look private. Your instance needs:

  • A public domain name with HTTPS on port 443. http://, an IP address, or a custom port such as :5678 are refused, and so are names like n8n.local or n8n.lan.
  • Public DNS. Every address the name resolves to must be public. A name that points at a 192.168 or 10.x address is refused, even if it works inside your network.
  • The right webhook base URL. Behind a reverse proxy, n8n needs its public address set in the WEBHOOK_URL environment variable, or the editor shows internal URLs. See n8n's reverse proxy note.
  • No redirect in front. Anticode doesn't follow redirects, so point it at the final HTTPS address, not an http:// one that bounces.
  • A quick answer. Respond Immediately keeps you well inside Anticode's five-second limit.

Authentication and secrecy

The Webhook node can require Basic, Header or JWT auth. Anticode's connector sends no credentials or custom headers, so any of those would reject every delivery. Keep Authentication at None and treat the URL as the secret: choose a long, unguessable path rather than form, and don't post it anywhere. Anticode stores the URL encrypted, bound to your account, and never shows it again. If you need proof that a request came from Anticode, a site function signs each call with an HMAC header you can verify in a Code node.

Limits

  • Each submission is posted once, about a minute after it arrives, with no retry if n8n is down or answers an error. Self-hosters should treat restarts as a window where deliveries are lost; the submissions are still in Anticode's dashboard.
  • One webhook URL per Anticode account covers every published site.
  • The workflow's response isn't shown to the visitor.

The same pattern in hosted tools: Zapier, Make, Pipedream. The full payload is on the webhook connector page.

Questions people ask

Does this work with n8n cloud?

Yes. Cloud instances have a public HTTPS address, so copy the production URL and save it in Anticode.

Can I run n8n on my laptop for this?

Only behind a public HTTPS tunnel with a real host name. Anticode won't post to localhost or private addresses.

Why do I get a 404 after it worked in testing?

Anticode still has the test URL, or the workflow isn't published. Save the production URL and activate the workflow.

Sources

  1. n8n Docs: Webhook node, checked
  2. n8n Docs: Configure webhook URLs with reverse proxy, checked