"The requested webhook is not registered" is the 404 response n8n sends when a request reaches a webhook address that nothing is listening on at that moment. The webhook itself is usually fine. What is wrong is the combination of URL, method and workflow state. Five checks fix nearly every case.
In short. A Test URL (/webhook-test/...) only listens for 120 seconds after you click "Listen for test event". A Production URL (/webhook/...) only listens while the workflow is published (called "active" in n8n 1.x). Use the URL that matches the state, send the same HTTP method the node expects, and check that the path has not changed.
Cause 1: you called the Test URL without listening
Each Webhook node has two addresses. The documentation summarises them like this:
| URL type | How to trigger | Listening duration | Data shown in the editor |
|---|---|---|---|
| Test URL | Click "Listen for test event", then send the request | 120 seconds | Yes |
| Production URL | Publish the workflow | Until it is unpublished | No (see the Executions tab) |
So if you paste the Test URL into Stripe, Typeform or a website form and the request arrives later, n8n is no longer listening and answers 404. Fix: click "Listen for test event" right before sending a test, or use the Production URL for anything that is not a manual test.
Cause 2: you called the Production URL of an unpublished workflow
The Production URL is registered only when the workflow is published. Save the workflow, publish it, then call the URL again. Remember that production executions do not appear on the canvas: open the Executions tab to see them. Many people think the webhook "did nothing" when it actually ran.
Cause 3: the HTTP method does not match
A Webhook node accepts one method by default, for example POST. A GET request to the same path is not registered and gets the same 404. Check the "HTTP Method" field against what the sender uses. If you need several methods, the documented option is in the node Settings: turn on "Allow Multiple HTTP Methods", and the node gets one output per method.
Test it with curl, replacing the URL with yours:
Cause 4: the path changed
The path is the last part of the URL. If someone edited it, duplicated the workflow, or imported it on another instance, the old URL no longer exists. Copy the URL again from the node and update the sender. Set a readable custom path such as new-lead instead of the random default, so changes are deliberate.
Also check for conflicts: n8n allows only one webhook per path and method. If another published workflow already uses POST /new-lead, unpublish one or change its path.
Cause 5: the base URL is wrong (self-hosted)
If the URL shown in the node starts with http://localhost:5678 while your instance is reachable at https://n8n.yourdomain.com, external services cannot reach it at all. Behind a reverse proxy, n8n cannot guess its public address. Set it explicitly with N8N_WEBHOOK_URL (it replaces WEBHOOK_URL, deprecated from n8n 2.35.0) and restart. Details in our guide to n8n webhook URLs.
A quick test routine
- 1 Open the Webhook node, select Test URL, click "Listen for test event".
- 2 Send a request with curl or our free Webhook Payload Generator within 120 seconds.
- 3 Confirm the data appears in the node.
- 4 Switch the sender to the Production URL, publish the workflow, and send again.
- 5 Open Executions to confirm the production run.
If the status code is something other than 404, our HTTP Status Explainer tells you what each code means for an automation.
Worked example: moving a Stripe webhook from test to production
A common sequence, and where the 404 creeps in:
- 1 You build the workflow with the Test URL and click "Listen for test event".
- 2 In Stripe, you add an endpoint with the Test URL and send a test event. It works: the data appears in n8n.
- 3 Two days later, real payments arrive. Stripe reports failures with status 404.
Nothing broke. Stripe still calls /webhook-test/..., and n8n only listens there for 120 seconds after you click. The fix:
- 1 Open the Webhook node, switch to Production URL, copy it.
- 2 In Stripe, edit the endpoint and paste the Production URL.
- 3 Save and publish the workflow in n8n.
- 4 Use Stripe's "send test event" again, then open Executions in n8n to confirm the run.
Apply the same logic to Typeform, Calendly, Shopify, HubSpot and every other sender: the endpoint configured on their side must be the Production URL.
How to read the response the sender received
Most senders keep a delivery log. What you see there tells you where to look:
| Response in the sender's log | Meaning | Where to look |
|---|---|---|
| 404, "The requested webhook ... is not registered" | Nothing listening on that URL and method | URL type, publish state, method, path |
| 403 | Allowlist or authentication rejected it | Webhook auth settings, IP allowlist, proxy hops |
| 200 "Workflow got started" | It worked; the workflow ran | n8n Executions tab |
| 500 | The workflow failed before responding | The failed execution in n8n |
| Timeout, no status | Never reached n8n | DNS, TLS, firewall, base URL |
Duplicated workflows and imports
Duplicating a workflow or importing it on another instance copies the Webhook node with its path. Two outcomes:
- On the same instance, the copy cannot be published with the same path and method as the original. n8n allows one webhook per path and method. Change the path in the copy.
- On another instance, the path is the same but the base URL differs. Update the senders to the new domain.
Troubleshooting table
| Situation | Fix |
|---|---|
| Works when you click "Listen", fails later | Sender uses the Test URL; switch it to the Production URL |
| Production URL returns 404 | Publish the workflow; check the method and path |
| 404 only for GET requests | Node set to POST; enable Allow Multiple HTTP Methods or change the sender |
| 404 after editing the node | Path changed; update the sender |
| "path already in use" when publishing | Another published workflow uses the same path and method |
| URL shows localhost | Set N8N_WEBHOOK_URL on self-hosted |
Production checklist
- External services configured with the Production URL.
- Workflow published, and checked again after every edit.
- Custom, readable path; no duplicate path and method on the instance.
- Base URL showing your public https domain.
Frequently asked questions
Why does my n8n webhook work in test but not in production?
The sender is probably still calling the Test URL (/webhook-test/), or the workflow is not published. Use the Production URL (/webhook/) and publish the workflow.
How long does the n8n test webhook listen?
120 seconds after you click "Listen for test event".
Where do I see production webhook data in n8n?
In the workflow's Executions tab. Production runs are not displayed on the canvas.
Can two workflows use the same webhook path?
Not with the same HTTP method. n8n allows one webhook per path and method combination.
Do I need to republish after changing a webhook path?
Yes. Save and publish so the new path is registered, then update the sender.
Can the Test URL be used permanently?
No. It only listens for 120 seconds after "Listen for test event" and is meant for building and debugging.
Why does my webhook return 404 on n8n Cloud?
The same causes as self-hosted: Test URL not listening, unpublished workflow, or a method or path mismatch. Check the URL type first.
Tags
Steve founded PURIST, a workflow automation studio working with n8n, Make and Claude AI, and is the point of contact on every project. Prices and features in our articles come from vendor documentation and public pricing pages. How we research and score tools.