Nothing is listening on that method and path at the moment your request arrived. n8n keeps a live registry of webhook routes, and a route is only in it while the workflow is active (production URL) or during the single call that follows clicking Execute workflow (test URL).
Don't read the message. Read the hint underneath it. n8n attaches one of exactly two hints, and which one you get tells you which URL n8n thinks you called — which is the whole diagnosis.
If the response hint says:
Click the 'Execute workflow' button on the canvas, then try again. (In test mode, the webhook only works for one call after you click this button)
…n8n received your request on the test URL. Test registration is armed by clicking Execute workflow and is consumed by one call. Not one minute, not one session — one call. If you clicked Execute, sent a request that failed for an unrelated reason, and sent a second one, the second gets this error.
If the hint says:
The workflow must be active for a production URL to run successfully. You can activate the workflow using the toggle in the top-right of the editor. Note that unlike test URL calls, production URL calls aren't shown on the canvas (only in the executions list)
…n8n received your request on the production URL, and the workflow isn't active. Flip the toggle top-right.
That second hint also quietly answers the question people ask next: a successful production call shows nothing on the canvas. It's in Executions. A silent canvas is not evidence that the call failed.
n8n checks whether that path is registered for other HTTP methods first, and if it is, you get a different message entirely:
This webhook is not registered for POST requests. Did you mean to make a GET request?
If you're reading that, stop debugging activation — the workflow is active and the path
is correct. You sent the wrong verb. (With several registered methods it lists them:
Did you mean to make a GET, PUT or PATCH request?)
So the two messages split your problem in half before you touch anything:
| What you see | What's true |
|---|---|
The requested webhook "…" is not registered. |
nothing is listening on that path at all |
This webhook is not registered for X requests. Did you mean… |
the path is live; your HTTP method is wrong |
If you found that phrase in your server logs rather than in an HTTP response, it's n8n's own logging of this same failure:
Received request for unknown webhook: <the message above>
The useful part is everything after the colon — it's the message from the table above, including the path n8n actually received. On a self-hosted instance behind a reverse proxy that's the line worth reading, because a proxy that strips or rewrites a path prefix means n8n is being asked for a route you never typed. Compare the path in that log line against the URL you sent before assuming the workflow is at fault.
The registry only holds routes that can currently be served. An inactive workflow has no listener — not a disabled one, no listener at all — so the HTTP layer answers 404 without ever consulting your workflow. That's why the error arrives instantly and why nothing appears in Executions: the request never reached an execution.
Test registration works the same way, with a deliberately tiny lifetime, because it exists to let you inspect one payload on the canvas, not to serve traffic. Treating the test URL as a real endpoint is the mistake the design invites and this error punishes.
Treadle's Inquiry Triage takes inbound messages on a webhook, strips quoted history and signatures, and has Claude classify intent and extract fields.
Sources: packages/cli/src/errors/response-errors/webhook-not-found.error.ts and
packages/cli/src/webhooks/webhook-request-handler.ts in n8n's repository, read
directly. The hint text quoted above is n8n's own, verbatim from that source.
Last verified 15 September 2026 against n8n 2.39.5 (source read on master @ 2.40.0). n8n changes these messages between releases; if the wording you see differs, the version above is what this page was checked against.