Ads & Attribution

Telegram UTM tracking: which tag brought the subscriber, and the deposit

A t.me link throws away every UTM tag. Here is what Telegram offers instead, how a tracked link keeps source, medium, campaign and creative, and a naming scheme that holds up.

Telegram UTM tracking breaks at one spot: a t.me link drops every utm_ tag the moment it opens the app. No page of yours sits behind that link, so nothing reads the tags and no report learns which campaign a new subscriber came from. The fix is to put the tags on a tracked link that sits in front of Telegram, store them against the visitor there, and match the later join to that visit. Scalegram is the Telegram CRM for IBs and forex affiliates, and its tracked links do this, then carry the same tags through to the deposit.

This is the naming and reporting side of tracking. The server side, where the join is posted back to the ad platform, is covered in Meta ads Telegram conversion tracking.

What the five UTM tags mean

UTM tags are plain query parameters added to a URL. Google's help page on collecting campaign data with custom URLs defines them. utm_source is the "Referrer, for example: google, newsletter4, billboard". utm_medium is the "Marketing medium, for example: cpc, banner, email". utm_campaign is the "Product, slogan, promo code, for example: spring_sale". utm_content is there to "differentiate creatives", and utm_term is the "Paid keyword".

The same page gives two rules that save a lot of cleanup later. First: "When you add parameters to a URL, you should always use utm_source, utm_medium, and utm_campaign." Second: "Parameter values are case sensitive, e.g. utm_source=google is different from utm_source=Google." Two people typing Facebook and facebook split one traffic source into two rows.

Something on the receiving page has to read a UTM tag and write it down. On a website that is an analytics script. On a t.me link there is no page of yours at all: the phone hands the link to the Telegram app, the channel opens, and whatever followed the question mark is gone.

The same is true of click ids. Meta describes its ClickID as "a Meta-generated parameter that is passed with the URL of an advertiser's website when a user clicks an ad on Facebook and/or Instagram". It arrives as fbclid in the query string. Point the ad straight at Telegram and the fbclid lands in the same void as the UTM tags.

What Telegram gives you instead

Telegram documents two ways to label where a person came from. Both are useful, and both are narrow.

The start parameter on a bot link

Telegram's bot features page documents deep linking: a link such as https://t.me/your_bot?start=airplane makes the bot receive "/start airplane" when the person opens the chat. The limits are tight. "A-Z, a-z, 0-9, _ and - are allowed", and "The parameter can be up to 64 characters long." That is one short value, with no equals signs or ampersands, so five UTM tags plus a long click id will not fit. And the page describes it for opening a chat with a bot, which is not where a channel campaign sends people.

Named invite links on a channel

For channels and groups, the Bot API has createChatInviteLink, "an additional invite link for a chat", with an optional name of "0-32 characters". When someone joins, the chat_member update carries the "Chat invite link, which was used by the user to join the chat; for joining by invite link events only", and a join request carries the link "used by the user to send the join request". To get those updates at all, "The bot must be an administrator in the chat and must explicitly specify "chat_member" in the list of allowed_updates".

So you can make one invite link per campaign and count joins per link. It works for three campaigns. At thirty ads you are managing thirty links by hand, and none of them knows the click id the ad platform needs to match a conversion.

A tracked link is a normal web address that belongs to the tracker. Because it is a web address, it can read a query string.

The ad, bio or post points at the tracked link with the UTM tags on it, and the ad platform appends its click id on the way. The link reads both, keeps them against that visitor, and sends the person on to the channel. A bot with admin rights in the channel is told about the join, as the Bot API describes above, and the join is matched to the visit. The subscriber is then filed under the source, medium, campaign and creative the link carried.

In Scalegram this lives in Links. Every link has a tracked address you can tag with utm_source, utm_medium, utm_campaign, utm_content and utm_term and paste straight into an ad, a bio or a post. No website is needed. The link also reads fbclid, gclid, ttclid and sccid, so the join still reaches Meta, TikTok or Snapchat server side with a click id to match on. A dedicated bot watches who joins the channel, connected once and reused. In the panel, subscribers are broken down by source, and inside each source by medium, campaign and creative.

If you do run a landing page, one line of code on it reads the same values and rewrites the Telegram links on the page.

Three ways to label Telegram traffic, side by side

MethodWorks forWhat it can carryClick id for the ad platformUpkeep
UTM tags on a raw t.me linkNothingDropped when the app opensLostNone, and no data
Bot start parameterBot chatsOne value, 64 characters, letters, digits, _ and -Does not fitYou write the bot that reads it
Named invite linkChannels and groupsA name of up to 32 charactersNot carriedOne link per ad, made by hand or by your own bot
Tracked link with UTM tagsChannels, groups and botsAll five UTM tagsStored with the visitOne link, retagged per ad

A naming scheme that survives a team

This scheme is ours, built for channel owners who run paid and organic traffic at the same time. Write everything in lowercase, with underscores for spaces. Values are case sensitive, and the simplest way never to think about it again is to ban capitals.

Use utm_source for the place: meta, tiktok, snapchat, youtube, telegram, instagram_bio. Use utm_medium for how the traffic was bought or earned: cpc for paid ads, social for unpaid posts, referral for another channel's shout-out.

Put the market and the month in utm_campaign, for example ro_gold_2026_09.

utm_content is the creative. Name the file and the tag the same thing: video_03_hook_b. utm_term is for search ads; on social campaigns leave it off or use it for the audience, and be consistent about which.

A finished link looks like this, with your tracked address in place of the example:

https://go.example.com/gold?utm_source=meta&utm_medium=cpc&utm_campaign=ro_gold_2026_09&utm_content=video_03_hook_b

Keep the scheme in one shared note. A messy tag costs you three months later, when the answer to "which creative worked" is spread over "Video3" and "vid3-new".

From subscribers to the tag that brought depositors

Subscribers per campaign is a fine number for someone who sells the channel itself. An IB or a prop firm affiliate is paid on a later event, so the count to read per utm_content is depositors.

That needs the tag to stay attached to the person after the join, and it needs a deposit that was checked. In Scalegram the AI bot on your own Telegram answers the new subscriber in the language they wrote in, sends your broker link, and asks for the email or account number when it needs one. It looks that email up in the broker's IB portal or the prop firm CRM over a read-only API: whether the account exists, whether a payment completed, how much, whether KYC passed. Every call is a GET. The client card moves to Deposited, and because the click, the join and the verified deposit sit in one product, the deposit is tied to the ad that bought the click and reported server side to Meta, TikTok and Snapchat. How to verify a broker deposit automatically goes through that check step by step.

The weekly review changes in one way. You stop ranking creatives by cost per subscriber and rank them by which tag the Deposited cards came from.

If you only need joins counted per link, read the Telegram tracker comparison. If the deposit is the event you are paid on, Scalegram Lite is $99 a month with one tracked link and one bot, and the full plan is $999 a month with unlimited links, as the pricing section lists. Every feature is on both.

Sources

A UTM tag is a label on a box. It only helps if the box is still labeled when the deposit shows up.

— The Scalegram Team

Key takeaways

  • UTM tags on a raw t.me link are dropped when the Telegram app opens, and the ad platform's click id goes with them.
  • Telegram's own labels are a bot start parameter of up to 64 characters and an invite link name of up to 32, per its documentation. Neither holds a full set of tags and a click id.
  • A tracked link in front of Telegram reads the tags and the click id, and a bot with admin rights in the channel matches the join to that visit.
  • Scalegram files each subscriber by source, medium, campaign and creative, and ties the deposit it verified at the broker to the same tags.

Frequently asked questions

Do UTM parameters work on Telegram links?

Not on a raw t.me link. The Telegram app opens the channel and the query string is discarded, so nothing records the tags. They work when they sit on a tracked link in front of Telegram that reads them, stores them and then sends the person on to the channel.

How do I see which ad brought a Telegram subscriber?

Point the ad at a tracked link tagged with utm_source, utm_medium, utm_campaign and utm_content, and put a bot with admin rights in the channel so it is told about each join. Scalegram matches the join to the click and lists subscribers by source, medium, campaign and creative.

Can I use a bot start parameter instead of UTM tags?

For a bot chat, yes, within limits. Telegram's documentation allows one value of up to 64 characters made of letters, digits, underscores and hyphens. That is enough for a short campaign code and too small for five tags plus an ad platform click id, and it does not apply to channel links.

Put one bot on your own Telegram

Scalegram answers every lead in the language it arrived in, checks the deposit against the broker's own records, opens the paid group and files the client. Lite starts at $99 a month.