Subscriber churn is the share of your audience that leaves, blocks you or quietly stops paying attention over a given period — and on a messaging channel, most of it is invisible until you go looking for it.
Subscriber churn is the rate at which people stop being reachable subscribers. In a mailing list that means unsubscribes, bounces and dead addresses. On a Telegram bot it means people who block the bot, delete their account, or stay technically subscribed while ignoring everything you send.
The basic churn rate definition is a simple ratio over a fixed window:
Three rules keep the number honest. Fix the window and never move it — weekly and monthly churn are not comparable, and a monthly figure is not four times a weekly one. Use the count at the start of the period as the denominator, not the end, or growth will flatter you; if you are adding subscribers very fast, use the average of start and end and say so. And never report net growth as though it were churn. A list that starts the month at 1,400, adds 900 and loses 400 looks healthy at plus-500 while quietly burning through nearly a third of the base it began with.
Hard churn is the explicit exit. On Telegram there is no unsubscribe link — a person who is done with you blocks the bot. You do not find out at the moment they do it. You find out on your next send, when the Bot API rejects the message with a forbidden error saying the bot was blocked by that user. Deleted and deactivated accounts surface the same way. This is the honest, unambiguous part of your list churn, and it is measured at delivery time rather than at exit time.
Silent disengagement is everyone else: still subscribed, still technically deliverable, no longer reading. This is the bigger number in almost every funnel, and it is the one most operators never quantify because the channel does not hand it to you. A bot cannot see whether a message was opened. It has no read receipts, no open pixel, and an inline URL button hands the tap straight to the browser rather than reporting it back to the bot. Silence looks identical to attention.
The practical consequence: if you only count blocks, you will conclude your churn is tiny and your list is fine, right up until a broadcast to the whole list produces the response of a small fraction of it.
Because opens do not exist, you have to build churn detection out of the events the bot genuinely observes. Four are worth instrumenting:
One structural advantage of bots over email: the list cleans itself. When a send fails because the person blocked the bot, that subscriber can be marked and dropped from future sends automatically, so you are never guessing whether an address is still alive. Your reachable count stays accurate — which is exactly what makes the churn denominator trustworthy in the first place.
Almost all avoidable churn traces back to one of three failures, and they are worth separating because the fixes are completely different.
Frequency. Telegram messages arrive as push notifications on a device the person also uses to talk to friends and family. The tolerance is far lower than for email, and the exit is one tap. Frequency damage is usually accidental rather than deliberate: a broadcast goes out on the same morning that two drip messages fire and a campaign re-engagement lands, and a subscriber gets four notifications from one bot before lunch. Count messages per subscriber per week, not messages sent per week.
Relevance. Someone who joined for football content and receives casino promos in a language they did not choose has been given a reason to block you. Relevance failures are cheap to avoid on a bot because the subscriber volunteers the answers during onboarding — the language they confirm and the category they pick are the two strongest targeting signals you will ever collect, and they cost one tap each.
Timing. Two kinds. First, time of day: a promo landing at 3 a.m. local time earns blocks that the same promo at 7 p.m. would not, which is why scheduled sends need a timezone rather than a server clock. Second, time since join: the drip that arrives ten minutes after someone joins and the one that arrives on day four are read by very different people. Interest decays fast, so a long silence after onboarding is itself a churn cause.
There is also a mechanical timing factor operators forget. Telegram rate-limits bulk sending, so a large broadcast drains over minutes rather than landing at once — the person at the end of the queue gets a different experience from the person at the front. If your sends are large enough for that to matter, read the detail in Telegram broadcast limits before you blame the copy.
A single list-wide churn number is nearly useless for decisions. It blends a six-month veteran audience with last Tuesday's traffic buy, and the blend hides both. Two cuts make it actionable.
By cohort. Group subscribers by the week or month they joined and measure how many of each group are still reachable and still active at day 1, 7, 14 and 30. Churn is heavily front-loaded — most of it happens in the first few days, when the person is deciding what this bot is for. Cohort curves also let you prove a change worked, because a fix applied in March shows up as a different curve for the March cohort while every earlier cohort stays fixed as a control. The mechanics are covered in retention cohort.
By source. Tag every subscriber with where they came from at the moment they start the bot — the deep link payload carries that, and it is the only attribution signal that survives the jump into Telegram. Then compute churn per source. The result frequently reorders your channels: the placement with the cheapest cost per subscriber is often the one with the worst 30-day retention, and the two facts together give you a cost per retainedsubscriber, which is the number worth optimising. Growth, active users, cohort retention and campaign activation are all cuttable this way in Telegram bot analytics.
Not all churn is a problem to be solved. Some of it is your list telling you the truth, and suppressing it would only make your reporting worse.
Incentivised or low-intent traffic churns hard and fast by design; when that cohort clears out in week one, the number spikes and the list gets better. A deliberate high-tempo push around a short campaign window will cost you some subscribers — that is a trade, and it is only a bad one if the activations do not cover it. Reactivation attempts on a long-dormant segment often produce a wave of blocks, but those people were already gone in every sense except the count. And a promo-hunter audience that arrives for one code and leaves after redeeming it is behaving exactly as the offer invited it to.
The distinction is whether churn is concentrated or diffuse. Concentrated churn — one source, one cohort, one campaign, one send — is usually informative and often fine. Diffuse churn across every source and every cohort at once is the dangerous kind, because it means the problem is your cadence or your relevance rather than a particular batch of traffic. Set your own baseline per source over several cohorts and judge each new number against that, rather than against a benchmark from someone else's list.
mySkua is in an invite-only private beta, so accounts are created by request rather than self-serve. If you run Telegram funnels and want source-tagged subscribers, targeted drips, retention cohorts and delivery stats on one panel — several bots per account, each with its own audience — join the waitlist and tell us what you run: which traffic sources, which languages, how many bots. We prioritise access for setups we can genuinely help.
Related: Retention cohort · Broadcast limits · Bot analytics.
Want this on your own bots?
mySkua is in a closed beta and accounts are opened in small batches. Tell us what you run and we will come back to you.
Request access