Add an HTTP Request node to your workflow and fill it out as follows:
Method: POST
URL: Copy your production URL from the Webhook node and paste it here.
Send Headers:
Key: Content-Type
Value: application/json
If you want to send data to the Webhook, use the Body section.
If you just want to trigger the Webhook without sending any data, you can leave it empty.
Now, add a Webhook Trigger node.
HTTP Method: POST
Path: For example, write something like /trigger.
After you enter the path, your production URL will change. Once it updates, copy the new URL and paste it into your HTTP Request node.
Authentication: Your choice. Respond: Immediately.
Now the setup is complete — but for it to work, your workflow must be active (click the green toggle in the top-right corner).
After activating your workflow, don’t trigger it manually for testing. Let the system trigger it automatically, and then monitor the executions in the Execution menu.
When you use “When clicking test workflow trigger,” it won’t work this way.
Your workflow needs to be triggered automatically.
When you use “When clicking test workflow trigger,” you’re triggering it manually, so the Webhook doesn’t listen.
Use the production URL, activate your workflow, and let the system trigger it automatically instead of manually.
The issue was how the nginx proxy was configured. The public URL for webhooks is configured to only listen to the requests which come from outside where the n8n is hosted. But when you call it internally, it is routing to 127.0.1.1, which is probably the default URL n8n routes to, when we do internal webhook calling.
FIX: The fix was to use the internal URL where the n8n is hosted, instead of the public URL. It is always hosted on port 5678. Now the webhook is being triggered correctly.