Sign in
Telegram Ads Help Center
Account menu

Telegram Ads measurement & attribution — the practical playbook

How to actually measure Telegram Ads performance when the platform itself reports almost nothing. UTM strategy, bot-funnel deep-links, cohort inference.

7 min · updated 2026-09-23

Attribution is the single biggest reason performance marketers undervalue Telegram Ads. Unlike Google or Meta — which surface conversion data inside the cabinet — Telegram Ads tells you almost nothing about what happened *after* the click. This article is the practical playbook for making Telegram measurable without the platform's help.

#TL;DR

  • The Telegram Ads cabinet reports **reach and impressions**, not conversions
  • UTM parameters on your CTA URL are the foundation — everything downstream attaches there
  • For bot/mini-app destinations, **deep-link start parameters** carry attribution into the funnel
  • You cannot attribute back to specific channels in EUR cabinet — only aggregate campaign spend
  • Workaround: **rotate creative + use unique tracking links per campaign**, infer channel quality from cohort behaviour downstream

#What the cabinet actually shows you

**EUR cabinet** (the official Telegram Ads Platform):

  • Aggregate impressions per campaign
  • Aggregate reach (deduplicated unique users)
  • Daily spend
  • Approximate CTR (delivered by Telegram, methodology opaque)
  • **No** channel-level breakdown after delivery (you choose channels at setup, but performance is averaged)
  • **No** demographic breakdown of who clicked
  • **No** conversion or revenue data

**Gram cabinet (formerly the TON cabinet)** — often described as channel-owner paid posts, which it is not:

  • It is an ordinary Telegram Ads account on ads.telegram.org, funded in Gram (GRAM, formerly Toncoin) through Fragment, serving the same sponsored messages
  • Plan for the same gaps as above: no conversion data, so UTM tags and deep-link parameters carry your attribution

Everything else — conversion rates, ROAS, channel quality, geo performance — you have to infer or instrument yourself.

#UTM parameter strategy

The foundational move: every CTA URL needs UTM tags. Telegram passes them through without modification.

Recommended structure:

```

https://your-site.com/landing

?utm_source=telegram

&utm_medium=tg_ads

&utm_campaign=launch-jan-2026

&utm_content=banner-v3-headline-a

&utm_term=crypto-channels-batch-1

```

Key conventions:

  • **utm_source** = always `telegram` (separates from organic / other paid)
  • **utm_medium** = `tg_ads` (EUR cabinet) vs `tg_organic` (channel-owner native posts) vs `tg_ton` (Gram-cabinet sponsored)
  • **utm_campaign** = your campaign name + month
  • **utm_content** = creative variant (image-v1, text-v2, etc.)
  • **utm_term** = channel batch or audience segment (since per-channel attribution isn't surfaced, use it to bucket)

Read these in your destination analytics (GA4, Mixpanel, PostHog). This gets you campaign-level + creative-variant attribution.

If your CTA goes to a Telegram bot or mini-app (`t.me/yourbot?start=PARAM` or `https://t.me/yourbot/yourminiapp?startapp=PARAM`), the `start` / `startapp` parameter flows into the bot's first message as `/start PARAM`.

Use it as your attribution token:

```

https://t.me/yourbot?start=tgad_jan2026_bannerA_cryptobatch1

```

In your bot handler:

```js

bot.command('start', (ctx) => {

const payload = ctx.match // 'tgad_jan2026_bannerA_cryptobatch1'

// log to your analytics with this token

// associate with user.id for full downstream funnel

})

```

Once you have `(user_id, start_payload)`, every downstream event in your bot (purchase, signup, deposit, mini-app login) inherits attribution. This is the most reliable measurement path on Telegram.

#Cohort inference for channel quality

Since per-channel breakdown isn't surfaced by EUR cabinet, the workaround is **cohort isolation**.

Run a single creative against a single channel batch for 3–5 days. Note:

  • Spend
  • Total UTMs / deep-link hits attributed to that campaign
  • Downstream conversion behaviour from that cohort

Then switch the same creative to a different batch. Compare. Over 4–6 isolation experiments, you build a per-channel quality ranking that the platform refuses to give you directly.

This is slow (~2 weeks per batch) but produces real signal. Big spenders run dozens of these in parallel with unique `utm_term` tags.

#Conversion tools that work

ToolWhat it coversTelegram-specific notes
**GA4**Web destinationsTreats UTMs natively. Set tg_ads as a paid channel grouping.
**Mixpanel / Amplitude**Web + app + bot eventsBest for bot funnels — instrument `/start` payload + downstream events.
**PostHog**Web + productSelf-host friendly, EU-compliant, cheap at scale.
**AppsFlyer / Adjust**Mobile app installsTelegram traffic shows up as organic unless you use a deferred deep-link wrapper.
**In-bot custom**Bot + Telegram-only flowsMost reliable. Store `(tg_user_id, attribution_token, event_log)` in your own DB.

#Common pitfalls

1. **Forgetting UTM on CTA URL.** Telegram Ads doesn't add them. If you launch without tags, every click is "(direct)" in your analytics — fully unattributed.

2. **Reusing the same UTM across creatives.** You lose ability to compare variants. Always vary at minimum `utm_content`.

3. **Trusting cabinet CTR alone.** The number isn't independently verifiable. Compare against UTM-tagged landing-page hits for sanity check.

4. **Ignoring the lag.** Telegram cabinet reporting lags 4–8 hours. Don't optimise budget based on the same-day numbers.

5. **Treating Gram-cabinet ads as channel-owner posts.** They are ordinary sponsored messages bought in a Telegram Ads account funded with Gram; channel owners neither sell nor report them. Measure them with the same UTM and deep-link setup as the euro cabinet.

#See also

Cabinet differences: /wiki/eur-vs-ton-vs-stars. Pricing reference: /wiki/telegram-ads-pricing-guide. Creative iteration: /wiki/telegram-ads-creative-best-practices. Why this isn't Google: /wiki/telegram-ads-vs-google-ads.

Keep reading

Related glossary terms

Need a team to launch?

G.Media Agency — message us on Telegram

If reading guides is slower than launching — the team behind the Telegram Ads Spy archive runs yours. 30-day pilot from €5K media spend.

Open g.media →