Documentation / Broadcasts
Broadcasts & segments
A broadcast sends one message to many subscribers at once — optionally filtered to a segment, optionally at a future time. Open a bot in the console and choose Broadcasts.
Segments
A segment is a saved filter over a bot's audience — built from attributes your flows collect (via the Set-attribute and Question nodes), subscription dates, and activity. Segments are reusable: build once, target every campaign, and the membership recomputes as subscribers change.
Segments also power the Segment node in flows, so a subscriber entering a segment can trigger automation — a welcome drip for new signups, a win-back flow for the inactive.
Don't have segments yet? A broadcast without a segment simply goes to the whole audience of that bot.
Composing and scheduling
A broadcast is a name, a message (text with optional buttons — a URL button makes a fine call-to-action), and an optional segment. Send it immediately or schedule it for a specific time — useful for time zones and launches. Scheduled broadcasts sit in the list with their due time until the moment comes.
Each line includes a monthly broadcast allowance (shown on the pricing page and in your Billing usage meters); sends beyond it are rejected with a clear message rather than failing silently.
How delivery is paced
Telegram caps bulk sending at roughly 30 messages per second. BotForge queues one delivery row per recipient and drains the queue in background passes at 25 messages per second — safely under the ceiling — with at most 200 recipients handled per campaign per pass, so one giant campaign can't starve the others. When Telegram answers "slow down", the pass stops immediately and resumes on the next tick from exactly where it left off: nobody is skipped, nobody is double-sent.
Reading the results
| Outcome | Meaning |
|---|---|
| Delivered | Telegram accepted the message for that subscriber. |
| Blocked | The subscriber blocked the bot, deleted their account, or the chat no longer exists. They are excluded from future sends automatically. |
| Failed | A temporary error — retried on later passes. If Telegram says the campaign is going too fast, sending pauses and resumes at a safe pace rather than dropping anyone. |
A broadcast's status moves from queued to sending to completed (or failed if nothing could be delivered). The per-pass counters update as delivery progresses, and a broadcast.completed event fires to your webhooks with the final stats.