I installed n8n on my Proxmox server. I installed it in a Docker container and I have Pangolin as a reverse proxy.
I followed the instructions to the letter and the test webhooks work fine, but the production webhooks do not work correctly. I get the following error:
“Received request for unknown webhook: The requested webhook ‘rss-is-ready’ is not registered.”
I am triggering the webhook from Grist and this is the error that appears:
{"status":"retrying","numWaiting":80,"updatedTime":1751088664388,"lastEventBatch":{"status":"failure","httpStatus":404,"errorMessage":"{\"code\":404,\"message\":\"The requested webhook \\\"rss-is-ready\\\" is not registered.\",\"hint\":\"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)\"}","size":20,"attempts":14},"lastSuccessTime":null,"lastFailureTime":1751088664388,"lastErrorMessage":"{\"code\":404,\"message\":\"The requested webhook \\\"rss-is-ready\\\" is not registered.\",\"hint\":\"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)\"}","lastHttpStatus":404}
Make sure you are NOT trying to call the webhook-testhttps://domain.com/webhook-test/resource endpoint. For this to work you’d need to have clicked the Test Workflow button
Yes, but only if you want to debug your workflow. That button will enable the “webhook-test” url and cause your webhook to listen. Then you need to hit the webhook url to test it.
I have done it. I tested the webhook-test and it responded. The unresponsive one is the productive webhook. That’s why I was asking if it could be related to Pangolin or Docker.
I think I have found the problem. It is due to the sum of several things:
When a test stream is generated with webhooks, the url “/webhook-test/*” is taken up and this is logged by N8N.
When the workflow is switched to active, the test url “/webhook-test/” is unregistered and the productive url “/webhook/*” is used.
This unregistration produces some problems with Grist, because it uses a queue to trigger the webhooks and it happens that if any webhook in that queue is wrong, the whole queue stops. I had 4 triggers (2 test and 2 production). It happens that N8N when activating the workflow, unregisters the test webhooks and Grist fails when trying to call the test endpoints, stopping the whole queue.
I understand why separate flows are made, however, it would be good to grant some option for the webhooks to use the same URL, whether they are test or not, via environment variable (by default there is always “/webhook-test/” and for prod is "/webhook/").