A Telegram deep link is an ordinary t.me bot link with a start payload attached — the one piece of data that survives the jump from your ad, post or QR code into the chat.
A Telegram deep link is a link that opens a specific bot and hands it a short string of your choosing at the same time. It looks like t.me/yourbot?start=summer24. When someone taps it, Telegram opens the chat with that bot and delivers the command /start summer24 — the payload arrives as an argument your bot can read on the very first interaction, before the person has typed anything. That is the whole mechanism. Everything marketers do with deep links — campaign codes, referral credit, source attribution, language or category pre-selection — is built on this single fact: one short string travels with the tap.
The canonical form has three moving parts:
https://t.me/ — the public web form that works everywhere, including inside browsers, ad platforms and QR codes. tg://resolve?domain=yourbot is the native scheme equivalent and is best avoided in public creatives because it fails for anyone without the app installed.t.me/yourbot. This is what resolves the link to a chat.?start=PAYLOAD. This is the deep-link part. Without it, the link is just a bot link.There are sibling parameters worth knowing so you do not reach for the wrong one. ?startgroup= opens a group picker and adds the bot to a group with the payload attached. ?startapp= launches a Mini App rather than the chat. For lead generation and promo funnels, ?start= is almost always the parameter you want, because it puts the person in a one-to-one conversation your bot fully controls.
The start payload is deliberately narrow. Telegram allows up to 64 characters, restricted to letters, digits, underscore and hyphen. That rules out spaces, ampersands, equals signs and anything else you would find in a UTM string. You cannot paste utm_source=facebook&utm_campaign=q3 into it and expect it to survive.
The practical consequence is that a payload should be a key, not a record. Put a short readable code in the link — ig_reels_oct, promo_welcome50, ref_A7K2 — and store everything else (the offer text, the language variants, the media, the active window, the destination URL) against that code in your panel. The link stays short enough to print under a QR code, and you can change what the code means without reprinting anything.
Three things the payload is not:
Campaign codes. The most common pattern. A code maps to a campaign record holding a promo code, a message per language, media, inline URL buttons and an active window. The person taps t.me/yourbot?start=SUMMER24, finishes onboarding, and receives that campaign's message instead of the generic welcome. A campaign can be limited to new subscribers only, and activation is recorded once per subscriber so a forwarded link cannot be claimed twice by the same account.
Source tags. Payloads do not have to correspond to a campaign at all. A string like instagram_2026_09 can simply tag the subscriber with where they came from. That tag then becomes a targeting dimension: send a different drip to people who arrived from a paid placement than to people who arrived from an organic post, and read growth and delivery numbers per source afterwards. This is the workhorse behaviour behind most affiliate and paid-traffic Telegram funnels.
Referrals. Encode the referring subscriber in the payload — ref_88213 — and credit the referrer when a genuinely new account starts. Because payloads are public and shareable, the two rules that matter are: credit only on first start, and ignore self-referrals.
Context handoff. A deep link can carry which product page, which offer or which content category the person was looking at, so the first message they see already matches their intent rather than starting from a cold menu.
A plain link — t.me/yourbot — is not a bad thing. It is shorter, it looks cleaner in a bio, and for a single undifferentiated audience it is entirely sufficient. What you give up is knowledge and control:
The honest trade-off is operational overhead. Deep links only pay off if someone maintains a naming convention and actually reads the numbers. A dozen ad-hoc payloads invented by three people over two months produce a report nobody trusts.
fb_lookalike_es_video_a_2026_09_v2 hit the ceiling fast. Prefer short codes plus a lookup.The reporting value comes from the payload being captured once, at the moment of arrival, and then living on the subscriber for the rest of the relationship. That single stored string turns into several distinct readings.
The first is volume by source: how many subscribers each code brought, day by day. The second is quality by source — retention cohorts show whether the people from a given placement are still active a week later, which is usually a very different ranking from raw volume. The third is campaign activation: how many people who arrived on a campaign link actually reached and claimed the offer, versus dropping out at the language step or the channel-subscription gate. The fourth is delivery health for the follow-up messages you send to that cohort afterwards.
Read together, these answer the question a plain bot link cannot: not just how many people you got, but which placement produced subscribers worth keeping. For the naming conventions, the reporting workflow and the mistakes that corrupt a clean read, see the longer guide on Telegram deep link attribution and the overview of Telegram bot analytics.
mySkua is in an invite-only private beta, so accounts are created by request rather than self-serve. If you are running Telegram funnels and want tagged deep links, per-source drip messages, campaign activation tracking and retention cohorts on one panel, join the waitlist and tell us what you run — which traffic sources, which languages, how many bots. We prioritise access for setups we can genuinely help.
Related: Deep link attribution · Bot analytics · Affiliate marketing 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