How to track Telegram bot subscribers from Facebook ads

A Telegram bot can tell you exactly which ad each subscriber came from, thanks to start links. Here's how bot tracking works, how to send each Start back to Meta, and how to keep your existing bot running.

6 min read
How to track Telegram bot subscribers from Facebook ads
On this page

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.

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

  1. 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 _fbp cookie, the IP and the device) and gives that click its own code.
  2. The page sends the person to the start link with that code: t.me/YourBot?start=<code>.
  3. The person presses Start. Your bot receives /start <code>.
  4. The code is matched to the stored click. Now the subscriber is tied to the exact ad.
  5. The Start is sent to Meta through the Conversions API, as Lead or Subscribe, 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: Lead or Subscribe. Pick one and keep it consistent.
  • Event source: website, because the journey started from a web click.
  • Match data: fbc (built from the fbclid), 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 free

Things 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.

Written by

Joinvoo Team

The people building Joinvoo

We build Joinvoo, the tracker for media buyers who run ads to Telegram channels, groups and bots. We write practical guides on tracking, server-side events and getting ad platforms to optimise for real people.

Start tracking free

Make your ads buy real people, not noise.

Joinvoo tracks every Telegram join, website sign-up and deposit from Meta, TikTok, Snapchat and Google, filters the fakes, and sends the real ones back server-side. Your first 500 joins are free.

Start free Read the setup guideNo card needed · about 10 minutes to set up
Back to blog