NEWASK is live: the AI brain that answers anything about your business.Meet ASK →
Blog/Telegram Start Parameter
Telegram

The Telegram Start Parameter: What Fits in 64 Characters

7 day free trialNo credit card requiredSet up in 5 minutes
Direct answer

The Telegram start parameter is the one payload a bot link can carry. Telegram documents it as up to 64 characters drawn from A-Z, a-z, 0-9, underscore and hyphen. That is enough for a lookup key and not enough for a Meta click identifier, so working attribution stores the click server side and passes only a short reference.

Every article about Telegram attribution mentions the start parameter. Almost none of them state its limits precisely, which is a problem, because the limits are the whole design constraint. This page is the reference: what Telegram actually documents, what fits inside 64 characters, what does not, and how to build a handoff that survives the boundary.

What is the Telegram start parameter?

The start parameter is a value appended to a bot link as ?start= that Telegram delivers to the bot the moment the person opens the chat. It is Telegram's documented mechanism for passing data into a conversation before the user has typed anything.

Telegram describes the mechanism this way:

"Telegram bots have a deep linking mechanism that allows additional parameters to be passed to the bot on startup. It could be a command that launches the bot or an authentication token to connect the user's Telegram account to their account on another platform."

Telegram, Bot Features, Deep Linking. core.telegram.org/bots/features#deep-linking. Checked 14 August 2026.

Note the second example Telegram gives: an authentication token connecting a Telegram account to an account on another platform. That is precisely the attribution use case. Telegram is not describing a tracking feature, it is describing an identity handoff, and attribution is one honest application of it.

How many characters can the start parameter hold?

Sixty-four. Telegram states the limit and the permitted character set in a single sentence, and it has not changed across recent Bot API releases.

"A-Z, a-z, 0-9, _ and - are allowed. We recommend using base64url to encode parameters with binary and other types of content. The parameter can be up to 64 characters long."

Telegram, Bot Features, Deep Linking. core.telegram.org/bots/features#deep-linking. Checked 14 August 2026.

Two facts follow directly. First, the permitted alphabet is exactly the base64url alphabet, which is why Telegram recommends base64url and not standard base64: standard base64 uses + and /, neither of which is on Telegram's list. Second, 64 characters of a 64-symbol alphabet is 6 bits per character, so the parameter carries at most 384 bits, or 48 bytes, of binary payload.

That 48 byte ceiling is the number worth committing to memory. It is the real budget.

What actually fits in 48 bytes?

Enough for an opaque reference and a little routing metadata. Not enough for a click identifier, a UTM set and a timestamp. The table below is arithmetic, not opinion.

What you might want to carryCost in charactersFits in 64?
Random 128 bit token, base64url, unpadded22Yes
Random 128 bit token as lowercase hex32Yes
UUID with hyphens36Yes
Two 128 bit tokens, base64url44Yes
128 bit token plus a short campaign code and a 32 bit timestampabout 40Yes
A full _fbc cookie valueabout 55, but contains periodsNo
Raw fbclid from Meta's own documented example61Not safely
A ttclid, which TikTok says may run to 1,000 charactersup to 1000No
Click ID plus three UTM values plus a timestamp150 and upwardNo

Can you put an fbclid in a Telegram start parameter?

No, not reliably, and a full _fbc value is impossible by construction. Meta's stored click value is period delimited, and the period is not in Telegram's permitted character set, so the value cannot pass through unmodified.

Meta documents the format explicitly:

"The formatted ClickID value must be of the form version.subdomainIndex.creationTime.<fbclid>"

Meta's worked example: fb.1.1554763741205.AbCdEfGhIjKlMnOpQrStUvWxYz1234567890

Meta, ClickID and the fbp and fbc Parameters. developers.facebook.com/documentation/ads-commerce/conversions-api/parameters/fbp-and-fbc. Page shows "Updated: Jan 9, 2026". Checked 14 August 2026.

Three periods, and Telegram allows none. You could strip them and reassemble on the far side, but you would still be carrying the bare fbclid, and Meta's own documented example value is 61 characters long before you add anything else. Meta also warns that the value is case sensitive and must not be modified, which rules out any lossy re-encoding scheme.

Why this matters

People try this. The failure mode is quiet: the link works, the bot receives something, and the reassembled click identifier is subtly wrong, so Meta accepts the event and matches nothing. You get a green tick in your logs and no attribution. Passing a reference instead of a payload removes the failure mode entirely.

What should you encode in the start parameter instead?

A short opaque reference to a click record you already stored server side. The bridge page holds the click identifier, the UTMs, the timestamp and the user agent. The start parameter carries only the key that finds them again.

A workable shape looks like this:

  1. On landing, write the click record. Store the click identifier exactly as it arrived, plus every UTM value, the referrer and the arrival time. Generate a random reference at the same time.
  2. Redirect to the bot with the reference only. https://t.me/your_bot?start=<reference>, where the reference is 22 to 32 characters of base64url.
  3. On /start, join the two records. The bot now holds both the Telegram user ID and the stored click record. That pairing is the attribution.
  4. Retire the reference. Treat it as single use, or at least bind the first Telegram ID that redeems it, so a forwarded link cannot silently reassign a click to a second person.

Three design details are worth getting right, because each one produces a distinctive class of bad data if you get it wrong:

The handoff, already built

FlowTracker generates the tracked link, stores the click record, mints the reference, redeems it on /start and keeps the pairing for every later event. Nothing to encode by hand.

Start 7 day free trial

What does the bot actually receive?

A message containing /start followed by a space and the parameter value. Telegram's documentation gives the exact shape for both private chats and groups.

For a private chat, Telegram's example is a link of the form https://t.me/your_bot?start=airplane, and it states:

"When someone opens a chat with your bot via this link, you will receive:"

/start airplane

Telegram, Bot Features, Deep Linking. core.telegram.org/bots/features#deep-linking. Checked 14 August 2026.

Practically, that means your bot must parse the parameter out of a message body, not out of a dedicated field. Split on the first space, take the remainder, and validate it against your own reference format before you use it as a database key. It arrives from the open internet.

What about groups, channels and Mini Apps?

Groups use startgroup, Mini Apps use startapp, and channels have no start parameter at all. The distinction matters because it determines which funnel shapes can carry attribution.

DestinationParameterWhat the bot receives
Private chat with a bot?start=/start <value> in a message
Group, adding the bot?startgroup=/start@your_bot <value>
Mini App?startapp=Delivered to the Web App, see Telegram's Web Apps guide
ChannelNoneNothing. Channel links carry no payload

Telegram documents the group case with the example https://t.me/your_bot?startgroup=spaceship and states that following the link prompts the user to select a group to add the bot to, with the resulting update containing text in the form /start@your_bot spaceship.

The channel row is the one that surprises people. A t.me/yourchannel link accepts no parameter, which is why per-visitor invite links exist and why channel attribution is a different mechanism entirely. That mechanism is covered in what is technically observable about a Telegram channel join.

A documented curiosity

Telegram Business uses the same channel for its own purposes. Its documentation states that a user connecting a bot to their account and tapping "Manage Bot" reaches a bot "which will receive a deep link message in the format /start bizChat<user_chat_id>". If your bot supports Telegram Business, namespace your references so they cannot collide with Telegram's own reserved prefixes.

What the start parameter cannot do

It cannot recover a click that never touched a page you control, and it cannot tell you whether the person redeeming it is the person who clicked. Both limits are structural, and no tool removes them.

Once the pairing exists, everything downstream is bookkeeping: the join, the conversation, the purchase, and the conversion sent back through the Meta Conversions API within its documented upload window. The 64 characters are the narrow part of the pipe, and they are narrow on purpose.

Sources

Every link below was fetched and read on 14 August 2026. Where a vendor does not document something, this article says so rather than filling the gap with an estimate.

Telegram, Bot Features, Deep LinkingSource for the 64 character limit, the permitted character set, the base64url recommendation, and the private chat, group and Telegram Business examples. core.telegram.org/bots/features#deep-linking. Checked 14 August 2026.
Telegram, Bot APIReference for the Update object and the shape of incoming messages. The page documented Bot API 10.2, dated 14 July 2026, at time of checking. core.telegram.org/bots/api. Checked 14 August 2026.
Meta, ClickID and the fbp and fbc ParametersSource for the _fbc format string, the worked example value, and the statement that the ClickID value is case sensitive and must not be modified. Page shows "Updated: Jan 9, 2026". developers.facebook.com/documentation/ads-commerce/conversions-api/parameters/fbp-and-fbc. Checked 14 August 2026.
Meta, Server Event ParametersSource for the seven day event_time limit referenced above. Page shows "Updated: Feb 12, 2026". developers.facebook.com/documentation/ads-commerce/conversions-api/parameters/server-event. Checked 14 August 2026.
TikTok, Send TikTok Click ID (ttclid)Source for the statement that ttclid "can be up to 1,000 characters long". business-api.tiktok.com/portal/docs/send-tiktok-click-id-ttclid/v1.3. Checked 14 August 2026.
Character arithmeticThe 48 byte and 22 character figures are arithmetic, not measurements: 64 characters of a 64 symbol alphabet carry 6 bits each, giving 384 bits; a 128 bit token needs 22 base64url characters unpadded. Reproduce them yourself rather than taking our word for it.

Last reviewed 14 August 2026

Telegram Attribution

Carry the click across the boundary

Tracked links, the start parameter handshake and revenue attribution for Telegram funnels, without writing the plumbing yourself.

FAQ

Telegram Attribution, answered

How long can a Telegram start parameter be?

Up to 64 characters. Telegram's Bot Features documentation states: "A-Z, a-z, 0-9, _ and - are allowed. We recommend using base64url to encode parameters with binary and other types of content. The parameter can be up to 64 characters long." Because the permitted alphabet has 64 symbols, the parameter carries at most 384 bits, or 48 bytes, of binary payload.

Which characters are allowed in a Telegram start parameter?

A-Z, a-z, 0-9, underscore and hyphen. That is exactly the base64url alphabet, which is why Telegram recommends base64url rather than standard base64. Standard base64 uses plus and slash, and neither is permitted. The period is also not permitted, which is why a Meta _fbc cookie value cannot pass through unmodified.

Can I put an fbclid in a Telegram start parameter?

Not safely, and a full _fbc value not at all. Meta's stored click value has the form version.subdomainIndex.creationTime.fbclid, and the period is not in Telegram's permitted character set. Meta's own documented example fbclid is 61 characters before you add anything else, and Meta states the value is case sensitive and must not be modified. Store the click server side and pass a short reference instead.

What does my bot receive when someone opens a start link?

A message containing /start followed by a space and the parameter value. Telegram's documentation gives the example link https://t.me/your_bot?start=airplane and states that you will receive /start airplane. It arrives as message text, not as a dedicated field, so your bot has to parse it and should validate it before using it as a database key.

Do Telegram channels support a start parameter?

No. Only bots do. A t.me channel link carries no payload, which is why channel attribution uses per-visitor invite links instead. Groups use startgroup and Mini Apps use startapp, both of which deliver a value the same way a bot start parameter does.

Is putting a tracking reference in a start parameter against Telegram's rules?

Telegram documents the mechanism for exactly this class of use, giving "an authentication token to connect the user's Telegram account to their account on another platform" as one of its two examples. Operating bots is subject to the Telegram Bot Developer Terms of Service, and you should not place personal data in a parameter that appears in a shareable link.

Keep reading