How to get a Telegram chat ID for Make alerts (2 minutes)

Short answer

A Telegram chat ID is a number: positive for a person, negative for a group, and -100 followed by digits for a channel or supergroup. The fastest way to get one is to open https://api.telegram.org/bot<TOKEN>/getUpdates in a browser after sending your bot a message; the id is under "chat". The bot can only message a person who has pressed Start, a group it has been added to, or a channel where it is an administrator — otherwise Make returns "[400] Bad Request: chat not found".

Telegram chat ID for a person, group (negative) or channel (-100…) via @userinfobot, getUpdates or Make's Watch Updates, plus the fix for "chat not found".

Disclosure: links marked "paid link" pay us a commission from the vendor if you sign up. Your price is unchanged, and every file here works without them. How we choose tools →

Every Telegram alert in Make needs one value you cannot see anywhere in the Telegram app: the chat ID. It is the number that tells the bot which conversation to post in. This page shows how to get it for a personal chat, a group and a channel, why the bot must hear from you first, and what each error in Make means. Everything was checked against Telegram's Bot API documentation and Make's Telegram Bot documentation on 29 September 2026.

Before you start: a bot and its token

Alerts are sent by a bot, so you need one. In Telegram, open @BotFather, send /newbot, give it a name and a username ending in "bot". BotFather replies with a token that looks like 123456789:AAH…; Make's documentation says to "Copy the token value and store it in a safe place" — it is a password. In Make, add a Telegram Bot module → Connection → "Add" → paste the token in the "Token" field → Save. That is the only credential the whole chain needs.

What a chat ID looks like

The three kinds of chat ID (Telegram Bot API and Make Apps Documentation, checked 29 September 2026)
Where the alert goesWhat the ID looks likeWhat the bot needs first
You, in a private chat with the botA positive number, e.g. 123456789 (your user ID)You must open the bot and press Start (or send any message) once
A groupA negative number, e.g. -987654321The bot must be a member of the group
A supergroup or a channel-100 followed by digits, e.g. -1001424271061A member of the supergroup; an administrator of the channel with permission to post
A public channelIts @username also works as the chat ID, e.g. @IMTtestAdministrator with permission to post

Telegram's documentation notes the number "may have more than 32 significant bits" — keep it as text in your sheet or in Make; do not let anything round it. And the minus sign is part of the ID: -987654321 and 987654321 are two different chats.

Method 1: @userinfobot or @getidsbot (personal chat, 30 seconds)

  1. In Telegram, search for @userinfobot (Make's documentation names this one) or @getidsbot and open it.
  2. Press Start. It replies with your user ID — that is your personal chat ID.
  3. For someone else's ID, forward one of their messages to the same bot; it replies with the sender's ID (Make's documented method).
  4. Before your own bot can message that person, they must open your bot and press Start. Without that, Telegram refuses: "Forbidden: bot can't initiate conversation with a user".

Method 2: the getUpdates URL (any chat, works for groups)

  1. Send the bot a message: in a private chat press Start; in a group, add the bot as a member and post any message that mentions it, such as /start@your_bot_name.
  2. In a browser, open https://api.telegram.org/bot<TOKEN>/getUpdates, replacing <TOKEN> with the token from BotFather (keep the word "bot" before it, with no space).
  3. Read the JSON. Find "chat": { "id": … }. For a group the id is negative; for a supergroup it starts with -100. Copy it exactly, minus sign included.

If the page shows only {"ok":true,"result":[]}, there are three possible reasons. Nobody has messaged the bot since it was created (send a message and reload). Or the bot is in a group with privacy mode on — the default — and your message did not address it: in privacy mode a bot in a group only receives commands and messages that mention or reply to it, so write /start@your_bot_name rather than "hello". Or a webhook is set on the bot: the Bot API says getUpdates "will not work if an outgoing webhook is set up", and Make's instant "Watch Updates" trigger sets exactly such a webhook. In that case use Method 3, which is built for it.

Method 3: inside Make, with Watch Updates

  1. In a new scenario, add Telegram Bot → "Watch Updates" (instant) and select your connection.
  2. Click "Run once". The scenario waits.
  3. Send a message in the chat — private, group or channel — where you want the alerts.
  4. The module returns one bundle. Open it: the chat ID is under Message → Chat → ID (for channels, under Channel Post → Chat → ID).
  5. Copy it into your alert scenario's "Chat ID" field, then delete this test scenario so it does not keep a webhook on the bot.

Channels: the -100 prefix

A private channel has no @username. Make's documentation gives a direct route: open Telegram in a browser at web.telegram.org, open the channel, and read the address bar — it contains a number after the letter "c" and before an underscore. Put -100 in front of that number to get the chat ID (its example: -1001424271061). The bot must be added to the channel as an administrator with the right to post messages; otherwise Telegram answers "Forbidden: bot is not a member of the channel chat". For a public channel, the @username works as the chat ID, but Make's documentation warns that the channel's display name is not the link — use the part after t.me/.

Where the ID goes in our blueprints

All Telegram alerts on this site use the module Telegram Bot → "Send a Text Message or a Reply" (module version 1 in the blueprint files, checked 29 September 2026). After import, the "Chat ID" field contains the placeholder {{TELEGRAM_CHAT_ID}}: replace the whole token, braces included, with your number. "Parse mode" is set to HTML so bold and links render; if a mapped value such as a lead's message can contain the characters <, > or &, Telegram rejects it with "Bad Request: can't parse entities" — wrap that value in Make's escapeHTML() function or switch Parse mode to empty.

Weekly report → Telegram, every Sunday at eight

The numbers the client asks about every week — leads, open tasks, invoices — reach them on their own, in one message, before they ask.

No Make account yet?The file imports only into Make. Signing up through the link gives you one month of Core free, and us a commission. The file works without the link.
Sign up for Make →paid link · we earn a commissionPaid link. If you sign up through it we earn a commission from Make; your price is the same, and the link gives you one month of Core free.

Tally form → lead log → Telegram alert. The free version of the lead alert

No website form, no CRM, no paid tool. A free Tally form posts to Make; the lead lands in Google Sheets and Telegram pings sales in seconds.

The errors, and what each one means

Telegram Bot errors as Make shows them (Telegram Bot API and Make Community threads, checked 29 September 2026)
Error in the run historyCauseFix
[400] Bad Request: chat not foundWrong ID (missing minus sign, missing -100, a digit off), or the bot has never been in that chatRe-read the ID with Method 2 or 3; for a private chat press Start in the bot; for a group add the bot
[403] Forbidden: bot can't initiate conversation with a userThe person never pressed Start in the botAsk them to open the bot and press Start, then run again
[403] Forbidden: bot was blocked by the userThe person blocked the botThey must unblock it; no setting in Make changes this
[403] Forbidden: bot is not a member of the channel chatBot not added to the channel, or added without admin rightsChannel → Administrators → add the bot → allow "Post messages"
[400] Bad Request: group chat was upgraded to a supergroup chatThe group became a supergroup and got a new IDGet the new -100… ID with Method 3 and update the field
Value must not be empty (Chat ID)The mapped value was blank — a sheet cell or placeholderType the ID directly, or check the source column
[400] Bad Request: can't parse entitiesParse mode HTML and the text contains an unescaped <, > or &Wrap dynamic text in escapeHTML(), or clear Parse mode

Privacy mode in groups

A bot that only sends alerts does not care about privacy mode: sending is always allowed once it is a member. Privacy mode matters when you want the bot to read the group — to fetch the ID with getUpdates, or to react to messages with Watch Updates. Telegram's documentation: in privacy mode a bot receives commands, replies to its messages and messages that mention it, but not general chat. To change it, send /setprivacy to @BotFather and pick Disable — and, per the same page, "the bot will need to be re-added to the group for this change to take effect".

One limit worth knowing while testing: Make's documentation says "When sending messages inside a particular chat, avoid sending more than one message per second". A Search Rows that returns 40 rows into a Telegram module sends 40 messages in a burst; aggregate them into one message first, as the weekly report blueprint does.

Still broken? Check these three things

  • The ID, character by character. Paste it into a Telegram module in a fresh scenario with a fixed text "test" and Run once. If that works, the problem is the mapping in your real scenario (an empty cell, a leading space), not Telegram.
  • Whether the bot is actually in the chat. Open the group or channel members list on your phone and look for the bot's username. In a channel, it must be under Administrators, not Subscribers.
  • Which bot the connection uses. If you created two bots while testing, the connection in Make may hold the token of the one that is not in the group. Left menu → Connections → the name shows which; re-create it with the right token.
Why is my Telegram group chat ID negative?

That is how Telegram numbers groups: private chats are positive user IDs, groups are negative, and supergroups and channels are -100 followed by the internal ID. The minus sign and the -100 prefix are part of the ID and must be typed into Make.

Can the bot message me without me messaging it first?

No. Telegram blocks bots from starting a private conversation; the error is "Forbidden: bot can't initiate conversation with a user". Open the bot once and press Start. This is per person: every teammate who should get alerts in a private chat has to do it.

Does getUpdates show my group if the bot is in it?

Only if the bot received an update from the group since it was created and no webhook is set. With privacy mode on (the default), send a command that names the bot, such as /start@your_bot, then reload the getUpdates page.

Where do I find the chat ID in Make itself?

Add a Telegram Bot "Watch Updates" module, Run once, send a message in the chat, and open the output bundle: Message → Chat → ID. Delete the test scenario afterwards so its webhook does not stay on the bot.

Should each client have their own bot?

For alerts into a client's group, one bot per client is cleaner: the bot's name and photo are what the client sees, and removing a client means revoking one token. For your own alerts, one bot in several chats is fine — the chat ID, not the bot, decides where a message lands.

  1. Make Apps Documentation — Telegram Bot (connecting with a BotFather token; finding chat IDs for private channels with the -100 prefix, Watch Updates, @userinfobot; one message per second; updated 25 September 2026)
  2. Telegram Bot API — Chat object (id may exceed 32 bits), getUpdates ("will not work if an outgoing webhook is set up"), sendMessage chat_id (@channelusername)
  3. Telegram Bot Features — Privacy mode (/setprivacy; re-add the bot to the group)
  4. Make Community — "[400] Bad Request: chat not found" (February 2025)
  5. Make Community — "Telegram Bot ChatId Value must not be empty and [400] Bad Request: chat not found" (February 2025; Watch Updates → Chat → ID; -100 for supergroups and channels)
  6. Make Community — "Telegram Bot Error: bot can't initiate conversation with a user" (2024)

What will it cost? Make cost calculator →Build your automation plan →