GLOSSARY

What is a Business Connection?

A business connection is the link a Telegram Business account creates when it authorises a bot to read and answer its private chats, identified by a business_connection_id that the bot passes on every call it makes on that account's behalf. It is Telegram's official, revocable alternative to running automation on a personal account with a session string.

Free forever plan · No credit card required · Cancel anytime

Quick definition

A business connection is the link a Telegram Business account creates when it authorises a bot to read and answer its private chats, identified by a business_connection_id that the bot passes on every call it makes on that account's behalf. It is Telegram's official, revocable alternative to running automation on a personal account with a session string.

In a single sentence: the owner lends a bot their inbox, and can take it back in one tap.

What it means

For most of Telegram's history there were exactly two ways to automate a conversation. You could build a bot, which had its own identity and could never speak as a person. Or you could run a userbot, which spoke as a person by logging into their account with a session, and carried every risk that implies.

Telegram Business added a third option. A Business account, which is a Premium user account with the Business feature set enabled, can connect a bot to its own private chats. The bot then reads those conversations and replies in them, and the replies go out under the person's own name rather than the bot's.

The link between the two is the business connection. Telegram issues it a string identifier, delivers it to the bot as an update, and the bot carries that business_connection_id on every call it makes on the account's behalf. No session, no phone number, no login code, and nothing the bot can keep using after the owner revokes it.

How it is set up

The flow belongs entirely to the account owner, which is the point. In Telegram, they open Settings, then Telegram Business, then Chatbots, and enter the bot's username. During that step they also choose the scope: all chats, all except a chosen few, or only a chosen few, and whether existing conversations are included or only new ones.

The moment they confirm, the bot receives a business_connection update carrying the connection id, the user it belongs to, a user_chat_id the bot can use to message the owner directly, an is_enabled flag and the rights granted. Storing that payload is the whole onboarding step: there is nothing to verify, no OAuth round trip and no credential to protect.

The four updates

Business traffic arrives on its own update types, separate from ordinary bot updates, which means an existing bot does not accidentally start receiving somebody's private conversations.

  • business_connection: created, enabled, disabled, or rights changed. This is your connection lifecycle.
  • business_message: a new message in a connected private chat.
  • edited_business_message: an edit.
  • deleted_business_messages: deletions.

One detail matters enormously for CRM work and is easy to miss: messages the owner sends themselves also arrive as business_message updates. The bot therefore sees both halves of every conversation, not just the inbound half. That is what makes it possible to build a genuine thread, attribute replies correctly, and detect that a human has already answered before an AI agent jumps in.

What it deliberately cannot do

The boundaries are the feature, not limitations to be worked around.

Private chats only. Groups and channels the owner belongs to are outside the connection. Whatever their team argues about in a group chat stays invisible to your bot.

No cold outbound. The connection covers conversations that exist and conversations people start. There is no method that turns it into a way to message a stranger. If first contact is your requirement, this feature will never serve it.

Scoped by the owner. They choose which chats are in scope, and they can change that later.

Revocable, instantly. Removing the bot ends the connection. Compare that with a session string, which cannot be scoped, does not expire, and grants total account access until somebody thinks to terminate it.

Why it matters

In a large part of the world, and certainly in Turkey, small businesses run on personal Telegram accounts. The owner's number is the business number. Customers write to them directly and expect an answer within minutes, including at 11pm.

Until business connections existed, serving that customer with software meant asking them to hand over a session for their personal account, and that is a request most people should refuse. It also put the vendor in an uncomfortable position: holding a credential that reads a stranger's private messages, with no scoping and no expiry.

A business connection makes the same product possible without that trade. The owner grants a scoped, revocable permission through Telegram's own interface. The CRM gets a clean event stream covering both sides of every conversation. An AI agent can draft or send replies, hand off to a human, and stop the moment the owner types something themselves. Nobody's account is at risk of a ban, because no automation is pretending to be a person on the wire.

The honest limitation is reach. It requires Telegram Premium on the customer's side, and Premium adoption varies enormously by market. For a product serving small businesses, that subscription is a real factor in the sales conversation and a real source of churn when it lapses.

Common mistakes

  • Assuming can_reply is still the only gate. Newer Bot API versions carry a granular rights object. Read the rights off the connection instead of assuming.
  • Dropping owner-sent messages. They arrive as business_message too, and without them your thread has holes and your AI agent talks over a human.
  • Forgetting the business_connection_id on send. Without it the message goes out as the bot, from the bot, which is not what anybody wanted.
  • Treating a disabled connection as an error to retry. It is a lifecycle state. Stop the queue and ask the owner to reconnect.
  • Ignoring the Premium dependency. A lapsed subscription silently ends the integration. Detect it and tell the customer what happened.
  • Marketing it as outbound. It is an inbox automation feature. Selling it as lead generation guarantees a refund conversation.

Related concepts

  • Telegram Bot API: the API surface business connections extend.
  • Userbot: the risky alternative this feature exists to replace.
  • Session string: the unscoped, unexpiring credential you no longer need to ask for.
  • AI agent: what most teams actually put behind a business connection.
  • Webhook: how the four business update types reach your server.
  • Peer ID: the identifiers inside every business message payload.

How Pinlyx handles it

Pinlyx stores the connection payload against the workspace, watches the rights on every business_connection update rather than caching them once, and always sends with the connection ID so replies leave under the owner's name. Owner-sent messages are ingested as part of the same thread, which means the AI agent can see that a human has already answered and stay quiet. Disabled connections stop the send queue and raise a reconnect prompt rather than retrying, and a lapsed Premium subscription is reported as what it is rather than as a mysterious failure. The resulting conversations land in the same unified inbox as every other channel in the Telegram CRM.

Cheat sheet · the payloads

Connect, receive, reply.

Three payloads cover the entire integration. The third one is where most first attempts go wrong.

// 1. The owner adds your bot in Settings > Telegram Business > Chatbots
{
  "update_id": 481920371,
  "business_connection": {
    "id": "BQAAAB7X9k2p...",
    "user": { "id": 641307856, "first_name": "Ayse", "username": "ayse" },
    "user_chat_id": 641307856,
    "date": 1757251200,
    "is_enabled": true
  }
}
// Store the id against the workspace. That is the whole onboarding step.

// 2. A message in one of the owner's private chats
{
  "update_id": 481920372,
  "business_message": {
    "message_id": 4471,
    "business_connection_id": "BQAAAB7X9k2p...",
    "from": { "id": 998812345, "first_name": "Customer" },
    "chat": { "id": 998812345, "type": "private" },
    "date": 1757251260,
    "text": "Are you open on Sunday?"
  }
}
// Messages the OWNER sends arrive here too. Ingest both sides.

// 3. Replying AS the owner. The id is what makes this work.
POST /bot<token>/sendMessage
{
  "business_connection_id": "BQAAAB7X9k2p...",
  "chat_id": 998812345,
  "text": "Yes, 10:00 to 16:00 on Sundays."
}
// Omit business_connection_id and the message goes out as the bot instead.

Owner-granted

Set up inside Telegram, scoped by the owner, revoked in one tap.

Both sides delivered

Owner messages arrive as updates too, which is what makes a real thread possible.

Private chats only

No groups, no channels, and no way to contact a stranger.

Decision table · what it can and cannot do

Six questions people ask before connecting a bot.

Can the bot message someone the account never talked to?

No

The connection covers existing and new private conversations of that account. It is not an outbound channel, and it never becomes one.

Can the bot see the account's groups and channels?

No

Private chats only. Group conversations stay outside the connection entirely, which is a meaningful privacy boundary.

Does the customer see that a bot replied?

Partly

Messages go out under the business account's name. Telegram marks messages sent through a connected bot, so the interaction is not disguised as purely human.

Can the account owner limit which chats are shared?

Yes

The setup flow lets the owner include all chats, exclude specific ones, or share only a chosen set, and choose whether existing chats are included at all.

Can the owner revoke it?

Yes, instantly

Removing the bot in Telegram Business settings ends the connection. There is no credential left behind for you to keep using.

Does it need Telegram Premium?

Yes

Telegram Business features sit behind Premium. If the subscription lapses, the connection stops working, which is a real churn risk to design around.

Integration checklist

Six things to build into a business connection integration.

  • Store the whole connection object, not just the id, and refresh it on every business_connection update.
  • Read the granted rights before each action rather than caching them at connect time.
  • Ingest owner-sent messages so the thread is complete and the AI agent knows a human replied.
  • Pass business_connection_id on every send, or the message leaves as the bot.
  • Treat a disabled connection as a lifecycle state: stop the queue, prompt a reconnect.
  • Detect a lapsed Premium subscription and say so plainly instead of showing a generic failure.
Watch out for

This is an inbox feature being sold as an outreach feature.

Business connections are frequently marketed as a way to "automate Telegram outreach", which they are not. A connected bot can answer people who write in and can continue conversations that already exist. It has no mechanism for contacting anyone else, and no amount of engineering will add one, because the absence is the safety property that makes the feature acceptable to Telegram in the first place. Reaching new people on Telegram still requires a user account over MTProto, and that is a separate decision with separate risks.

Business connections: FAQ

What a Telegram Business integration can actually do, and where the line is.

It is the authorisation a Telegram Business account grants to a bot so that the bot can see and reply to that account's private chats. The owner adds the bot in Settings, then Telegram Business, then Chatbots. Telegram sends the bot a business_connection update carrying an id, and from then on the bot passes that business_connection_id on every send it makes as the account. Nothing about it involves a phone number, a login code or a session.
Completely, in the ways that matter. A userbot logs into a real account with a session string, is indistinguishable from a person on the wire, can do cold outbound, and carries genuine ban risk. A business connection is an official permission granted by the account owner, is limited to private chats, cannot initiate contact with strangers, and can be revoked in one tap. You give up outbound capability and gain a supported integration that will not get anyone banned.
Four, and they are separate from the ordinary bot updates. business_connection fires when the connection is created, enabled, disabled or its rights change. business_message delivers a new message in a connected private chat, including messages the account owner sends themselves. edited_business_message covers edits, and deleted_business_messages covers deletions. Because owner-sent messages arrive too, the bot sees both halves of the conversation, which is exactly what a CRM needs to build a real thread.
The original Bot API 7.2 shape carried a single can_reply boolean on the connection object. Newer Bot API versions replaced it with a granular rights object, so the account owner can grant or withhold individual capabilities rather than flipping one switch. Always read the rights off the connection object rather than assuming what you are allowed to do, because the owner can change them at any time and you will be told through a business_connection update.
Two ordinary paths lead there. The owner removes the bot in Telegram Business settings, or their Premium subscription lapses and the Business features switch off. In both cases the connection stops being usable and calls that pass the old business_connection_id fail. Treat it as an expected state, not an exception: mark the workspace as disconnected, stop queued sends for that account, and prompt the owner to reconnect rather than retrying in a loop.
No, and that is by design. The connection gives a bot access to conversations that already exist plus new ones that people start, and provides no mechanism at all for contacting a stranger. If your requirement is first contact, this feature cannot serve it at any level of effort, and the only alternative on Telegram remains a user account over MTProto with all the pacing, warm-up and account risk that entails.
Ready to ship

Answer every Telegram chat without handing over an account.

Pinlyx connects through Telegram Business, keeps both sides of the thread, and lets an AI agent step back the moment a human replies.

Free forever plan · GDPR-ready · No credit card required

We value your privacy

We use cookies to improve our site, analyze traffic, and personalize ads. You can accept all, reject non-essential, or customize your choices. Read our Cookie Policy.