Skip to main content
Customers message a Telegram bot; the messages become conversations in your inbox; your replies go back to the same chat. They never leave Telegram, and you never leave your inbox. The bot is yours, not ours. You create it in Telegram, and you can take it back at any time.

What you need

A Telegram account, and two minutes. There is nothing to host and nothing to install. Only an Owner can connect it.

Set it up

1

Add the channel

In the dashboard, go to Channels and pick Telegram.
2

Say whether you already have a bot

The steps differ, so the dialog asks first. Creating one uses /newbot; using one you already have uses /mybots.
3

Get the token

Message @BotFather in Telegram and follow the steps the dialog shows you. It ends with a token that looks like 123456789:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw.
4

Paste it and press Connect bot

We check the token with Telegram before saving it. If Telegram does not recognise it, nothing is stored and the dialog tells you.
The Telegram window for a bot you already have: where to find its token, and the box to paste it in
That is the whole setup. Send your bot a message to confirm it works: it should appear in your inbox within a second or two.

Making a bot

If you do not have one yet:
  1. Open Telegram and message @BotFather.
  2. Send /newbot. It asks for a display name, then a username ending in bot.
  3. It replies with your token.
The username is what customers type to find you, so pick something they will recognise. It cannot be changed later without making a new bot.

Using a bot you already have

  1. Message @BotFather.
  2. Send /mybots and choose the bot.
  3. Tap API Token and copy it.
A bot can only send its messages to one place. If this bot is already connected to another tool, connecting it here stops that tool receiving anything. Use a separate bot if you need both.

What we do with your token

We store it encrypted, and we never show it back to you, in the dashboard or anywhere else. There is no API that returns it. We use it only to run the bot for you: we ask Telegram to deliver its messages to us, send your replies and the Start reply back, fetch attachments and profile pictures, and check the bot still points at us. Disconnecting undoes all of it. If you ever want to be certain, revoke the token in @BotFather. That invalidates our copy along with every other.

Direct messages only

One-to-one chats become conversations. Group chats are ignored. A group has one chat id and many people in it, so there is no single customer to attach the conversation to, and everyone in the room would share one record. Telegram also hides most group messages from bots by default.

What arrives

Text, photos, files, voice notes, audio, video and stickers. A caption on a photo or a file is used as the message text. Photos and PDFs are stored alongside the message, up to 10MB each, the same as everywhere else in the product. Voice notes, audio, video and other files are not stored. An internal note names each one, so your team knows something was sent and can ask for a screenshot or a PDF instead. We stop at images and PDFs because almost every support attachment is a screenshot, and every file type we accept is one we have to store and serve safely. A message with no words, like a photo on its own, still becomes a conversation. It gets a short placeholder line, like “(sent a photo)”, so the thread is not blank. Locations, contact cards and polls are ignored. Edits and reactions do not arrive either: a customer who edits a message after sending it has changed their copy, not yours.

Which conversation a message joins

Telegram has no threads, just one continuous stream per chat. So a new message joins the customer’s open conversation if they have one. If every conversation with them is resolved or closed, it starts a new one. That means a customer coming back a month later opens a fresh conversation rather than reviving a finished one.

The Start button

Every new Telegram chat begins with the customer pressing Start, which sends the text /start to your bot. That does not become a conversation. The bot replies with a short line inviting them to ask their question, and waits. A ticket whose entire content is /start is one your team would have to close on every first contact. Only a bare /start is treated this way. A link that opens your bot with something after it, like t.me/your_bot?start=pricing, sends /start pricing, and that does become a conversation.

Customising the Start reply

By default the bot answers Start with: “Hi! Ask your question here and someone from (your workspace name) will get back to you.” To say something else, open Channels → Telegram and fill in Reply to Start, then press Save changes. Up to 300 characters, sent to everyone. Clear the field to go back to ours.

Their profile picture

Where a customer has a Telegram profile photo, we fetch it whenever they start a new conversation and show it beside their name. A newer photo replaces the old one. People with no photo keep the initials circle. The image is stored privately and shown through a short-lived signed link, not a public URL. Erasing a customer deletes the file along with the record.

Replying

Your reply goes back to the same chat. Three things are worth knowing. It is plain text. Telegram shows what you type exactly as typed, so formatting like **bold** arrives with the asterisks. Long replies are split. Telegram caps a message at 4096 characters, so a longer reply arrives as several messages, broken at a line where it can be. Only the text goes. Files you attach to a reply stay on the conversation in miniDesk. If the customer needs one, send a link.

A reply that did not arrive says so

If Telegram refuses a reply, you get an internal note on the conversation saying it was not delivered, and why: the customer blocked your bot, Telegram no longer accepts its token, or the bot is no longer connected. The note is there so nobody on your team believes the customer has an answer they never got.

Automated replies

If you have AI auto-reply switched on, Telegram follows it like any other channel. Once a bot is connected, the Reply automatically on list under AI Agent → Settings gets a Telegram switch. It starts on, so you can turn it off for Telegram and leave it on for email, or the reverse.

The confirmation message

When the AI is not answering a new conversation, the customer hears nothing until someone on your team replies. Switch on Confirmation message in Channels → Telegram to send them one line straight away, so they know it arrived. It goes once, when a conversation starts, and only if the AI did not reply on its own. Leave the text as it is to send ours: “Thanks for your message! We’ll get back to you as soon as we can.” Or write your own, up to 500 characters. Clear the field to go back to ours. It is off until you switch it on. Your team does not see it as a message in the thread. It is listed as Confirmation sent in the conversation’s history, and the conversation still counts as unanswered. This is separate from the Start reply. Start is answered before the customer has asked anything; the confirmation answers their first real message.

On the free plan

On the free plan, the first message we send in each conversation ends with the line “Sent from miniDesk.ai”. That is the confirmation message if one went out, or the first reply if not. The Start reply never carries it. Paid plans never add it, and upgrading removes it straight away. See Branding and white labeling for everything a paid plan removes.

The states

Once a bot is connected, the Channels screen shows which state it is in: A customer pressing Start does not count. Only a real message moves the channel to Live. Reconnect needed is the one worth understanding. Because a bot has only one webhook, connecting the same bot to another tool silently takes it away from us. Telegram reports no error and neither does the other tool; your messages just stop arriving. We ask Telegram whenever you open the Channels screen, so the row can tell you. Paste the token again to point it back here. The channel then waits for the next message before it says Live again.

Pausing and disconnecting

Pausing is the Accept new conversations switch. It unhooks the bot at Telegram and keeps your setup. Switching it back on hooks it up again. Nothing customers sent while it was off is picked up later. Disconnecting unhooks the bot and forgets the token, along with your Start reply and confirmation message. The bot itself is untouched and stays yours, so you can connect it here again or point it at something else. Conversations that already arrived stay in your inbox either way. They are your support history, not part of the connection.

Through the API

Conversations that start on Telegram have source: "telegram" in the REST API. Their requesters are never verified: Telegram vouches that an account exists, not that it belongs to one of your customers.