Asset 20 8 2
Does AI recommend your business? Run the free check →

Join 15,000 business owners, marketers and entrepreneurs. The Sunday newsletter you'll be annoyed only arrives once a week.

Article

How to Use Webhooks in n8n: Test URL, Production URL and More

To use webhooks in n8n, add the Webhook node as your workflow trigger, set the HTTP method and path, then call the Test URL while you build and switch to the Production URL once you publish the workflow. The node can also send the workflow's result back to the caller, so it works like a small API endpoint.

What the Webhook node gives you

Plenty of the apps a small business uses can send a webhook but have no dedicated trigger in n8n. That's exactly the gap the Webhook node fills. It's a trigger node that creates a webhook to receive data from an app or service when something happens, and that data starts your workflow.

It can also return the data generated at the end of the workflow, so the caller gets an answer back. That turns a workflow into something that behaves like a small API endpoint. If you're hazy on how webhooks differ from regular API calls, my explainer on webhooks versus APIs sets out the basics.

Building a webhook workflow, start to finish

1. Add the trigger

Add the Webhook node as the first node of a new workflow. It accepts DELETE, GET, HEAD, PATCH, POST and PUT, so pick the HTTP method the sending service uses.

2. Set a path you'll recognise

The Path field holds a randomly generated path by default, which avoids clashes between webhook nodes. If you want a stable, readable address, set your own. You can include route parameters such as /:variable or /path/:variable to pick up values from the URL itself.

3. Lock it down

Choose an authentication method: Basic auth, Header auth, JWT auth, n8n User Auth (OAuth2) or None. Header auth is a simple choice when the sending service lets you add a custom header. You can also use the IP(s) Allowlist option to limit who can call the webhook, and anything from an address outside the list gets a 403 error.

4. Decide how it answers

Under Respond you've got four options: Immediately, which returns 'Workflow got started'; When Last Node Finishes; Using 'Respond to Webhook' Node; and Streaming response. If you pick When Last Node Finishes, the Response Data setting lets you choose All Entries, First Entry JSON, First Entry Binary or No Response Body.

5. Test it

Select Listen for Test Event, then call the Test URL from the service or with a test request. The incoming data appears in the workflow so you can build the next steps against real fields.

6. Go live and check the runs

Paste the Production URL into the sending service and publish the workflow. From then on, check runs in the workflow's Executions tab.

Test URL versus Production URL

The node shows two webhook URLs at the top of its panel. A test webhook registers when you select Listen for Test Event or Execute workflow while the workflow is inactive, and the data shows up in the editor. A production webhook registers only when you publish the workflow, and it doesn't display data in the editor at all.

Why a working webhook can look dead after publishing

n8n Docs on the Webhook node explain the behaviour that confuses most people. Because the Production URL doesn't show data in the editor and only works once the workflow is published, a webhook that worked perfectly in testing can look like it's doing nothing in production. It isn't broken. Open the Executions tab and you'll see the runs there.

Two more things to watch. If the sending service still has the Test URL pasted in, nothing will reach the published workflow. And there's a 16MB maximum payload, which self-hosters can change with the N8N_PAYLOAD_SIZE_MAX environment variable.

Work with me

Want AI doing the heavy lifting in your marketing?

I build the systems that handle the boring 80 percent, so you get your week back. Done properly, with the human kept in.

Options worth switching on

  • Only Run If takes an expression against the request. Requests that don't match get a 200 response without creating an execution, which keeps noise out of your logs.
  • Ignore Bots helps when link previews and crawlers hit your URL.
  • Allowed Origins (CORS), Raw Body, Binary Property and Response Headers cover browser calls, unparsed bodies, files and custom replies.

If you send HTML back, note that since n8n 1.103.0 HTML responses to webhooks are wrapped in a sandboxed iframe. Relative URLs and top-level window access fail, so use absolute URLs.

Webhooks in other tools

Zapier offers Webhooks by Zapier, which triggers when a POST, PUT or GET request hits a Zapier URL and gives you the request body unparsed, up to 2 MB, plus headers. My comparison of n8n against Zapier covers the bigger differences.

Freshdesk automation rules can run a Trigger Webhook action on ticket creation or update, which is a handy way to push support data into a CRM.

The advice I'd give on your first n8n webhook

Set your own path, add Header auth from day one, and test with the Test URL until the data looks right. Then swap the Production URL into the sending service, publish, and check the Executions tab rather than the editor. If you'd rather hand the build to someone, my guide to hiring an automation specialist explains what to look for.

Want your tool on this list? Featured spots and reviews here are paid partnerships. Here's how to partner with me.

Frequently asked questions

What is the difference between the test and production webhook URL in n8n?

The Test URL works after you select Listen for Test Event and shows data in the editor. The Production URL registers when you publish the workflow, and its runs appear in the Executions tab.

Can an n8n webhook send data back to the caller?

Yes. Choose When Last Node Finishes or Using 'Respond to Webhook' Node under Respond.

How big can a webhook payload be?

The maximum is 16MB, and self-hosted users can change it with N8N_PAYLOAD_SIZE_MAX.

How do I secure an n8n webhook?

Use Basic, Header, JWT or n8n User Auth (OAuth2), and restrict callers with the IP(s) Allowlist if you need to. Blocked addresses get a 403.

Which HTTP methods does the Webhook node accept?

DELETE, GET, HEAD, PATCH, POST and PUT.

Published and maintained by the Lilach Bullock team, covering marketing, AI and business growth.
Your buyers are asking AI who to use. Does it say you?

See for free whether ChatGPT, Claude, Perplexity, Gemini and Google name you, and get the plan to become the answer.

Check my AI visibility →
Sundays only

Get the Sunday newsletter.

One email a week. AI experiments, marketing tactics, and the workflows Lilach is building right now in her own business.

Subscribe free

Let’s get your marketing running on AI.

Book a free 30-minute call

We figure out what you need, where AI fits in, and what working together would look like.

Book the call →

Or take the 30-second calculator

You’ll see the hours and the money quietly leaking out of your week, and the three workflows worth building first.

Take the calculator →

Or grab the free AI resource library

Prompt packs, templates, checklists, and swipe files. The exact tools I build for paying clients. Yours, free.

Get the library →
Keep reading

More from the blog.