Two Telegram triggers start a run the moment something happens with your bot:
- Telegram · New message — When someone sends your bot a message, or posts in a channel it runs.
- Telegram · New button press — When someone presses a button your bot sent that is not a link. Use it to answer a message a workflow sent — Approve or Reject on an order, say.
Both are instant triggers — see How instant triggers work.
Who can do this
Workspace Admins and Editors, on every plan — Telegram is not a premium connection. Viewers see the trigger and its status but cannot change it.
Before you start
- A Telegram connection for the bot — see Connect Telegram.
- The bot let into the chat: the person has selected Start in the bot, or the bot is in the group, or an administrator of the channel.
- For New button press, a message with buttons sent by the same bot — see Send a Telegram message.
Steps
Set up New message:
Open the workflow in the designer and open the trigger picker — Browse all triggers on an empty workflow, or select the trigger and Change how it starts.
Under Telegram, select New message — it reads Telegram · instant. Or type Telegram in Search triggers.
In Connection, choose the bot's connection — for example Consulace bot.
Optionally, in Only this chat, type a chat id — A chat id — empty takes every chat the bot is in. For example -1001234567890 for a group. See Finding a chat id below.
Optionally, in Text contains, type a word or phrase — order. Only messages whose text contains it start a run.
Under the fields, the panel reads Publishing sets this up in Telegram; unpublishing takes it away. It starts with what happens after that.
Add the steps, then Publish. Publishing tells Telegram to send the bot's messages to Bizomate.
The panel reads Waiting for the first event — Send the bot a message in Telegram; it appears here within seconds.
Set up New button press:
In a workflow, add Telegram · Send a message and, under Buttons, add a button whose Value is not a link — approve:NW-20417. A value that is not an
httpsorhttplink is sent back when the button is pressed, up to 64 bytes. Publish that workflow.In another workflow, open the trigger picker. Under Telegram, select New button press.
In Connection, choose the same bot's connection.
Optionally, in Only this chat, type the chat id.
Add the steps — for example an IF on
{{ trigger.data }}starting with approve — then Publish.The panel reads Waiting for the first event — Press one of the bot's buttons in Telegram; it appears here within seconds.
Test with a real message or press:
- Send the bot a message, or press one of its buttons, in Telegram.
- Within seconds the panel reads Listening — instant — Last event 10:45 · New message · Order NW-20417 is ready, or Button press · approve:NW-20417.
- On Output, select Use the last event. A toast says Sample fetched — Test run starts with it. Unpin it on Output to test with something else.
- Select Test run.
What the trigger gives
New message — each message is one item:
| Field | What it is |
|---|---|
id |
The message's id in the chat. Reply to it, edit or pin it with this. |
chatId |
The chat's id — use it in Chat on a Telegram step to answer in the same chat. |
chat |
The chat's title, or the person's username or first name. |
chatType |
private, group, supergroup or channel. |
text |
The message's text, or a photo's or document's caption. |
date |
When it was sent, in UTC — 2026-10-02T09:30:00Z. |
fromId |
The sender's Telegram id. Empty for a channel post. |
fromName |
The sender's first and last name — Rohan Mehta. |
fromUsername |
The sender's username, without the @. |
updateId |
Telegram's number for the update. |
New button press — each press is one item:
| Field | What it is |
|---|---|
data |
The button's value — approve:NW-20417. |
messageId |
The id of the message the button was on — use it with Edit a message to show the answer. |
chatId |
The chat it was pressed in. |
fromId |
The Telegram id of the person who pressed it. |
fromName |
Their first and last name — Asha Raghunathan. |
fromUsername |
Their username, without the @. |
queryId |
Telegram's id for the press. |
Use them in later steps as {{ trigger.text }}, {{ trigger.data }} and so on.
Finding a chat id
- From the trigger: leave Only this chat empty, publish, send a message in the chat, select Use the last event, and read
chatIdon Output. Then type it in Only this chat and publish again. - From a Telegram step, before a Telegram trigger is published on this bot: the Chat list on Send a message shows chats the bot has seen. A group's id is negative; a channel's or large group's starts with
-100.
What happens next
- Each message or press starts one run, of the live version, in Production. The run is named New message · … with the start of the text, or Button press · … with the value.
- The button stops spinning at once. Bizomate answers each press as it arrives, so Telegram does not keep the person waiting while the workflow runs.
- Publishing sets Bizomate as the bot's only webhook in Telegram. Unless the trigger is changed or the workflow deleted, it stays.
- Changing to another trigger and publishing, or deleting the workflow, takes the webhook away again — when no other workflow on the same bot still listens.
Good to know
- One bot, one address. Telegram sends a bot's updates to one place. Every workflow in the workspace with a Telegram trigger on the same connection shares it, and each takes what its settings ask for — so one bot can start a New message workflow and a New button press workflow at once.
- Another service using the same bot stops getting its messages. Publishing replaces any webhook set for the bot elsewhere. Use a separate bot for Bizomate.
- While a Telegram trigger is published, the Chat list in Telegram steps cannot load — Telegram gives a bot's updates to its trigger while one is published. Use a value — the chat id from the trigger. Select Use a value and type the id, or
{{ trigger.chatId }}. - In a group, privacy mode limits what the bot sees. With it on — Telegram's default — the bot gets only commands, replies to its own messages and messages that mention it. Turn it off in @BotFather to take every message; see Connect Telegram.
- Edited messages do not start a run. Only new messages, channel posts and button presses come through.
- Text contains ignores capitals and matches anywhere in the text or caption. Only this chat must match the id exactly, minus sign included.
- A button whose value is a link opens it and never reaches the trigger.
- Every call is checked. Telegram sends a secret header made for this address on each update; an update without the right one is answered 401 and starts nothing.
If something goes wrong
| What you see | Why | What to do |
|---|---|---|
| Not listening — Telegram would not take Bizomate's address: Telegram refused: Unauthorized. Check the connection's details on Connections. Fix it, then publish again. | The bot's token was changed with /revoke. |
Select Reconnect, paste the new token, then publish again. |
| Not listening — … The connection has no bot token. Reconnect it on Connections and fill it in. … | The connection's token is missing. | Reconnect the connection with the token, then publish again. |
| Not listening — … Could not reach Telegram: … or … Telegram did not answer within 30 seconds. … | Telegram could not be reached when you published. | Publish again in a few minutes. |
| Waiting for the first event stays after a message in a group | Privacy mode is on, and the message did not mention the bot. | Mention the bot, or turn privacy mode off in @BotFather. |
| Messages stopped arriving after someone set up the bot elsewhere | Another service set its own webhook on the bot. | Use a separate bot for that service. Then change Only this chat or Text contains, publish, change it back and publish again, so Bizomate sets the webhook once more. |
| Pressing a button does nothing | The button's value is a link, or no workflow with New button press on that bot is published and switched on. | Use a value that is not a link, and publish the button-press workflow. |
| A message did not start a run | Only this chat or Text contains left it out, or the workflow is switched off. | Check the two fields and the workflow's switch. |