---
title: Telegram
description: Configure Telegram as a chat provider in Notiflows
---

Telegram integration enables notifications via the Telegram Bot API, delivering messages to users and groups on Telegram.

## Configuration

To create a chat channel with Telegram, configure the following:

| Field | Required | Description |
|-------|----------|-------------|
| Bot Token | Yes | Bot token from BotFather |

## Prerequisites

Before configuring Telegram in Notiflows:

1. A Telegram account
2. A Telegram bot created via [@BotFather](https://t.me/botfather)

## Creating a Telegram Bot

1. Open Telegram and search for **@BotFather**
2. Send `/newbot` and follow the prompts to name your bot
3. BotFather will reply with your **bot token** (e.g., `123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11`)
4. Copy the token — you'll need it for the Notiflows configuration
5. Optionally, send `/setdescription` to set a description for your bot
6. Add the bot to any group or channel where it should send messages

## Setup in Notiflows

1. Navigate to **Channels** in your project
2. Click **Create Channel**
3. Select **Chat** as the channel type
4. Select **Telegram** as the provider
5. Paste your Bot Token
6. Save the channel

## User Channel Settings

To send Telegram notifications to a user, set their chat ID via the Admin API:

```bash
curl -X PUT /api/admin/v1/users/:user_external_id/channel-settings/:channel_id \
  -d '{ "settings": { "chat_id": "123456789" } }'
```

| Field | Description |
|-------|-------------|
| `chat_id` | Telegram chat ID for the user, group, or channel |

To find a chat ID:
- For **users**: the user can message your bot, then check `getUpdates` API
- For **groups**: add the bot to the group, send a message, and check `getUpdates`
- For **channels**: use the channel's `@username` prefixed with `@`, or the numeric ID

## Templates

Chat templates support two content types:
- **Markdown** — Telegram MarkdownV2 formatting
- **Plain text** — Simple text messages

Use Liquid templating for dynamic content:

```liquid
New order from {{ actor.first_name }}: #{{ data.order_id }}
Total: {{ data.total }}
```

Available variable contexts:
- `recipient.*` — Recipient user data
- `actor.*` — User who triggered the notification
- `data.*` — Custom payload passed when triggering the notiflow
