JavaScript seems to be disabled in your browser. Telegram Ads Metrics: CPM, CTR, CPS, ROMI | Telegram Insider
Knowledge base

Telegram Ads Metrics: CPM, CTR, CPS and ROI

Which metrics the Telegram Ads account shows, how to calculate CPM, CTR, CPC, CPS, CPL and ROMI, and how to include reseller fees when measuring payback.

Author: , site editorPublished: 7 min read
Cover for "Telegram Ads Metrics: CPM, CTR, CPS and ROI" with an ad mockup on a dark card

The core Telegram Ads metrics are CPM (cost per 1,000 impressions), CTR (share of impressions that lead to a click), CPC (cost per click) and CPS (cost per subscriber or bot start). Payback is measured outside the ad account, through cost per lead (CPL) and ROMI, by comparing spend with revenue. Below: which numbers the account shows, how to recalculate them and what to look at when you evaluate a campaign.

Which metrics the Telegram Ads account shows

According to eLama’s description (March 2025), the ads table shows views, video opens, clicks, joins, CTR, CPM, CPC, CPS, budget spent and budget remaining. Each individual ad has a chart of views, clicks and subscriptions or bot starts, plus a budget spending chart.

What the account does not show: unique reach, frequency per user, and the gender or age of the audience. One person can see the same ad several times a day, and each time counts as a view. So “views” in Telegram Ads are not the same as reach.

  • Views — an impression is counted when the ad appears on screen.
  • Clicks — taps on the button, link or title.
  • Joined — channel subscriptions or bot starts when you promote a Telegram channel or bot.

Formulas for the main metrics

The account calculates most metrics for you, but it helps to know the formulas. That makes it easier to reconcile the data with your website or bot analytics and to recalculate costs including the reseller fee.

Metric What it shows Formula
CPM cost of 1,000 impressions spend / views × 1,000
CTR share of impressions that ended in a click clicks / views × 100%
CPC average cost per click spend / clicks
CR click-to-action conversion actions / clicks × 100%
CPS cost per subscriber or bot start spend / joins
CPL cost per lead or sign-up spend / leads
ROMI return on marketing investment (revenue − spend) / spend × 100%

The metrics are linked: CPC = CPM / (1,000 × CTR). With a bid of €2 per 1,000 impressions and a 1% CTR, a click costs €0.20 on average. That gives you two ways to make clicks cheaper: lower the bid or raise CTR. More on the second in our guide on how to lower cost per click.

How to read CPM and CTR

In Telegram Ads, CPM is first of all the bid you set yourself. The minimum depends on the account type: about €0.7–1 in a euro account for most topics, 0.1 TON in a TON account and 50 Stars in a Stars account. Images, video and custom emoji raise the required bid, so compare CPM only between ads of the same format. How the auction itself works is covered in Telegram Ads auction and bids.

CTR mainly reflects how well the copy fits the placement. A low CTR with normal delivery usually means the ad doesn’t resonate with that particular audience, not that the bid is too low. There is no universal CTR “norm” for Telegram Ads: it depends heavily on the topic, the format and the targeting. Comparing ads with each other inside one campaign is more reliable than chasing other people’s numbers.

When an ad gets few impressions

If an ad gets almost no views, check the bid and the budget chart. A flat spending line while the status is active often means the bid is losing the auction on the selected placements. Raise the bid or widen the list of channels.

CPS: cost per subscriber and bot start

For promoting channels and bots, CPS is the key metric. The account calculates it automatically from the Joined column. But the number has limits: it doesn’t show how many subscribers are still there a week later or how many of them actually read your posts.

To judge subscriber quality, use invite links: a separate link per ad or group of channels shows how many people joined and how many later left. For bots, the start parameter in the link plays the same role — see how to promote a bot with Telegram Ads. A useful derived metric is the cost of a retained subscriber: spend divided by the number of subscribers still in the channel after 7 or 30 days.

How to account for the reseller fee and VAT

The account shows spend in euros inside the ad account. Your real costs are higher. When you work through a reseller — the usual route for Russian advertisers — the budget is increased by the reseller fee (typically 15–20%, 25–28% for education, up to 30–33% for crypto), 22% Russian VAT on the fee and the exchange-rate markup. So for payback calculations, convert spend with the formula from our article on choosing a reseller:

real cost = spend in the account × (1 + fee + fee × VAT) × reseller’s exchange rate

For example, with a 20% fee and 22% VAT the multiplier is 1.244: every €100 spent in the account costs the equivalent of about €124.40 at the reseller’s rate. If you calculate CPS and CPL without this adjustment, payback will look better than it is.

How to calculate payback

ROMI is calculated along the chain: impressions → clicks → subscribers or visits → leads → sales. Telegram Ads covers only the start of this chain; the rest has to come from your own analytics — UTM tags and the pixel for websites, start parameters for bots, invite links for channels.

  1. Collect spend. Take the account spend for the period and multiply it by the reseller multiplier.
  2. Attribute results to the ads. For a website, use UTM tags and the Telegram Ads pixel; for a bot or channel, use a separate link per ad.
  3. Count leads and revenue. Include only sales that came from this campaign.
  4. Calculate ROMI. (revenue − spend) / spend × 100%. For products with repeat purchases, use customer lifetime revenue rather than the first purchase.
  5. Set your maximum CPL. Maximum cost per lead = average order value × margin × lead-to-sale conversion rate.

A hypothetical example (the numbers are made up for illustration): spend including the fee is €1,000, you get 50 leads and 10 sales with €250 margin each. CPL = €20, margin revenue = €2,500, ROMI = (2,500 − 1,000) / 1,000 = 150%.

Payback for a channel

If you buy subscribers for a channel, there’s no direct revenue right away. In that case, compare CPS with what one subscriber brings over a period: through selling ads in the channel, your own products, or revenue from official Telegram ads (channel owners receive 50% of ad revenue from their channels).

Summary table: which metric for which goal

Campaign goal Main metric Supporting metrics Data source
Channel subscribers CPS CTR, retention after 7–30 days ad account, invite links, channel stats
Bot users CPS (starts) share reaching the target step ad account, start parameters, bot database
Website traffic and leads CPL CTR, CPC, site conversion UTM, web analytics, pixel
Sales ROMI CPL, conversion to payment CRM, end-to-end analytics

To collect statistics across many campaigns at once, look at the analytics and automation tools in our Telegram Ads services section.

FAQ

What is CPS in Telegram Ads?

CPS is the cost of one join: a channel subscription or a bot start. The account calculates it as spend divided by the number of joins in the Joined column. To judge quality, also check how many subscribers are still there a week later.

What is a normal CTR in Telegram Ads?

There is no universal norm: CTR depends on the topic, the ad format and the selected channels. Compare ads within one campaign and pause those whose CTR is noticeably lower than the rest for the same audience.

Does Telegram Ads show reach and frequency?

No. The account shows views, but not unique reach or the number of impressions per user. One person may see an ad several times, and each impression is counted.

How do I calculate ROMI for Telegram Ads?

Take spend including the reseller fee and VAT, match it with revenue from sales attributed to the campaign and apply (revenue − spend) / spend × 100%. To tie sales to ads you need UTM tags, the pixel or separate links to your bot and channel.

Why does CPS in the account differ from my own data?

The account counts joins by its own logic and ignores unsubscribes, while your analytics may count only unique users or retention. The account also shows spend without the reseller fee. Compare data for the same period and with the same method.

Should the reseller fee be included in metrics?

For payback, yes. The fee, VAT on it and the exchange-rate difference increase the real cost of every impression, click and subscriber. Without this adjustment ROMI will look higher than it actually is.