The Stripe email that says a customer cancelled feels sudden. It almost never is. By the time someone clicks cancel, they made the decision days or weeks earlier, and they left a trail on the way out.
For a small SaaS, every one of those customers is MRR you already won. Replacing them means more signups just to stand still. The good news: most customers who leave go quiet first, and going quiet is something you can see.
Here are the warning signs to watch, how to spot them without a data team, and what to say when you catch one.
Why the cancel email is the last thing that happens
Customers rarely cancel the moment something goes wrong. They hit a problem, work around it, use the product a bit less, then a bit less again. Eventually the card charge shows up on a statement, they ask themselves whether they still need it, and the answer is no.
That gap between “starting to drift” and “clicking cancel” is your window. Inside it, a customer is still reachable. They still remember why they signed up. Often the thing pushing them away is small: a setup step they never finished, a feature they couldn’t find, a question they never asked. Those are easy saves, but only while they’re still around.
After they cancel, you’re not saving a customer any more. You’re trying to win one back, which is much harder.
7 signs a customer is about to churn
1. They log in less than their own normal
This is the clearest signal, and the one founders most often measure wrong. Don’t compare a customer to your average user. Compare them to themselves.
A customer who used to log in every weekday and now shows up once a week is slipping, even if once a week is “normal” across your user base. A customer who has always logged in once a week is fine. Look for the change, not the level.
2. They stop using the feature they pay for
Most products have one or two things customers actually come for: sending the invoice, running the report, publishing the post. Logins can stay steady while that core action quietly stops. Someone who logs in, looks around and leaves without doing the main thing is checking whether they still need you.
If you track only one event in your product, make it this one.
3. Fewer people on the account are using it
On team plans, watch how many people are active, not just whether the account is. When the person who championed your tool leaves their company, or their teammates stop showing up, the account is drifting even if the admin still logs in now and then.
4. They never finished setup
Some customers churn before they really started. They paid, connected nothing, imported nothing, and never reached the moment where your product proves itself. They were gone from day one; the billing system just hasn’t found out yet.
If your product has a setup step that matters (connecting an account, installing a snippet, inviting the team), a paying customer who hasn’t done it after a week needs a nudge.
5. A payment fails
Not all churn is a decision. Cards expire, get replaced, or hit a limit, and the subscription lapses even though the customer still wants your product. This is the easiest churn to fix and the most annoying to lose.
Turn on Stripe’s automatic retries and failed-payment emails if you haven’t, and when a payment fails on a customer you care about, send a personal note as well. “Your card bounced, here’s the link to update it” fixes most of these in minutes.
6. Support goes silent, or suddenly gets loud
Two opposite patterns both mean trouble. A customer who used to send questions and feature requests and has gone completely silent has often stopped caring enough to ask. A burst of frustrated tickets from someone who was usually quiet means they’ve hit a wall, and they’re deciding whether it’s worth climbing.
Angry customers still care. The quiet ones are often already halfway out the door.
7. They visit billing, export their data, or downgrade
Some actions only make sense if someone is preparing to leave: exporting all their data, opening the billing or cancel page, removing teammates, or dropping to a cheaper plan. Any one of these on its own can be innocent. Combined with less usage, they’re a strong signal.
Know who’s slipping before they cancel.
NChurn pings you in Slack when a customer starts going quiet, weeks before they leave.
How to spot them without a data team
You don’t need a churn model or a dashboard nobody opens. For most small SaaS products, a simple weekly routine catches the majority of slipping customers.
- Record “last seen” for every account. Update it whenever someone uses the product. If you already store a
last_loginfield, you’re most of the way there. - Track your one core action. Store when each account last did the main thing your product is for.
- Once a week, list paying accounts that changed. Anyone whose usage dropped sharply against their own usual pattern, anyone who hasn’t done the core action in two weeks, and anyone with a failed payment.
- Sort that list by how much they pay you. Start at the top. A quiet customer on your biggest plan is worth a message today.
A small example of what that weekly list can look like:
| Customer | Plan | Usually | Last 2 weeks | Signal |
|---|---|---|---|---|
| Acme Studio | $99/mo | Daily | 2 logins | Usage dropped |
| Northwind | $49/mo | 3× a week | No reports run | Core feature stopped |
| Brightline | $29/mo | Weekly | Weekly | Card failed |
The exact thresholds matter less than doing it every week. A rough list you check on Monday beats a perfect model you never look at.
What to do when you spot one
Reach out personally, and do it while they’re still active enough to read your email. A plain message from the founder works far better than an automated “We miss you!” campaign.
Keep it short and make it about them:
Hi Sam, I noticed you haven’t run a report in a couple of weeks, which is unusual for your team. Did something get in the way, or is there anything I can help with? Happy to jump on a quick call, or just reply here.
Then listen. Usually you’ll hear one of three things:
- A fixable problem. Something broke, confused them, or got harder after a change. Fix it, tell them it’s fixed, and you’ve likely kept the customer and found a bug.
- A change on their side. A project ended, a teammate left, the budget got cut. You may not save these, but a pause or a cheaper plan can keep them from leaving for good.
- Silence. Not every message gets a reply. One gentle follow-up a few days later is fine; after that, let it go.
Resist the urge to lead with a discount. It teaches customers that threatening to leave gets them a better price, and it doesn’t fix whatever made them drift. Offer help first. Save the discount for when money is genuinely the reason.
The mistakes that make churn feel sudden
- Only looking at your churn rate. A monthly churn percentage tells you how many customers already left. It can’t tell you who is about to.
- Waiting for exit surveys. By the time someone fills one in, they’ve gone, and most people pick “too expensive” or “other” just to get through the form.
- Comparing everyone to the average. Your quietest customer might be perfectly happy, and a busy one who suddenly slows down might be leaving. Each customer is their own baseline.
- Checking once and forgetting. Slipping customers show up every week. Catching them is a habit, not a project.
Proactive beats reactive
Most of the customers you lose were telling you something before they left. They logged in less, stopped doing the thing they paid for, or let a failed card slide. None of it was hidden. It just wasn’t in front of you at the moment it mattered.
Watch the signals, check every week, and reach out while there’s still someone to talk to. Even saving one or two customers a month adds up to real MRR you’d otherwise be replacing.