@Federico_Gentile that 404 means a GET actually reached the node even though it’s set to POST, so something is changing the method, not the node config.
Two usual causes with ngrok:
Testing by opening the URL in a browser. The address bar always sends GET. A POST has to come from curl/Postman or Telegram.
A redirect downgrading the method. If you call the http:// ngrok URL (or hit a trailing-slash redirect), the 301/302 to https turns your POST into a GET. Use the https ngrok URL directly, and set WEBHOOK_URL=https://your-ngrok-domain so n8n emits https.
How are you sending the failing request: browser, curl, or Telegram setWebhook?
Thank you so much for the reply. So far I am sending the request via the search bar of the browser, so that could be a reason. If I want to test it correctly, what would you recommend to use then?
@Federico_Gentile yep, that’s it, the search bar sends a GET so it’ll always hit that error.
To test, send a real POST. Quickest is curl:
curl -X POST -H "Content-Type: application/json" -d '{"hello":"world"}' https://your-ngrok-domain/webhook-test/9390c7f6-894b-4948-9579-8d9ec556dc7b
One catch with the Test URL: click “Listen for test event” first, it only captures a single request while it’s actively listening. Postman works too, just set the method to POST.
For the real Telegram setup, switch to the Production URL, activate the workflow, then point Telegram’s setWebhook at that https URL. Telegram sends updates as POST, so it’ll behave like your Telegram Trigger already does.
The error is happening because Telegram is trying to access your webhook URL with a GET request, while your n8n Webhook node is configured to accept only POST requests.
A few things to check:
Make sure you’re using the Production URL (or the active Test URL while listening) from n8n and not opening the URL directly in a browser. Browsers send GET requests by default.
Verify that the Telegram webhook is registered correctly:
In n8n, click “Listen for test event” if using the Test URL. Test webhooks only work while the workflow is actively listening.
Confirm that the Telegram Bot Trigger/Webhook path exactly matches the path configured in n8n and that ngrok is forwarding requests to the correct n8n port.
If you manually visit the webhook URL in a browser and see:
{
"code": 404,
"message": "This webhook is not registered for GET requests. Did you mean to make a POST request?"
}
that’s actually expected behavior because the endpoint only accepts POST requests.