Zombie Accounts: A 44,000-User Study Found 23% of "Active" SaaS Customers Have Already Checked Out
A 44,000-user study found the median SaaS company has 23% of its paying base fully disengaged. Your churn number can't see them until they cancel.
Pull up your subscriber count in Stripe and every one of those rows says the same thing: active, not canceled, card on file, next invoice scheduled. None of that tells you whether anyone is using what they're paying for. A subscription status field and a product usage table live in different systems, get queried by different teams, and almost never get joined together — which means a meaningful slice of your "healthy" customer base has already left in every sense that matters, and your churn dashboard has no way to know.
That figure comes from a Customerscore.io study built on structured customer data — billing status joined against product usage — pulled from roughly 44,000 SaaS users across a range of products and categories. The finding: at the median company, close to one in four customers who look completely fine on a billing dashboard have not touched the product in the last 30 days. Paid in full, not canceled, invisible to revenue reporting, and already gone in every way that predicts what happens next.
"Active" is a billing status, not a product signal
This isn't a data quality problem you can fix by trying harder. It's structural. A subscription's status field in Stripe flips to canceled at exactly one moment: when someone cancels it, or when dunning finally exhausts its retries. Nothing about that field moves when a customer stops opening your app, stops importing data, stops inviting teammates, or quietly routes around your product entirely. The billing system was built to answer "are we still getting paid," and it answers that question perfectly. It was never built to answer "is this customer getting value," and most teams never build a second system that does.
The result is a blind spot with a specific shape: your logo retention rate, your NRR, your MRR — every headline number derived from subscription status — overstates how healthy your customer base actually is, by roughly the size of your zombie rate. A company reporting 92% annual logo retention with a 23% zombie rate isn't lying about the 92%. It's reporting a number that's technically accurate and directionally misleading, because a chunk of that retained 92% is on a countdown clock nobody's watching.
The range is wide, and the reason why is useful
The 23% figure is a median across very different kinds of products, and the spread around it tells you something. The study found zombie rates ranging from close to zero up past 35%, and the pattern wasn't random — it tracked how visible value is inside the product itself. A survey platform where value means "responses collected" has almost nowhere for a zombie account to hide: no responses is an unambiguous, undeniable signal, visible to the customer and to you at the same time. Tools where value is more passive — storage that sits there working whether or not anyone checks it, monitoring software that only gets opened when something breaks, a dashboard someone set up once and never revisited — run considerably higher, because the product can keep "working" from the customer's perspective without anyone actually opening it.
| Product type | Typical zombie rate | Why |
|---|---|---|
| Active-output tools (surveys, forms, outbound campaigns) | Near 0% | No output is instantly obvious to the customer, not just to you |
| Collaborative / workflow tools (project management, docs) | Low-mid teens | Value requires a team habit to form; one disengaged member can still look active via teammates |
| Passive infrastructure (storage, monitoring, backups) | Mid-to-high 20s | Product delivers value without requiring anyone to open it, until something breaks |
| Dashboard / reporting tools with no workflow dependency | 30%+ | Nothing else in the customer's process breaks if they stop checking it |
Categorization based on the pattern described in Customerscore.io's 44,000-user retention study; exact rates vary by company.
If your product sits in the passive-infrastructure or pure-dashboard category, a higher zombie rate isn't automatically a red flag on its own — it's closer to a tax you pay for the shape of your product. What matters is whether you're measuring it at all, and whether it's moving.
Every product has one threshold that actually separates retained from churned
The more useful finding in the study isn't the 23% headline, it's what sits underneath it: across every product category examined, there was one specific behavioral threshold that reliably separated the customers who renewed from the customers who didn't. The action itself varies completely by product — minutes of usage, responses collected, tasks created, rooms booked, documents uploaded — but the shape of the finding held everywhere: below a certain frequency of that one action, retention collapses; above it, retention holds. Not a gradual slope. A threshold.
That's a different claim than "engaged customers churn less," which is trivially true and not actionable. It's a claim that you can find one specific, measurable action in your own usage data, set a frequency and recency bar on it, and get a genuinely predictive signal out of a metric most teams already have sitting in a product analytics tool nobody's cross-referenced against Stripe. We've written before about building a churn health score out of several weighted signals — this is upstream of that. Before you weight five signals into a composite score, find the one action that the data says actually matters for your product, because a health score built on the wrong core signal will always underperform one built on the right single threshold plus supporting context.
Source: Customerscore.io, SaaS Retention Statistics study, ~44,000 SaaS users
Finding your own threshold without a data science team
You don't need a model to get most of the value here. You need one query and one honest look at a scatter plot.
Step 1: pick three candidate actions
Not "logged in" — that's too weak, as we've covered in the context of building a health score. Pick two or three specific actions that plausibly represent your product delivering value: for a project management tool that might be "tasks completed," "comments left," and "active projects." For a scheduling tool it might be "meetings booked," "team members with a synced calendar," and "no-show rate."
Step 2: pull 12 months of accounts that churned and 12 months that renewed
For each group, calculate the trailing-30-day count of each candidate action at a fixed point before the outcome — 60 days before cancellation for churned accounts, 60 days before the most recent renewal for retained ones. Plot the distribution for each candidate action, churned versus retained, side by side.
Step 3: look for the cliff, not the slope
A weak signal shows a gradual difference between the two groups. A real threshold shows something closer to a cliff — retained accounts cluster clearly above a specific count, churned accounts cluster clearly below it, with a thin middle band. That cliff is your number. It won't be a round figure like "10 tasks a month" — it'll be something specific to your data, like 7 or 23, and that specificity is exactly what makes it useful instead of a guess dressed up as a rule of thumb.
Step 4: turn it into a tracked rate, not a one-time chart
Once you have a threshold, calculate the percentage of currently-active, paying accounts falling below it in the trailing 30 days. That's your zombie rate. Track it monthly, next to your regular retention rate, not buried inside a product analytics tool nobody checks. The two numbers should move together on a lag — a rising zombie rate this month is a preview of a worse retention number two or three months out, the same relationship early-lifecycle activation data has with first-year churn, just applicable to an account at any point in its life, not only the first 90 days.
What to actually do with a zombie account once you've found it
Finding the list is the easy part. Two mistakes are common once teams have it: treating every zombie account identically, and waiting for it to become a cancellation before acting.
Segment first. A zombie account on a team plan where three of five seats are active isn't the same problem as one where zero of five are — the first is a seat-utilization conversation, the second is a full-account save. A zombie account that went quiet abruptly after months of steady use is a different case than one that never really activated in the first place; the first often has an external cause worth a direct outreach ("did something change on your end?"), the second is closer to the onboarding failure we cover in the early-lifecycle piece above.
Then act before the cancel button, not after. A customer who's been silently disengaged for 60 days and then finally opens your cancellation flow is the easiest save in the world to lose, because by the time they're there, they've had two months to mentally exit already. Reaching a zombie account proactively — a direct check-in, a guided re-onboarding, sometimes just surfacing the specific thing they stopped doing — converts meaningfully better than any offer you can show someone who's already decided to click cancel. Our guide to why customers cancel breaks down the reasons people give at that final moment; the zombie signal is your chance to intervene while the reason is still forming instead of after they've already written it down in a cancel survey.
Run the numbers before you decide how much outreach effort a given zombie segment deserves — a retention rate calculator makes it straightforward to model what even a partial recovery rate on your zombie population is worth against your current blended retention, since the accounts most worth chasing are usually the ones with the most revenue at stake, not just the largest raw count.
None of this replaces a cancellation flow — it runs earlier in the funnel. CancelFlow is built for the moment a subscriber has already decided to leave and is telling you why on the way out. A zombie rate metric is what gives you a shot at some of those subscribers weeks before they ever load that page, while there's still a product problem to fix instead of only an offer left to make.
Frequently asked questions
What is a zombie account in SaaS?+
A zombie account is a subscriber whose subscription status reads "active" in your billing system — still paying, not canceled — but who has stopped using the product entirely. They show up as retained revenue in every dashboard until the day they cancel or their payment fails, because subscription status and product engagement are tracked separately and almost nobody joins the two together.
How do you calculate your zombie rate?+
Define one behavioral event specific to your product that correlates with 12-month retention — a core action, not just a login. Then, among customers with an active, paid subscription, calculate the share who have not performed that action in the trailing 30 days. That percentage is your zombie rate. A customerscore.io study across roughly 44,000 SaaS users found a median of 23%, with a range from near zero up to 35%+ depending on the product.
Is a disengaged paying customer the same thing as a churn risk?+
Not identically, but close. Some zombie accounts are dormant for a reason that has nothing to do with product fit — a seasonal business, a project that wrapped up, a manager account nobody logs into but that gates other users' access. The share that is a genuine churn risk is usually large, though: disengagement is one of the few signals that consistently precedes cancellation by weeks or months rather than showing up the same day.
What is a good zombie rate for a SaaS company?+
There is no universal target, because it depends entirely on how visible usage is in your product. A tool where value is inherently visible in the data — a survey platform where "no responses" is unambiguous, a form builder where "no submissions" is unambiguous — can run close to 0%. A tool with passive value, like storage or monitoring software that works whether or not anyone opens the dashboard, will run higher no matter how healthy the business is. Track your own number over time rather than benchmarking against an industry figure.
Stop losing subscribers today
One script tag. One function call. A live cancellation flow in under 10 minutes.
Start free trial →