Telegram hands over the client language of every subscriber on the very first message. This guide covers what to do with it: detect, confirm, store it, and then serve every offer, drip, campaign and broadcast in that language.
One link posted in one place rarely produces one audience. A Telegram channel with a mixed following, an affiliate placement running across three countries, or an ad set with loose geo targeting will send you people whose phones are set to Portuguese, Hungarian and English inside the same hour. A monolingual bot treats all of them the same and quietly loses the ones who cannot read the welcome message.
A multilingual bot is not simply a translated bot. It is a bot where language is a stored property of every subscriber, set at the door and then used by every message that follows. That distinction is what makes the difference between translating a welcome screen and actually running several markets from one place.
The onboarding sequence in mySkua runs in a fixed order: /start, then the language pick, then an optional category pick, then an optional channel-subscription gate, then the welcome or offer message. Language comes first for a structural reason — every screen after it has to be rendered in something, and the category names, the gate instructions and the offer copy are all language-dependent.
There is also a data reason. A subscriber who arrives without a language attribute is a subscriber you cannot target later. Your day-two drip has to guess, your broadcast has to pick a majority language, and the people in the minority get a message they will not read. Retrofitting language onto an existing list is genuinely hard: you can infer from historical client codes, but you cannot ask ten thousand people to answer a question they already scrolled past.
The cost of doing it at the start is one tap. That is one of the cheapest steps you will ever add to a funnel, and it pays for itself on the first follow-up message.
Telegram sends the user's interface language code along with the update that reaches your bot. The bot reads it before it renders anything, so the very first screen can already be in a plausible language rather than in whatever you happened to write first.
Be precise about what that code means. It is the language the person set their Telegram app to. It is not their country, not their citizenship, and not necessarily the language they want marketing in. Plenty of people run their phone in English while living in Budapest, and plenty of Portuguese speakers are in Brazil rather than Portugal. If you need geography, get it from the deep-link source that brought them in, not from the language code.
Two rules keep detection safe:
Detection gets you a good default. The confirmation step turns that guess into an explicit, stored preference — and that is the part that makes everything downstream reliable. In mySkua the bot auto-detects the Telegram client language, the subscriber confirms it, and all later content is served in the confirmed language.
The confirmation earns its place three times over. It corrects the guess for the meaningful minority whose interface language is not their reading preference. It gives you a value you can segment on with confidence rather than an inferred one. And it is a first micro-commitment: the subscriber has now interacted with the bot once, which measurably changes how the next screen lands.
Design details that matter more than they look:
Every onboarding message in mySkua is an editable text key with a version per language. The language prompt, the welcome, the channel-gate instruction, the not-subscribed-yet reply, the offer delivery — each is a separate key, each holds one row per language. That structure is what makes gaps visible instead of invisible.
The working rule is simple: a key is not finished until every active language has a row. Adopt it early, because the failure mode is not a crash. It is a subscriber getting three screens in Hungarian and then one in English, which reads as sloppiness at the exact moment you are asking for trust.
Text is the obvious part. The parts teams forget are the ones attached to the text. In mySkua each message key can carry media and inline buttons, and every campaign holds a per-language message with its own media and inline URL buttons. All of that is translatable, and all of it is visible to the subscriber.
Language codes are configured per bot and are arbitrary, so opening a new market is a content job rather than a deployment. A sane order of operations:
/start end to end. Reading rows in a panel is not the same as seeing them on a phone.Decide deliberately on regional variants. Splitting Portuguese into Brazil and Portugal is right when the offer, the terms or the tone genuinely differ, and wasteful when they do not — every split doubles the number of rows you maintain forever. Split when the content differs, not when the flag does.
Once language is stored, it becomes a targeting dimension rather than a display setting.
Drips. Auto-messages fire a set delay after a subscriber joins and can be targeted by language, source, tag or category. In practice that means one drip per language, or a language filter layered on top of a source filter when the same market arrives from different placements. Delivery is bounded on purpose: failed sends retry a limited number of times, and subscribers who block the bot are dropped rather than retried forever.
Broadcasts. One-off sends show a live recipient count before you send, which is the fastest way to see how your list actually splits by language. Scheduled broadcasts run daily, weekly or monthly with a timezone — and this is where language and geography stop being the same thing. A Portuguese-language segment sitting mostly in Brazil should not be scheduled on Lisbon time.
Campaigns. A campaign carries a per-language message under a single code, so one deep link (t.me/yourbot?start=CODE) serves every market. That is worth stating plainly: you do not need one link per language, which keeps attribution intact and stops your campaign reporting from fragmenting. The wider funnel mechanics are covered in the Telegram lead generation guide.
Language is one of the more useful cuts you can apply to subscriber growth, daily active users, retention cohorts, campaign activations and delivery stats — because unlike most segments, a gap between languages usually has a specific, fixable cause.
Some verticals need this split for reasons beyond performance — where offers, terms and messaging are market-specific by obligation, per-language content is part of running the funnel correctly. The iGaming Telegram bot page covers that setup.
mySkua is in an invite-only private beta, so accounts are opened by request rather than self-serve. If you run Telegram funnels across several languages and want detection, confirmation, per-language content and language-aware reporting in one panel, join the waitlist and tell us which markets you run and how many bots. We prioritise setups we can genuinely help.
Related: Telegram lead generation · Audience segmentation · iGaming bots.
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