Channels make tracking hard because Telegram doesn’t say which link someone joined from unless you build per-click invite links. Bots are different. Telegram has a feature built for exactly this: start links.
How start links work
A normal bot link looks like t.me/YourBot. A start link adds a parameter:
https://t.me/YourBot?start=abc123
When someone opens that link and presses Start, Telegram sends your bot the message /start abc123. Your bot now knows two things: who this person is (their Telegram ID) and the code they came in with.
If abc123 is unique to one ad click, you know exactly which ad, ad set and campaign brought that subscriber. Telegram allows up to 64 characters in the code: letters, digits, _ and -.
The tracking flow, step by step
- The ad links to a tracking page, not straight to Telegram. The page loads in a fraction of a second, records the click (including Meta’s
fbclid, the_fbpcookie, the IP and the device) and gives that click its own code. - The page sends the person to the start link with that code:
t.me/YourBot?start=<code>. - The person presses Start. Your bot receives
/start <code>. - The code is matched to the stored click. Now the subscriber is tied to the exact ad.
- The Start is sent to Meta through the Conversions API, as
LeadorSubscribe, with the click ID and browser ID from step 1. Meta can match it to the person who saw your ad.
From then on, every message, registration or deposit from that Telegram ID can be traced back to the same ad.
Sending the Start to Meta
The event Meta optimises for should be the Start, not a click on your landing page. Send it from a server:
- Event name:
LeadorSubscribe. Pick one and keep it consistent. - Event source: website, because the journey started from a web click.
- Match data:
fbc(built from thefbclid),fbp, IP address and user agent from the click. - Event ID: a unique ID per Start, so Meta never counts the same person twice.
Then point your campaign’s optimisation at that event. For the full background on server events, see Conversions API for Telegram funnels, explained.
Track this in Joinvoo, free.Every join, start and deposit matched to the ad that drove it. First 500 joins on us.Start freeThings that trip people up
Someone already started the bot. If a person has used your bot before and taps a new start link, Telegram still sends /start <code>. Decide whether repeat Starts count. Usually you send only the first Start from each person to the ad platform, and ignore repeats from the same funnel.
The person blocks the bot. You’ll get a status update when that happens. Track it, because a high block rate on one ad tells you the ad is promising something the bot doesn’t deliver.
Mini apps. If your bot opens a mini app, the start code can be passed into the mini app instead. The “open” becomes the lead, and the same matching applies.
Fake Starts. Bots can press Start too. Filter deleted accounts, datacenter clicks and bursts of Starts before anything is sent to Meta, or your pixel learns from them.
Keeping your existing bot
Most people with a bot already have a welcome flow, a captcha or a CRM connection, and don’t want to touch it. You have two options:
- Forward mode. The tracker receives the bot’s updates, records the Start, and passes every update on to your bot’s own server unchanged. Your bot keeps working exactly as before.
- Report mode. Your bot keeps its own connection to Telegram and reports each Start to the tracker with a simple web request (the Telegram ID and the start code).
Either way your bot’s flow stays exactly as it is, and you get per-ad tracking.
Channel or bot?
If you’re still choosing, bots are easier to track and let you message people one-to-one. Channels are better for broadcasting to large audiences. Many funnels use both: a bot for the first conversation, a channel for daily content. Bot funnels vs channel funnels: which one should you run? compares them properly.
Where Joinvoo fits
Joinvoo does all of this for Telegram bots:
- signed start codes per click
- the Start sent to Meta, TikTok and Snapchat from a server
- fake Starts filtered first
- your existing bot kept running in forward mode
- deposits from your affiliate program matched back to the ad
It also tracks channels, groups and DMs in the same dashboard.
Start free. The first 500 subscribers are on us.
