Home · Telegram · Mailing via Telegram bot to your database
Telegram · newsletter
Mailing via Telegram bot to your database
A promotion, news or reminder comes in a personal chat with the bot to those who launched it and agreed to receive the news. With the client’s name, by tags, immediately or at an appointed time, and the unsubscribe with the word “stop” is processed by the consent script.
Mailings - from the Basic planOnly to those who wrote to the botImmediately or on schedule
What does a bot do to send messages on Telegram?
Consent and unsubscribe - script
The “Consent to mailing list” template asks separately for consent to data processing and to advertising mailings, adds the “рассылка” (mailing) tag only on “Yes” and removes it on the words “стоп” (stop) and “отписаться” (unsubscribe). Mailings to this tag will not reach those who unsubscribed.
Audience by tags
In the “To” field - tags separated by commas: everyone who has at least one of them will be included in the newsletter. Tags are placed by the script on buttons, replies and link tags, or you yourself in the contact card.
Client's name in text
{{name}}, {{phone}} and {{email}} are substituted from the contact card. The name is first taken from the Telegram profile, and “Data collection” with the “Name” option replaces it with what the client himself wrote.
Immediately or on schedule
A mailing without a date will be queued immediately after “Create mailing”. With a date in the “Delayed Start” field, it waits with the status “Scheduled” and joins the queue within a minute of the due date. “Stop” works even before start.
Queue for Telegram limits
Messages are sent one at a time, with a pause after each - no faster than 20 per second with the Telegram limit of about 30. If there are several Telegram bots in the project, a person will receive a newsletter once - from the bot to whom he wrote last.
Delivery counters
Only what Telegram accepted is included in “delivered”, refusals are included in “errors”, and those who have no one to write through are counted separately by CHBT - “without a channel”. Analytics shows how much was delivered by broadcasts over the entire period.
How to start a newsletter in Telegram
-
1
Take the consent template
Click “Use consent template” and register by email: the script will appear enabled in the bot. It works on any plan, and the database with the “mailing” tag is accumulated even before payment.
-
2
Connect Telegram
“Channels” → “Telegram” card → “Connect”: token from @BotFather and “Connect Telegram”. Place the link t.me/your_bot on your website, profile and posts: those who clicked “Start” are included in the database.
-
3
Write a newsletter
From Basic: “Mailouts” → “New Newsletter”. Text with {{name}}, in the “To” field - the “mailing” tag, if necessary, the date in “Delayed launch”. Then “Create a newsletter.”
-
4
Check the total
When sending is completed, refresh the page: the recipients, delivered ones, and errors will appear on the card. Customer responses come to “Conversations” - conversations with new responses have a visible unread counter.
Ready-made script “Consent to mailing list”
First consent to data processing, then consent to advertising from a named sender with “Yes” and “No” buttons: the “рассылка” (mailing) tag only on “Yes”, unsubscribe with the words “стоп” (stop) and “отписаться” (unsubscribe). Works on any plan: the audience builds up even before the first mailing.
Broadcast consent Two separate consents: to data processing and to the mailing. A tag only on “Yes”, unsubscribe with the word “stop”. You send the broadcast itself from your account. Open →Who can the bot write to and where does the database come from?
Telegram allows the bot to write only to those who themselves started a conversation with it: clicked “Start”, followed a link with a tag, or wrote first. This is a Bot API rule, and not a single service can bypass it: everything that promises “distribution via a number database” or “via chats” ends in blocking. Therefore, the mailing base is the bot’s contacts: everyone who wrote to the bot is already in “Contacts” with the name from the Telegram profile, tags and conversation history.
| Who is this man | Will he receive the newsletter? |
|---|---|
| Clicked “Start” via the link t.me/your_bot, from the QR code or wrote code word | Yes, if it has a tag from the “To” field. The contact appears with the first message, the consent tag puts the script |
| I left my phone number on the site, but didn’t log into the bot. | No. Bring him to the bot with a link with a tag https://t.me/ваш_бот?start=promo in a letter or SMS |
| Subscribed to your Telegram channel, did not launch the bot | No: channel subscribers and bot contacts are different lists. A link to the bot is placed in a post or pinned |
| I wrote to the same bot while it was working in another service | If there is a chat_id upload, upload it via “CSV Import” in “Contacts”: the first line is the title name, email, phone, channel, uid, tags, in channel — telegram, in uid — chat_id, tags separated by semicolons. The newsletter will reach those who launched the bot if there is only one Telegram bot in the project |
| Loaded from CSV, but never launched this bot | No. If there is only one Telegram bot in the project, Telegram will refuse and the failure will be included in “errors”; if there are several bots, the contact will be listed as “no channel” |
| Blocked the bot or deleted the account | No: Telegram will return an error, and CHBT will count it as an “error”. There is no point in trying to “reach out” - the person has left |
Why can’t a bot write first and what does the PEER_ID_INVALID error mean? parsing. Connecting a bot - in the help "Telegram connection".
- The newsletter arrives in the chat with the bot - where the contact wrote to him. CHBT does not publish posts to your Telegram channel.
- Empty “To” field—distribution to all project contacts in Telegram, MAX and VKontakte, including without consent. For news, please indicate the consent tag.
- If there are several Telegram bots in the project, the contact will receive the newsletter once - from the bot to which he wrote last.
- We changed the token: we deleted the old channel in “Channels” and connected the same bot again - the previous interlocutors will receive the newsletter through the new channel.
- If the token is revoked in @BotFather, submissions will go to “errors” and the channel will receive an “Error” status.
Consent script and tags step by step
The newsletter itself does not ask the client for anything - it sends the text using tags. Who wants to receive news and who has unsubscribed marks the script. Basis - template “Consent to mailing list”: question with buttons, tag “Yes”, unsubscribe with a word.
| Task | Script block | How to set up |
|---|---|---|
| Ask consent | “Message” with “Yes” and “No” buttons | In the template: “[Organization name] may send you advertising messages — promotions, discounts, new services. Do you agree? You can unsubscribe at any time — just write “stop””. Fill in the name and add how often you will write. Informational messages — timetable changes, order status — are usually not advertising |
| Mark agreement | “Action” → “Add tag” | The “mailing” tag is set only to “Yes”. The “No” button removes the tag |
| Unsubscribe | Triggers “Keywords” → “Remove Tag” | “stop”, “stop” and “/stop” - exact match; “unsubscribe”, “unsubscribe”, “unsubscribe” - according to the occurrence of the word. The word “subscribe” again asks the question of consent |
| Write only in Telegram | “Condition” in the “Channel” field → “Add tag” | Meaning telegram → tag “newsletter-tg”. The messenger in the mailing form is not selected, and “newsletter, tg” in the “To” field is “or”, not “and”: without a separate tag, the text will go to both MAX and VKontakte |
| Interests and sources | “Add a tag” after the button or link label | Button “Haircut” → tag “haircut”, link from advertisement with tag → tag “advertising-September”. One newsletter - one segment - your own text |
| Name for {{name}} | “Data collection” → “Name” | Overwrites the name from the Telegram profile with what the client wrote. It’s convenient if your profile has a nickname or only Latin characters. An empty field will be replaced with an empty line: “Hello, {{name}}!” a contact without a name will become “Hello, !” |
Tags can also be added manually - in the contact card in “Contacts”. How to build a tag system so that in a year you can figure it out - tags as a segmentation system.
- The template is launched at /start. If the bot already has a greeting at /start, the script created earlier will respond: ask for consent via “Deeplink” with a label or by the word “subscribe”.
- A script with an "Any Message" trigger created before the template can intercept the "stop". Make a copy of it, turn it on and turn off the original.
- While the conversation is with the operator or in the “AI agent” with the “Stay in conversation with AI” mode, the triggers are not checked and the “stop” tag will not be removed - this is done manually in the contact card.
- The tags are compared exactly, taking into account the case: “Newsletter” and “newsletter” are different tags.
- The consent script also works on the Free plan: buttons, tags and stop words in it are regular blocks.
Telegram limits, speed and numbers on the card
Telegram limits the bot: approximately 30 messages per second for all recipients together and no more than one message per second in one chat. If it is exceeded, it responds with error 429 with a request to wait, so it is impossible to send 5,000 messages “in one gulp” - some will not arrive. CHBT sends broadcasts in a queue: messages are sent one at a time, with a pause of 50 ms after each, that is, no faster than 20 per second, with a margin up to the limit. One mailing goes on at a time, the next one waits its turn.
| Recipients | No faster than |
|---|---|
| 500 | 25 seconds |
| 2 000 | 1 minute 40 seconds |
| 10 000 | 8 minutes 20 seconds |
The calculation is conditional - this is the lower limit for one pause. In fact, the mailing takes longer: after each message, CHBT waits for a response from Telegram.
| The counter | What does it mean |
|---|---|
| recipients | Contacts with a tag from “To”, which had someone to write through |
| delivered | Telegram accepted the message. Telegram does not tell the bot whether a person has read it |
| errors | Telegram refused: the bot was blocked, the account was deleted, the person did not launch this bot, the response was 429, or there was a network failure. No resending |
| without channel | The tag is suitable, but there is no one to write through: the bot the person wrote to is no longer connected, or there are several Telegram bots, but the contact did not write to any of them. "Recipients" and "errors" are not included |
Measure your response by replies and clicks. The code word in the text (“answer “I WANT”) catches the script with the “Keywords” trigger and puts a tag - using the tag filter in “Contacts” you can see how many people responded. Link with tag t.me/your_bot?start=oct launches a thread with the “Deeplink” trigger, and a campaign with the same tag in "QR campaigns" counts such launches. When the database cools down and there are a lot of errors, it helps reactivation flow.
- Statuses: “Scheduled”, “Dispatching”, “Dispatched”, “Stopped”.
- While the mailing is going on, there are zeros on the card: the numbers are written at the end, and the page itself is not updated.
- “Stop” is triggered before the next message; the one already sent is not recalled.
- “Delayed start” is checked once per minute. The time zone is not selected - time according to the server clock CHBT; Divide audiences from different zones with tags and schedule several broadcasts.
- Do not send the newsletter at night: the notification will wake up the person, and his first action may be to block the bot.
What Telegram newsletters don’t do
The limits are clear before you launch.
- Does not write to phone numbers, groups or channel subscribers who did not launch the bot: Telegram allows the bot to write only to those who themselves started the conversation.
- Does not send pictures, files and buttons - only text, and no longer than 4,096 characters: Telegram will not accept a longer one, and CHBT does not divide it. Paste the link into the text - Telegram will usually show a preview. Variables - only {{name}}, {{phone}} and {{email}}: script variables are not inserted into the mailing list.
- Doesn’t count reads or clicks and doesn’t show who exactly didn’t receive the message—only general counters. Failed submissions are not repeated and there is no real-time progress.
- The created newsletter cannot be changed, deleted, copied or sent to yourself for testing, and the number of recipients is not shown in advance.
- Does not select the messenger and does not exclude tags - only “at least one of the tags”. There are no chains “in a day - in three days” and an A/B test in the section: they are collected in the script using the “Pause”, “Condition” blocks and the “Random branch” action - trigger chains in the bot.
- Does not save the text of the mailing in “Conversations”: the operator will see the client’s response, but not the message itself. There is no built-in unsubscribe - only a script with a safe word.
Available plans
Price - per bot per month: Basic 650 ₽, Business 1,290 ₽. The number of broadcasts and recipients is not limited. On Free, in the “Mailouts” section - “Mailmails are included in Basic and Business” and the “Select plan” button, but the consent template works: the bot responds to 30 different interlocutors per month across all channels together, and contacts with the “mailing” tag are accumulated until payment. A trial day of Business without a card - one per account - also opens broadcasts.
Works with
FAQ
Is it possible to send a newsletter using a database of numbers?
No. Telegram allows the bot to write only to those who have started a conversation with it; the bot will not find a person by phone number. Refer people to the bot with a link with a tag in a letter, SMS or on the website, ask for consent with a template and send it out using the tag.
Will the newsletter reach subscribers of my Telegram channel?
Only up to those who launched the bot. Channel subscribers and bot contacts are different lists: the bot does not see who is subscribed to the channel, and it itself does not publish anything to the channel. Place the link t.me/your_bot?start=channel in your post or pin — whoever clicks “Start” will appear in “Contacts”.
How fast does the mailing go?
No faster than 20 messages per second: after each CHBT pauses 50 ms and waits for Telegram’s response, so as not to hit its limit of about 30 per second. 10,000 recipients - at least 8 minutes, in fact longer. One mailing is going on at the same time, the next one is waiting in line.
Why do some contacts have “errors”?
These are Telegram failures: the person blocked the bot, deleted the account, or never launched this bot - for example, downloaded from CSV. There is no re-sending, and the office does not show who exactly did not receive it. “Without a channel” is different: these contacts had no one to write through, and there was no sending.
Is it possible to attach a picture or button?
No, the newsletter is text only with {{name}}, {{phone}} and {{email}}. Paste the link into the text. Instead of a button, give a link labeled t.me/your_bot?start=oct: clicking will launch a script branch with the “Deeplink” trigger, and it will already have buttons.
How can a client unsubscribe?
A word from the “Consent to mailing list” template: “stop”, “stop” or a message with the word “unsubscribe” removes the “newsletter” tag, and “subscribe” again asks a question about consent. While the operator is in conversation, he reads “stop” and removes the tag manually. There is no built-in unsubscribe in broadcasts - remind them of the safe word in the text, this will reduce blocking.
What plan are broadcasts available at?
From Basic - 650 ₽ per month per bot. On the Free section, the section is closed, but the consent script works, and the database with the tag is accumulating. Trial day of the Business plan also opens broadcasts.
First the database with consent, then the mailing list
Place the “Consent to mailing list” template on the Free plan: the bot will ask for consent and mark it with a tag. Send your first newsletter using this tag from Basic - for 650 ₽ per month.