It’s one of the most common things media buyers running Telegram funnels tell us. Ads Manager shows hundreds of leads at a lovely cost per result. The channel grows by a fraction of that. Deposits drop. Nobody can say why.
We’ve seen a trading funnel in Africa where Meta reported more than 900 leads in a period where around 40 real people joined. The ads weren’t broken. Meta was doing exactly what it was told: finding more of whatever event it was being sent. The event just wasn’t a join.
Why Meta’s lead count and your channel don’t match
1. The Lead fires on the landing page, not on the join
Most Telegram funnels go: ad → landing page → Telegram. If the pixel fires Lead when the page loads, or when someone taps the join button, Meta counts a lead before anyone reaches Telegram.
Many of those people never join. Some don’t have Telegram installed. Some tap by accident. Some are bots. Meta doesn’t know the difference, so it optimises for people who tap buttons, not people who join.
2. Junk placements
Audience Network and some in-app placements send a lot of accidental clicks and low-intent traffic. They look cheap in Ads Manager and rarely turn into subscribers. Check your placement breakdown: if a big share of “leads” comes from one placement with a terrible join rate, that’s your leak.
3. People without Telegram
In many African and Asian markets, a real share of people who click a Telegram ad don’t have the app installed, or aren’t logged in on that phone. They land, see an app store prompt, and leave. To a pixel on the landing page they look exactly like a lead.
4. Bots and fake joins
Paid traffic to Telegram attracts automated clicks and fake accounts. If your setup counts their clicks or joins as conversions, Meta learns to find more of them. See Why your cost per subscriber lies to you for how quickly this inflates your numbers.
5. Modelled and view-through conversions
Meta fills gaps in its data with modelled conversions, and default attribution can credit a conversion to someone who only saw your ad. That’s fine when the event is real, but it stacks on top of everything above.
How to check if this is happening to you
You don’t need any tool for a first check. For the last 7 days, write down:
| Number | Where it comes from |
|---|---|
| Link clicks | Ads Manager |
| Leads (or your result) | Ads Manager |
| New members | Telegram channel stats |
| Registrations and deposits | Your affiliate program or CRM |
Then compare:
- Leads ÷ new members. Close to 1 is healthy. If Meta’s leads are several times your real joins, Meta is optimising for the wrong event.
- Clicks → members. On a clean funnel, a healthy share of clicks become members. A very low rate points to placement, landing page or “no Telegram” problems.
- Members → deposits. If joins look fine but deposits collapsed, the people Meta is finding are low quality.
How to fix it
Make the real join the event Meta optimises for
Stop firing Lead on page load or button taps. Instead, send the event only when someone actually joins your channel or starts your bot, and send it from a server through the Conversions API. That way Meta only ever learns from people who made it into Telegram. How to track Telegram channel joins from Meta ads walks through the setup.
Filter fake joins before Meta sees them
Bots, deleted accounts and repeat joiners shouldn’t be sent as conversions. Filter them out before the event is sent, so Meta’s learning stays clean.
Optimise for deposits once you have volume
Once joins are clean, connect your affiliate program’s postback and send first deposits back as Purchase with their value. Then you can run campaigns that optimise for people who pay, not just people who join. Cost per FTD vs cost per join: what you should actually optimise covers when to make that switch.
Fix the leaks you found
- Exclude placements with a terrible click-to-join rate.
- Make your landing page open Telegram straight away, with a clear fallback for people who don’t have it.
- Use per-click links so you can see exactly which ads bring real members.
What happened with that 900-lead funnel
Once the funnel sent real joins from a server instead of page-level leads, the reported numbers dropped to match reality. That looks worse in Ads Manager for about a day. Then Meta started finding people who actually joined: click-to-subscriber rates rose sharply and first deposits came back.
Lower “results” on a real event beat high “results” on a fake one.
Where Joinvoo fits
Joinvoo sends Meta, TikTok and Snapchat the real join, matched to the exact ad click and sent from a server. It filters fake joins first, and can send deposits from your affiliate program back with their value. You also get the comparison above (clicks, joins, deposits per ad) without a spreadsheet.
Start free. Your first 500 joins are free.


