glossary

Subscriber Churn: Definition and How to Reduce It

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.

Definition and formula

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:

  • Churn rate = subscribers lost during the period ÷ subscribers at the start of the period × 100.
  • Retention rate = 100 − churn rate. Same number, friendlier framing.
  • Net list growth = (new subscribers − lost subscribers) ÷ subscribers at start × 100.

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 versus silent disengagement

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.

Churn signals specific to messaging bots

Because opens do not exist, you have to build churn detection out of the events the bot genuinely observes. Four are worth instrumenting:

  • Delivery failures. Every failed send with a forbidden error is a confirmed block. Track these as a rate per broadcast, not as a raw count, so a bigger send does not look like a worse one.
  • Interaction recency. The last time a subscriber sent anything to the bot — a command, a button press, a category change. Recency is the closest thing a bot has to an engagement score.
  • Campaign activation. How many people who received an offer actually opened the deep link and claimed it. A cohort whose activation rate collapses is disengaging even while delivery stays at 100 percent.
  • Daily active subscribers. Watch the active count against the total. A rising total with a flat active count is silent churn in progress, and it is the clearest single chart for spotting it.

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.

Typical causes: frequency, relevance, timing

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.

Calculating churn per cohort and per source

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.

Reduction tactics that actually move the number

  • Deliver value before you ask for anything. If your onboarding puts a channel-subscription gate in front of the promised offer, measure how many people reach the gate and how many clear it. That single step is often the largest churn point in the whole funnel, and it happens before the person has received anything.
  • Segment instead of broadcasting. Sending to language, source, tag or category rather than to everyone shrinks the audience and raises the response. A smaller, relevant send beats a large, ignored one on every metric that matters, including blocks.
  • Give each category its own welcome. The first message after a category pick is the highest-attention moment you will get. Matching the offer to the interest the subscriber just declared costs nothing and removes the most common relevance complaint outright.
  • Budget notifications per subscriber. Add up drips, scheduled broadcasts and campaign sends that can overlap for one person, then space them deliberately. Spread drip delays instead of clustering them in the first hours.
  • Schedule in the subscriber's timezone. Recurring sends should fire against local time, not whatever hour is convenient for your server.
  • Write per language, do not translate late. Every onboarding and drip message should exist in the language the subscriber confirmed. A message in the wrong language is functionally a blank message.
  • Fix sources, not just copy. If one placement churns at several times the rate of the others, no rewrite will save it. Cut the spend and move it to the source with the better retained cohort.
  • Retire dead campaigns. An expired offer that keeps sending is pure churn pressure. Give campaigns a real active window and let them close themselves.

When churn is healthy rather than harmful

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.

Request access

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