Guide

How to Build a Telegram Lead Generation Bot

The full build order for a Telegram lead generation bot — from BotFather to attribution — written for marketers who will actually run traffic into it.

A Telegram lead generation bot is a funnel that happens to live in a chat window. Someone taps a link, the bot greets them, qualifies them in two or three taps, hands over the offer, and then keeps the conversation alive for as long as the offer is worth talking about. The build is not hard. Getting the order of the steps right is what separates a bot that collects subscribers from one that collects nothing but blocks.

What a lead-gen bot must do differently from a support bot

A support bot is reactive. It waits for a question, answers it, and is judged on resolution time. A lead-gen bot is the opposite on every axis, and three differences drive the whole design.

  • Every step must leave behind an attribute. A support bot can afford a question that only serves the current conversation. In a lead funnel, if a tap does not produce something you can target or report on later — a language, an interest, a source — it is pure drop-off with no return.
  • The first session exists to earn the second message. Telegram only lets you message people who started your bot, and a block is permanent. The opening flow is not the campaign; it is permission to run the campaign.
  • The path is linear, not branching. Support bots branch to cover cases. A lead funnel should be a straight line with the fewest possible forks, because each fork is another place to leave.

Step 1: create the bot and define the entry points

Open BotFather, run /newbot, pick a display name and a username ending in bot, and keep the token somewhere private — anyone holding it controls the bot. While you are there, set the short description (shown on the empty chat screen before anyone taps Start), the About text, and a profile picture. That empty-chat screen is a landing page, and most people never write copy for it.

Then decide your entry points, before you write a single message. Telegram lets any link carry a payload: t.me/yourbot?start=CODE. The payload is limited to 64 characters and to letters, digits, underscores and hyphens, so settle on a naming convention now and never improvise one mid-campaign. Something like ig_reels_nov or tgchan_pinned_v2 — channel, placement, variant. In mySkua a campaign has its own code, so a deep link can point straight at a specific promo; payloads that are not campaign codes still work and simply tag the subscriber with that source. The mechanics of naming, tagging and reading those payloads are covered in the deep link attribution guide.

Step 2: design the onboarding sequence

The canonical order is: /start → language → optional interest category → optional channel-subscription gate → welcome or offer message. Each stage between the tap and the offer costs you people, so apply one test to every one of them: does this step change what I send later, or what I can report on? If neither, delete it.

The welcome message has three jobs and roughly four lines to do them in. Confirm the person is in the right place (echo the thing they clicked from). State the offer in one sentence. Say what happens next, so the follow-up message a day later is not a surprise. Attach media if it clarifies the offer, and keep to a single primary inline button — a row of five buttons is a row of five ways to not press the one that matters.

Step 3: language and interest selection

Every Telegram client reports a language. Use it as the default, then let the subscriber confirm rather than assuming: client language and preferred reading language diverge constantly in exactly the multi-market audiences that make a Telegram funnel worth running. Once confirmed, the choice should follow the subscriber everywhere — welcome text, campaign messages, drips, broadcasts. In mySkua each bot defines its own set of language codes and every onboarding message exists per language, so there is no separate translation pipeline to maintain.

Interest categories are the second axis. A subscriber self-selects something like Sport or Casino, and that selection becomes a targeting handle for later content — each category can also carry its own welcome offer, so the answer changes the very next message instead of only mattering weeks later. Two rules keep this from backfiring: offer two to four options, never eight, and do not ask for a category you have no distinct content for. An unused segment is a tax on conversion rate.

Step 4: the subscription gate and when to skip it

A subscription gate requires the person to join your channel before the bot releases the offer. It is the single highest-leverage — and highest-risk — element in the funnel, because it converts bot traffic into channel growth at a direct cost to completion rate.

Use the gate when:

  • the channel is a real asset you publish to and monetise repeatedly, not an empty shell;
  • traffic is warm — your own audience, a partner channel, a returning list;
  • the offer is strong enough that a person will pay two extra taps for it.

Skip it when:

  • you are buying cold traffic and paying per click for every person the gate loses;
  • the offer is time-sensitive and any friction reads as a stall;
  • the channel has nothing in it yet — you are asking for a commitment you cannot honour.

Do not settle this by argument. Run comparable traffic into a gated and an ungated entry point, then compare offer-delivery rate against channel joins and decide with the numbers in front of you. Also make sure membership is checked at the moment the person taps Continue, not once at first contact — people join, grab the code, and leave, and a stale check will not notice.

Step 5: deliver the offer and capture the opt-in

The offer message is where a campaign earns its keep. A campaign in mySkua carries a promo code, a per-language message, media, inline URL buttons, an active window, and a new users only flag, with activation recorded once per user. Those last three matter more than they look. The active window lets an offer expire on its own instead of you remembering to edit a message at midnight. New-users-only stops a returning subscriber from re-claiming an acquisition offer. One-time activation gives you a clean count of who actually took the thing versus who merely received it.

Opt-in on Telegram is structural rather than a checkbox: pressing Start is the permission. So the real capture is what you record at that moment — the source payload, the language, the category, the activation — and whether the person is still reachable afterwards. Treat the difference between delivered and activated as your core funnel metric, because it is the only one that separates a message that arrived from an offer that worked.

Step 6: set up follow-up automation

Most Telegram funnels leak here. The offer goes out, nobody acts within the hour, and nothing else ever happens. Drip messages fire on a delay after join — minutes through days — and can be targeted by language, source, tag or category, which means the follow-up can be as specific as the entry point was.

A workable skeleton for a promo funnel:

  • +1 hour: a short reminder with the code repeated and one button.
  • +24 hours: the how-it-works or proof message — answer the objection, not the offer.
  • +72 hours: the expiry nudge, tied to the campaign's active window.
  • Then stop. A fourth message earns fewer activations than it costs in blocks.

Sending is bounded on purpose: retries are capped, and subscribers who block the bot are dropped rather than retried forever, so the list stays honest. Alongside drips you have one-off broadcasts with live recipient counts before you send, and scheduled broadcasts on a daily, weekly or monthly cadence with a timezone attached — see drip automation for how targeting and timing are configured. Set a self-imposed weekly send cap and hold to it. In email an over-send costs an unsubscribe; on Telegram it costs the entire relationship.

Step 7: instrument attribution before you buy traffic

Attribution is not a reporting task you do afterwards — it is a naming decision you make before the first ad goes live. Issue one payload per creative, not one per platform. "Instagram" tells you nothing you can act on; three payloads across three hooks tell you which hook to write more of.

Then judge sources on more than headcount. Subscriber growth, daily active subscribers, retention cohorts, campaign activations and delivery stats are all visible per bot, and they routinely disagree: the source with the most subscribers is frequently not the source with the most activations, and a cohort that vanishes by day seven was never a lead list. If you are still choosing where to build, this comparison of Telegram bot platforms goes through what each type of tool measures out of the box.

Launch checklist and first-week review

  • Bot description, About text and avatar written as sales copy, not placeholders.
  • Every onboarding message written in every language you claim to support.
  • Deep-link payloads named to a convention and documented somewhere your media buyer can read.
  • Gate decision made deliberately, with a plan to test the alternative.
  • Campaign active window and new-users-only flag set to match the offer terms.
  • At least two follow-ups scheduled before launch, not after.
  • The whole flow walked end to end from a fresh Telegram account on a phone.

After a week, ask four questions. Where exactly do people stop — language, category, gate, or offer? Which payload produces activations rather than subscribers? Does the day-one drip earn more activations than it costs in blocks? And is your day-seven cohort retention flat or falling? Fix the largest single drop-off before you add anything new. Almost every early Telegram funnel improves more from removing one step than from adding a feature.

Common questions

Do I need to write code to build a Telegram lead generation bot? No. BotFather creates the bot itself; the funnel — onboarding, campaigns, drips, broadcasts — can be configured in a panel. Code becomes necessary when you need custom logic that no platform models, such as writing leads into your own CRM in real time.

Can a Telegram bot message someone who never started it? No, and this is the constraint the whole design bends around. The Start tap is the opt-in, which is why the first session should spend its attention on being worth continuing rather than on collecting data you will not use.

How many onboarding steps is too many? Keep only steps that change later targeting or reporting. Language plus one interest category is usually the ceiling before the offer; anything else can be asked later, in a drip, once the person has a reason to answer.

Where to go next

mySkua runs this exact flow as a multi-tenant panel: one account, several bots, each with its own subscribers, languages, categories, campaigns, drips and analytics. Access is currently invite-only while the private beta runs, so if you want to build the funnel above on it, join the waitlist and request access — tell us what your entry points look like and roughly how much traffic you push, and we will get back to you.

Want this on your own bots?

mySkua is in a closed beta and accounts are opened in small batches. Tell us what you run and we will come back to you.

Request access