> ## Documentation Index
> Fetch the complete documentation index at: https://boundbot.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Telegram

> Connect a Telegram bot token and manage Telegram conversations in BoundBot.

export const BrowserWrapper = ({src, alt, title, description, height = '280px', caption, imgStyle = {}, children, imagePadding = '0px'}) => {
  const legacyDocsImagePrefix = '/images/';
  const productionDocsImagePrefix = '/docs/images';
  const rawSrc = typeof src === 'string' ? src : src && (src.src || src.default) || '';
  const imageSrc = rawSrc.startsWith(legacyDocsImagePrefix) ? `${productionDocsImagePrefix}/${rawSrc.slice(legacyDocsImagePrefix.length)}` : rawSrc;
  return <Frame caption={caption || alt || title} width="100%">
      <div style={{
    border: '1px solid #e2e8f0',
    borderRadius: '12px',
    overflow: 'hidden',
    boxShadow: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',
    width: '100%'
  }}>
        <div style={{
    backgroundColor: '#f8fafc',
    padding: '10px 15px',
    borderBottom: '1px solid #e2e8f0',
    display: 'flex',
    gap: '6px'
  }}>
          <div style={{
    width: '10px',
    height: '10px',
    borderRadius: '50%',
    backgroundColor: '#ff5f56'
  }} />
          <div style={{
    width: '10px',
    height: '10px',
    borderRadius: '50%',
    backgroundColor: '#ffbd2e'
  }} />
          <div style={{
    width: '10px',
    height: '10px',
    borderRadius: '50%',
    backgroundColor: '#27c93f'
  }} />
        </div>
        <div style={{
    overflow: 'hidden',
    background: '#ffffff',
    width: '100%',
    padding: imagePadding
  }}>
          {src ? <img src={imageSrc} alt={alt || ''} data-docs-screenshot style={{
    ...imgStyle,
    width: '100%',
    minWidth: '100%',
    height: 'auto',
    display: 'block',
    borderRadius: '0px'
  }} /> : children ? children : null}
        </div>
      </div>
    </Frame>;
};

Telegram is available on Starter and above. The setup is direct: select a bot, paste the token from BotFather, and save the channel.

<BrowserWrapper src="../images/telegram-connect.png" alt="Telegram connection modal." caption="The Telegram connection modal with bot selection and token input." />

## Before you connect

Create a Telegram bot with `@BotFather`, then collect:

* the bot token
* the bot username, if you want to store it in BoundBot

## Connect Telegram

1. Open <a href="https://www.boundbot.com/dashboard/channels/telegram" target="_blank" rel="noopener noreferrer"><b>Channels</b> -> <b>Telegram</b></a>.
2. Click **Connect channel**.
3. Select the BoundBot bot to use.
4. Paste the Telegram bot token.
5. Optionally add the bot username.
6. Save the connection.

## Test the channel

After setup:

* open Telegram
* start a chat with the connected bot
* send a test message
* confirm the conversation appears in <a href="https://www.boundbot.com/dashboard/inbox" target="_blank" rel="noopener noreferrer"><b>Inbox</b></a>

## Common issues

* Invalid token: re-copy the token from BotFather
* No inbound messages: make sure you started the bot chat on Telegram
* Wrong bot behavior: check the bot assignment in the channel record

## Related pages

<CardGroup cols={2}>
  <Card title="Channels overview" icon="messages-square" href="/channels/overview">
    Compare Telegram with the other customer-facing channels available in BoundBot.
  </Card>

  <Card title="Inbox" icon="inbox" href="/guides/inbox">
    Confirm Telegram messages appear in the shared conversation queue.
  </Card>

  <Card title="Bots" icon="bot" href="/guides/bots">
    Tune the bot that replies through the connected Telegram channel.
  </Card>

  <Card title="Plans and limits" icon="badge-dollar-sign" href="/reference/plans-and-limits">
    Review Telegram availability and related channel limits by tier.
  </Card>
</CardGroup>
