Telegram Trigger not receiving events on Desktop/Docker (Mac M4) despite successful Webhook set

Hi everyone,

I’m struggling to get the Telegram Trigger node to work in my local n8n setup (Docker on Mac M4). I’ve spent several hours troubleshooting and I’m stuck. Here are the details:

The Setup:

  • n8n Version: Latest (Running via Docker Desktop)

  • OS: macOS (M4 chip)

  • Tunnel: ngrok (URL: https://stoloniferously-tubuliflorous-pedro.ngrok-free.app/)

  • Workflow: Simple Telegram Trigger → No-Op (for testing)

What I’ve done:

  1. Webhook Registration: I manually registered the webhook using https://api.telegram.org/bot``<ID>:<TOKEN>/setWebhook?url=https://stoloniferously-tubuliflorous-pedro.ngrok-free.app/webhook/<ID>/webhook.

    • Result: {"ok":true,"result":true,"description":"Webhook was set"}.
  2. Webhook Info: Checking /getWebhookInfo shows the correct URL, but pending_update_count just keeps increasing when I send messages to the bot.

  3. ngrok: The tunnel is online, but the “Connections” table stays at 0. No POST requests are hitting my local machine from Telegram.

  4. n8n Configuration: The workflow is Active. I’ve tried toggling it on/off and using both Production and Test URLs.

The Problem: Even though the webhook is “set”, Telegram doesn’t seem to be able to “reach” my ngrok tunnel, or ngrok isn’t passing the traffic to Docker.

Has anyone faced issues with Telegram Webhooks and ngrok on Mac M4/Docker recently? Are there any specific environment variables for Docker I might be missing to allow this traffic?

Thanks in advance!

Hi @Tiana_Ko

From what you described, Telegram is actually queuing the updates, but they never reach your local n8n. You can see that because the pending update count keeps growing while ngrok shows zero incoming requests. That usually means the webhook URL that Telegram has is not effectively pointing to a reachable public address of your n8n instance.

When running n8n inside Docker locally, it often registers webhooks using an internal address (like localhost or the container host) unless you explicitly tell it what its public URL is. In that case Telegram happily “sends” the events, but they go to an address that only exists inside your machine, so neither ngrok nor n8n ever sees them.

A practical fix is to start the container with your ngrok URL set as the external webhook URL for n8n (for example by setting the webhook/public URL environment variable to your https ngrok address), then restart n8n and reactivate the workflow so the webhook is registered again using that public URL. Once that’s done you should start seeing POST requests appear in the ngrok console and the Telegram Trigger will begin firing.

1 Like