What Telegram Ads give you, and what they do not
Telegram Ads are short text ads shown in public channels, bought per thousand views and targeted by channel, interest or language. An ad links to a Telegram destination: a channel, a bot or, through a bot, a Mini App. The ad account reports views, clicks and cost; for ads that lead to a website it can also report Pixel Tag events.
Three things are missing compared with Meta or TikTok:
- No click id. Meta appends an fbclid to every click; TikTok a ttclid. Telegram Ads append nothing, and the link cannot carry macros that change per click. Every click on one creative arrives identical.
- No conversion API. There is no endpoint to tell Telegram Ads "this click became a subscriber", so nothing can be sent back and the platform cannot optimise towards joins or deposits.
- No visibility inside Telegram. The Pixel Tag covers click-throughs to external sites only; for an ad that opens a channel or a bot it records nothing. See the Telegram pixel explained.
The consequence is that attribution for Telegram Ads is per creative, not per click. That is enough to answer the questions that decide budget: which creative brings subscribers, what each subscriber costs, and which creatives bring people who stay and pay.
The method: one tracked link per creative
Since every click on a creative looks the same, give each creative its own destination and count what arrives through it. Two destinations work, depending on where the ad leads:
- Channel or group. A tracking link of the kind "Opens your group", named after the creative. Each visitor still receives their own single-use invite link, so a join is matched to that visitor's click on this creative, and people who leave are recorded too. With direct-join mode on, the visitor goes straight to the invite without a Start step.
- Bot. A tracking link that opens a chat with your bot, named after the creative. The link carries a start code per click; Telegram passes it to the bot when the person presses Start, so the start, the first message and any later purchase are credited to the creative.
The campaign name, source and creative name you give the link are stored on every click and inherited by every later event, so the dashboard's results table groups subscribers, messages and deposits by creative exactly as it does for a Meta campaign. The only difference is that the rows carry no click id to send anywhere.
Setting it up
- Connect your bot and channel. Create a bot with @BotFather, paste its token on Connections, and add the bot to your channel as an admin with the invite-users right. Channels accept bots only as admins.
- Create one link per creative. On Links, choose "Opens your group" (or the bot chat), name it after the creative, for example
tgads-finance-headline-a, and set the source to telegram_ads so the rows are separated from your Meta and TikTok campaigns.
- Use the link as the ad's destination. Telegram Ads accept a t.me link; the tracking link redirects into Telegram and opens the channel or bot. Test the ad's link on your phone before the ad goes live: the click and the join appear on the dashboard.
- Report deposits. When a subscriber pays, your platform sends the postback or the event API call with the click id the person arrived with, or the bot records a Stars payment. The deposit lands on the creative's row.
- Put the spend next to it. Telegram Ads has no reporting API, so spend is not imported. Read the spend per creative from the ad account and divide by the subscribers on the creative's row for cost per subscriber; divide deposit value by spend for the return.
Reading the results
For each creative the dashboard shows clicks, subscribers, messages, deposits and deposit value, and, after the number of days you set, how many of its subscribers are still in the channel. Cost per subscriber is the first number to compare; cost per retained subscriber the second, because Telegram Ads can bring cheap subscribers who leave within a day. A creative at €0.40 per subscriber with half of them gone after a week is worse than one at €0.60 that keeps them.
Because the rows have no click id, nothing is sent to an ad platform for them; "Sent to Meta" stays empty for Telegram Ads rows, which is correct. If the same workspace also runs Meta or TikTok ads to the same channel, those rows carry click ids and are reported as usual; the source filter keeps the two apart.
Common mistakes
- Using the channel's public link in the ad. Then every subscriber from every creative lands in one unattributed pile. The tracking link is what separates creatives.
- One link for several creatives. The link is the only thing that tells creatives apart. One link per creative, named clearly.
- Expecting events in Ads Manager. There is no Ads Manager equivalent to receive them. The results live in Tellmetric's dashboard and in the spend figures you read from the Telegram Ads account.
- Judging on subscribers alone. Look at retained subscribers and deposits per creative before scaling.
Frequently asked
Does Telegram Ads have conversion tracking?
For ads that lead to a website, the Pixel Tag reports visits and events in aggregate. For ads that lead to a channel or bot, nothing is built in; you measure per creative with your own links and bot.
Can I send subscribers back to Telegram Ads so it optimises for them?
No. Telegram Ads has no conversion API, and its Pixel Tag is reported to not steer delivery either. Optimisation stays manual: move budget to the creatives with the best cost per retained subscriber.
Can Tellmetric import my Telegram Ads spend?
Not today; Telegram Ads offers no reporting API. Spend is read from the ad account and compared with the subscribers per creative on the dashboard.
Does this work for a bot or Mini App funnel?
Yes. A bot link per creative carries a start code; starts, messages, Stars payments and Mini App events are credited to the creative.