Appearance
Telegram funnels
A funnel is a step-by-step scenario your Telegram bot runs on its own. A link from an ad or a post brings people in, buttons capture their choice, reminders count down to your event, an offer goes out afterwards, and the agent takes over the moment someone has a question. People stop getting the selling messages the instant they buy.
Funnels live on the Automations page as the Telegram funnels automation. Each funnel belongs to one agent and runs on one of that agent's connected Telegram bots. Everything a funnel sends and does shows up in the person's chat, next to the agent's own replies.
In the app
Open Automations at app.mychatbot.app/automations, pick the agent, then choose Telegram funnels in the list. The pane lists the agent's funnels; Use a template or New funnel opens the builder in the same place, with the automations list still on the left. The arrow at the top of the builder brings you back to the pane.
At a glance
| You need | Where in the app | Result |
|---|---|---|
| A Telegram bot connected to the agent | Channels → agent → Telegram tab (how to connect) | The bot the funnel will speak through; the builder shows it by its @handle |
| A funnel | Automations → Telegram funnels → Use a template or New funnel | A draft opens in the builder |
| The bot and the way in | Builder → Settings tab | The bot, the link key or "every new chat", the event, the exit rules |
| A working scenario | Builder → Builder tab → Check | Every block connected and filled in |
| A live funnel | Builder → Activate | Your link appears; people who open it enter the funnel |
The first template, Countdown funnel, is the classic launch sequence: register with one tap, remind before the event, make the offer after. It fits a live session, a product launch, a sale or a course start. Set the event date in Settings before activating it. Templates come in the language your app is set to (English, Ukrainian, Russian, Polish, Italian); every message, button and block name is yours to edit.
How people enter
Choose in Settings → How people enter:
| Mode | Who enters | Notes |
|---|---|---|
| Through a link | Anyone who opens https://t.me/<your_bot>?start=<key> | Put the link in an ad, a post, a story, a QR code. The link key is yours to choose: lowercase letters, digits and underscores, 2–32 characters, unique among the bot's active funnels |
| Everyone who writes to the bot for the first time | Every brand-new chat with the bot, whatever the first message says | One such funnel per bot. Existing chats are not affected |
| Both | Either of the above |
Track where people came from. Add -source-campaign after the key: ?start=launch-fb-sept enters the launch funnel and records fb as the source and sept as the campaign. On the lead you get:
- Lead source — "Telegram link" (
telegram_deeplink) when the lead had no source yet. - Custom fields
tg_start(the whole start value),funnel_key,funnel_source,funnel_campaign— refreshed on every visit, so the latest ad wins.
A person can be in one funnel at a time. Opening a second link, or the same link again, restarts them from the beginning; the timeline records the previous run as cancelled (superseded).
Blocks
The builder is a canvas: add a block from the palette, fill it in on the right, drag from a block's bottom port to the next block to connect them. Every exit has to lead somewhere — Check tells you which one does not.
| Block | What it does | Limits |
|---|---|---|
| Start | Where the funnel begins. One per funnel | |
| Message | The bot sends a text | Up to 4096 characters |
| Buttons | A text with inline buttons under it. A tap continues along that button's line; a link button opens a page and the funnel keeps waiting. An optional timeout continues on its own line when nobody taps | Up to 10 buttons, labels up to 40 characters |
| If / else | Goes the «yes» way when the person writes anything, taps a specific button, or stays silent for a while; otherwise «no». Optional "wait up to" | |
| Pause | Waits before the next block | 1 minute to 30 days |
| Wait until event | Waits until a moment relative to the funnel's event: 1 day before, 1 hour before, at the start, 90 minutes after. People who join after that moment skip it | Within 30 days of the event either way |
| Action | Adds or removes a label, moves the lead to a status, or sends the lead to a webhook | Labels and statuses must already exist; webhooks need a public https:// address |
| AI check | Asks the AI a yes/no question about the conversation so far ("wants to buy?") and branches on the answer | One short AI call per check |
| Hand to agent | Ends the funnel; the agent answers from now on, with your note added to its instructions for this chat | Note up to 4096 characters |
| Hand to operator | Ends the funnel and switches the chat to a person, with your note | |
| Final message | Sends a last text and ends the funnel, optionally adding a label |
Free text while the funnel waits. When a person writes instead of tapping a button, the agent answers as it normally would and the funnel keeps waiting for the tap. Only an If / else block set to "the person writes anything" consumes a reply. A tap on a button from an earlier step, after the funnel has moved on, gets a short "this choice is no longer active" note and changes nothing.
Follow-ups pause. While a person is inside a funnel, the agent's silence follow-ups leave that chat alone. They resume when the funnel hands over or ends.
The event
Settings → Event the funnel counts down to: a date, a time and a time zone, with an optional Repeats every week switch for a recurring session. Wait until event blocks count from it. Saving a new date or time re-times everyone currently waiting on the old one.
A one-off event that is already past is skipped: people who enter late continue straight to the block after the wait. A weekly event always counts to its next occurrence.
Exit rules: stop selling the moment they buy
Settings → Stop the funnel for a person when: one or more statuses and one or more labels. The moment the lead lands on one of them, the funnel ends for that person (cancelled — exit rule in the timeline) and normal follow-ups take over. It does not matter who made the change: a manager in Leads, the agent itself, or a webhook from your payment system.
Purchase webhook recipe
- In Automations → Trigger Outreach, create a trigger (for example "Payment") and copy its webhook URL.
- Make sure the paid status exists in the agent's pipeline and is listed in the funnel's exit rules.
- When a payment lands, have your system
POSTto that URL:
json
{ "client_id": "<the lead's id>", "action": "set_status", "status": "Paid" }client_id is the lead's id from Leads (the Telegram user id of the chat works too). The reply is 200 with "Status updated…", 400 when the status is not in the pipeline (the message lists the ones that are), 404 when no such lead exists. The status change goes the same road as the agent's own: it lands in the chat timeline, re-arms follow-ups for the new status, and fires the funnel's exit rule.
Check and activate
Check validates the draft and lists what to fix, each line clickable to the block. Activate runs the same checks plus the live ones: the bot is still connected and belongs to this agent, the link key is free on that bot, the statuses and labels the funnel names exist, an event is set when a wait block needs one. When the only thing missing is a status or a label (every template names a few), the builder lists them and offers Create and activate: they are created in Leads for this agent and the funnel goes live in one step. On success the pane and Settings show Your link.
A funnel is either Draft or Active. Edits to an active funnel are saved as you go; people already inside continue on the graph they were on until their next step, so keep edits to a live funnel small. Pause funnel stops it and takes everyone out (cancelled — deactivated).
Rehearsal
The Rehearsal tab plays the funnel with nothing sent to anyone. Pauses and waits are skipped and marked, you tap the buttons and type the replies, and you pick the AI check's answer yourself. Save first: the rehearsal replays the saved version.
People
The People tab shows who is inside right now: counts per block, and for each person the step they are on, the next moment the funnel will act (or "waiting on them"), when they entered, and a link to the chat. Stop takes one person out (cancelled — stopped).
The history of a person is in their chat: the messages the bot sent, the buttons they tapped, and a timeline entry for every step — funnel started, button, action, wait, hand-over, completed, cancelled, error.
When things go wrong
| Situation | What happens |
|---|---|
| The bot is switched off in Channels | The funnel waits. Timers are pushed back 5 minutes at a time until the bot is on; taps are ignored meanwhile |
| The bot is disconnected | The funnel ends for everyone on it (channel missing) |
| A person blocks the bot | The funnel ends for them (bot blocked); the chat is marked accordingly |
| A message cannot be sent | Three retries a minute apart, then the funnel ends for that person (send failed) |
| A webhook action fails | Recorded in the timeline; the funnel continues |
| An operator takes the chat | The funnel ends for that person (operator takeover) |
| A funnel loops | A single run stops after 200 steps |
Limits
| Message length | 4096 characters |
| Buttons per block | 10, labels up to 40 characters |
| Pause | 1 minute – 30 days |
| Wait until event | Within 30 days before or after the event |
| Link key | 2–32 characters: a-z, 0-9, _; the prefixes ses_, conv_ and assistant_ are reserved |
| First-message funnels | One active per bot |
| Funnels per person | One at a time |
| Steps per run | 200 |
See also
- Automations — the page funnels live on, and the Trigger Outreach webhook the purchase recipe uses.
- Connect a Telegram bot — the bot a funnel speaks through.
- Follow-ups — status/label sequences that resume once a funnel ends.
- Labels and statuses — what actions and exit rules point at.
