In this article
The row of buttons under a channel post is not a formatting option. Write a post in the Telegram app and you will not find a control that adds one, because there isn't one: a post with buttons was sent by a bot.
That single fact carries most of this step. It tells you what you have to set up before you can use them, what you give away by setting it up, and — from the reader's side — how to treat a message that arrives with a line of blue underneath it.
What you will be able to do after this step
- check_circle Say why a post has buttons and what that implies about who sent it.
- check_circle Tell the four kinds of button apart and know which ones rot.
- check_circle Check where a button goes before pressing it.
- check_circle Lay one out so that anything gets pressed at all.
smart_toy Buttons mean a bot, and a bot means a trade
To publish a post with buttons you create a bot, make it an administrator of your channel with permission to post, and send the message through it rather than typing it into the app. Step 086 covers the making of one. What matters here is what the arrangement costs, because three consequences follow and people notice all three late.
Whatever sends those messages can post anything, at any time. A bot with posting rights is not restricted to the messages you meant it to send. If it is something you wrote, that is a matter of your own care; if it is a third-party posting service, your channel's voice now belongs partly to software you do not run and cannot inspect. That can be a perfectly reasonable trade — it is still a trade, and the way back is removing the bot's rights and reissuing its token.
Only the bot that sent a message can edit it. This is how you fix a dead link in a two-year-old post, which is genuinely useful. It is also why losing the bot, or the token, freezes every post it ever sent with whatever buttons they had. Before you route a channel's publishing through anything, know where that token lives and who else has it.
A post from a bot looks exactly like a post from the channel. Readers cannot tell and have no reason to care, which is fine. It also means every mistake the automation makes is published under your name and read as yours.
apps Four kinds of button, and which ones rot
They look identical and behave nothing alike. The useful distinction is what each one needs to be alive afterwards.
A link button opens an address. Nothing has to be running for it to work — not the bot, not a server of yours — so it keeps working for as long as the destination does. This is the durable kind, and for a channel post it is usually the right kind.
A button that opens a page inside Telegram launches a mini app in a panel over the chat. You are already identified to whatever is on the other side, which is the convenience and the cost at once; Step 088 is the full treatment. It needs that page to still exist.
A button that tells the bot something sends a signal back to the bot and waits for it to respond. It works while that bot is running and does nothing at all once it stops — which is what a tap on an abandoned old post feels like: no error, no explanation, nothing.
A button that hands the reader a message to forward opens their chat picker with text you wrote in it, which they then send under their own name. Everything about that sentence is the point, and it is covered below.
You are writing a channel post in the Telegram app and want a "Read the report" button under it. Where is the control?
The official apps do not offer a button composer for channel posts, and no setting turns one on. Every post you have seen with buttons underneath it was published by a bot that holds posting rights in that channel. That is worth knowing in both directions: it tells you what you have to build before you can do it, and it tells you something about any channel whose posts carry buttons — somebody there has given software the ability to publish. If the buttons are the only reason you would add a bot, ask first whether a plainly written link in the text would do the same job with none of the exposure.
A button says "Open the March report". How do you find out where it actually goes?
A button label is free text. The author types whatever they like and points it wherever they like, and nothing checks that the two agree — the same property as a link with custom display text from Step 052, in a form that looks more official because it is rendered as a control rather than as writing. Press and hold, and the address appears. Do it whenever a button asks for anything more consequential than reading, and note that tapping first and reading afterwards is not the same thing: by then you have already arrived, and on a page that wants to look like somewhere you trust, arriving is most of the trick.
A button on a post from two years ago does nothing at all when tapped. What happened?
Nothing expired. Buttons that ask the bot to do something depend on that bot being alive to answer, and when the service behind it is switched off the button stays on the post looking perfectly functional while doing nothing. Plain link buttons do not have this problem, because no one has to be listening for an address to open. The practical rule for anything you publish that should still work in a year — the subscribe link, the documentation, the archive — is to make it a link rather than something that requires your infrastructure to answer.
grid_view Layout, and why fewer is better
Buttons sit in rows, and a row on a phone is narrow. Two across is the practical maximum; three produces labels truncated into meaninglessness, and the truncation happens on exactly the devices most of your readers use.
Every additional button lowers the chance that any one is pressed. A single button is an instruction. Four buttons is a decision, and a decision taken while scrolling is usually taken by scrolling past. If there is one thing you want a reader to do, it should be the only thing offered.
Put the important link in the text as well. A button is one line of colour that skimmers miss, and it does not come along when somebody copies the post, quotes part of it, or reads it somewhere the buttons are not rendered. The text survives handling; the buttons are attached to that one message in that one place.
The share button's sentence is written by you and sent by them. Whatever you put in it appears in your reader's chat, under their name, apparently in their words. Write it the way they would write it: short, plain, first person, and not boastful. Anything that reads like marketing gets sent once by three people and then never again, because nobody wants to look like they wrote it.
touch_app Try it now — five minutes
Four steps. The first takes ten seconds and is the one worth keeping.
- Find a post with buttons and press and hold one Read the address. Do it a few times in different channels, and the gap between labels and destinations stops being abstract.
- Open your own channel's administrator list Write down every bot on it and what it is for. Remove the ones nobody can account for.
- Rewrite one label as the name of its destination Take your most-used button and make the text say where it goes. It is a one-minute change with a permanent effect.
- Tap the buttons on your oldest automated post If nothing happens, you have just found the difference between a link button and one that needs a bot — and a post to fix.
shield_person The reader's side, in one habit
This step has a security lesson in it that is worth separating from the publishing advice, because it applies to people who will never run a channel.
A button looks more official than a link. It is rendered as a control, in the platform's own styling, attached to a post from a channel you chose to follow — and none of that has anything to do with where it goes. The author wrote the words on it. In a channel that has been compromised, or in a forwarded post from a channel you have never heard of, that rendering is doing work no one earned.
The habit is a press and hold before anything that is not simply reading. A payment, a wallet connection, a login, a form asking for details, a download. It costs a second, it is available everywhere, and it defeats the entire category of attack that relies on a convincing label. Everything else in this curriculum about verifying what you are looking at — Step 077 on payments, Step 088 on mini apps — assumes you know where you landed, and this is how you know.
help Common questions at this stage
Can I add buttons to a post I already published by hand?
No. A message can only be edited by whoever sent it, and buttons only exist on messages sent by a bot, so a post you typed yourself can never acquire them. The workable version is to decide in advance which posts go out through the bot — usually the recurring, structural ones — and write everything else normally. Discovering afterwards that you wanted a button is a reason to write a follow-up post, not to rebuild your publishing.
Do buttons survive a forward?
Link buttons generally travel with the post, which is worth thinking about before you put anything audience-specific on one — a "claim your place" button forwarded into a group is now being offered to people it was not meant for. Buttons that talk back to a bot behave less predictably, because the bot receiving the tap has no idea who this person is or which conversation they came from. If a post is likely to be forwarded, assume the buttons will be pressed by strangers.
How many buttons is too many?
More than two in a row is too many on a phone because the labels truncate, and more than about four in total is usually a sign the post is trying to do several jobs. The honest test is to ask what you would keep if you were allowed only one. That answer is almost always the post's actual purpose, and the other three were there because they were easy to add.
Can a button open a specific place in another chat?
Yes — any address Telegram understands works, including links to channels, individual posts and bots with a parameter attached. That last one is how attribution works: the same bot can be given a different tag per button so you can tell which one people arrived through, which is Step 083's subject. The thing to avoid is pointing a button at a private chat or a room the reader cannot open, which produces a dead end with no explanation.
Is it worth adding a bot to my channel just to get buttons?
For most channels, no. You would be adding a permanent publishing credential to solve a presentation problem that a clearly written link in the text solves for free, and the link has the advantage of surviving copying, quoting and forwarding. The case changes when the bot is doing something else useful anyway — scheduling, automated posting, a shop — at which point the buttons come along at no extra exposure.
Can I see how many people pressed a button?
Not from the channel's own statistics, which count views and reactions rather than taps. Buttons that talk back to your bot can be counted by the bot, and link buttons can be distinguished by giving each one a different destination or parameter. Either way the counting is yours to set up, and it is worth being clear about what a tap actually tells you: it measures interest at the moment of reading, not whether anybody did the thing on the other side.
At a glance
- 1Buttons mean a bot
A post with buttons was sent by a bot with posting rights.
- 2Four kinds
Link buttons keep working; others need the bot to stay alive.
- 3Check the address
Press and hold a link button before you trust it.
Updated