Node telegram
The telegram node provides integration with the Telegram Bot API. It allows the flow to send messages to chats and channels, display inline buttons, handle button presses, and show pop-up notifications to the user.
Settings for the telegram node

1. botToken
The token for your Telegram bot, obtained from @BotFather.
Supports Mustache — the token can be stored in a flow variable and substituted using {{variable}}.
Example:
{{flow.telegramToken}}
2. chat_id
The identifier of the chat or channel where the message will be sent.
Supports Mustache. If the field is left empty, the backend will automatically take the value from msg.payload.message.chat.id — this is convenient when replying to an incoming message from a user.
Example:
{{payload.message.chat.id}}
3. text
The text of the message being sent.
Supports Mustache — you can dynamically insert data from msg.
Example:
Your order №{{payload.orderId}} has been successfully placed!
4. parseMode
The text formatting mode for the message. Available options:
- none — no formatting, the text is sent as is.
- Markdown — basic Markdown from Telegram (v1).
- MarkdownV2 — an extended version of Markdown with support for spoilers and other elements.
- HTML — HTML markup (
<b>,<i>,<code>,<a>, etc.).
5. replyMarkup
The builder for inline buttons under the message. Buttons are organized into rows: each row contains one or more buttons.
For each button, the following are specified:
- Text — the label of the button that the user sees.
- callback_data — the value that will be sent to the webhook in the
msg.payload.callback_query.datafield when the button is pressed. This value can be used to determine which button was pressed and direct the flow to the appropriate branch via a Switch node.
Example structure:
Row 1: [Confirm | callback_data: confirm] [Cancel | callback_data: cancel]
Row 2: [More details | callback_data: details]
6. callbackQueryId
The identifier of the callback request — needed to respond to the pressing of an inline button.
Supports Mustache. If the field is left empty, the value is automatically taken from msg.payload.callback_query.id.
Example:
{{payload.callback_query.id}}
7. showAlert
Checkbox. Determines the type of notification when responding to a button press:
- Off — a short toast pop-up is shown (disappears automatically).
- On — a modal window with a notification is shown, which the user must close manually.
8. notificationText
The text of the notification that will appear in response to pressing the inline button.
The field is displayed in the form only when showAlert is enabled.
Supports Mustache.
Example:
Your choice has been accepted: {{payload.callback_query.data}}
Usage Examples
Example 1: Sending a message about a new order
Flow:
[events: order_created] ---> [telegram]
Node settings:
- botToken:
{{flow.telegramToken}} - chat_id:
{{flow.adminChatId}} - text:
New order №{{payload.order.id}} from {{payload.order.userName}}. Total: {{payload.order.totalPrice}} rubles. - parseMode:
none
Result:
When a new order is created, the bot will send a notification to the admin chat.
Example 2: Message with confirmation buttons
Node settings:
- chatId:
{{payload.message.chat.id}} - text:
Do you confirm the order? - replyMarkup:
Row 1: [Yes, confirm | confirm] [Cancel | cancel]
Result:
The user will receive a message with two buttons. Pressing a button will send callback_data to the webhook, where it can be processed by a Switch node.
Example 3: Response to button press with notification
Flow:
[http in] ---> [switch: callback_data == "confirm"] ---> [telegram: response with notification]
Node settings:
- callbackQueryId: (leave empty — taken from
msg.payload.callback_query.id) - showAlert: enabled
- notificationText:
Order confirmed!
Result:
A pop-up will be displayed to the user with the text "Order confirmed!", which must be closed manually.