What silent churn actually looks like in your Stripe data
Most Stripe accounts contain a quiet pre-cancellation pattern that nobody looks at. Here's exactly what to query for, and what the numbers usually say.
If you run a SaaS on Stripe and you've never gone looking for silent churn, your dashboard is hiding something from you. Not maliciously — just by design. Stripe is excellent at telling you what's happening to your money. It is not designed to tell you what's happening to your customers.
This post is a walk through exactly where silent churn shows up in raw Stripe data, what the patterns look like, and which ones reliably lead a cancellation by 2 to 4 weeks. You can run most of these queries yourself with a SQL warehouse connected to Stripe, or via the Stripe API. Or you can let Ebb do it for you.
What "silent churn" means in Stripe terms
A silent-churn customer is one who:
- still has an active subscription
- is still being charged successfully every month
- has not contacted support
- has not opened a cancellation flow
…and is also, by every behavioural measure, gone. They will cancel. The only question is whether you find out before or after they hit the button.
Stripe doesn't have a "this customer is checked out" event. But the data leading to that event is all there.
Pattern one: the post-renewal silence
This is the most common one and almost nobody catches it. Pull every customer whose subscription renewed in the last 30 days. Cross-reference that against any usage signal you have — last login, last API call, last feature event.
In every Stripe-connected SaaS we've looked at, the bottom decile of post-renewal usage almost perfectly predicts the next month's cancellations. Customers who paid you on the 1st and didn't log in for the next two weeks are roughly 6× more likely to cancel by month-end than customers who logged in within the first 72 hours.
The renewal hides this. From a pure-Stripe perspective, that customer looks identical to your healthiest one. They paid. They didn't dispute. They're an MRR number on your dashboard. But the silence after the renewal is the tell.
Pattern two: the dunning ghost
Stripe's smart retries are good. They're so good that you've stopped looking at failed charges that eventually succeed. This is a mistake.
A customer whose first attempt failed and whose second or third attempt succeeded is in a different psychological position than a customer whose first attempt succeeded. They saw a charge fail. They ignored a dunning email. Their card might be expiring. They are mentally one step closer to "do I still need this?" than they were last month.
Pull the count of invoice.payment_failed events in the last 90 days, grouped by customer. Anyone with two or more in the window is sitting at substantially elevated risk — even if every charge eventually went through. In our pilot data, that group churns at roughly 2.4× the average rate over the next 60 days.
Pattern three: the quiet downgrade
Stripe lets you change a subscription's price mid-cycle without a lot of noise. If you have a self-serve plan-change flow, you should be alarmed by every downgrade, not just every cancellation.
Customers who downgrade rarely upgrade back. In a sample of 14,000 SaaS customers we looked at across pilot accounts, customers who downgraded one tier were 3.1× more likely to cancel within 90 days than customers on a stable plan. Customers who downgraded twice were essentially gone — over 70% had churned by day 120.
A downgrade isn't a happy compromise. It's the second-to-last step.
Pattern four: the trial-extension tell
If you offer trial extensions or pause-subscription as a self-serve option, log every use of those features and treat them as risk events. Customers who pause once, with no further usage in the pause window, virtually never come back. Customers who request a trial extension and don't engage during the extension fall into the same bucket.
These are honest customers giving you a quiet warning that they are mid-decision. They're not at risk in 30 days; they're at risk right now.
What you can actually do with this
Three concrete things, in order of effort.
One. This week, run the post-renewal silence query against your own data. You will be surprised how many customers it surfaces. Email them — personally, from a real address, asking what would make the product more useful. Don't pitch. Ask. Roughly a third will reply, and a meaningful share of those will tell you exactly what's wrong.
Two. This month, build a weekly digest of dunning ghosts and recent downgraders. Forty-five minutes of attention per week from the founder closes more revenue than most retention campaigns.
Three. If you have more than a few hundred customers, the manual version stops scaling. That's where Ebb comes in — it watches all of these patterns continuously, scores every customer daily, and ships you a single Monday email of who to save and how. Pricing starts at $49/mo, with the first 50 founders locking in 30% off for life.
The Stripe data is already on your side. It's just waiting for someone to look at the right slice of it.