Key takeaways
- Five signal families cover most churn language.
- One angry, resolved ticket is noise. The same unresolved problem raised three times is a pattern.
- Score severity and persistence, then calibrate the threshold against your own renewals and churn.
- If a signal appears in 2% of conversations and you review 2%, you see about 1 in 50 of them.
What churn signals should you look for in customer conversations?
Start with five signal families.
They aren’t keyword searches: “cancel” might mean a duplicate order.
| Signal family | What it might sound like | Why it matters |
|---|---|---|
| Repeated unresolved friction | “This is the third ticket,” “We’re still having the same issue” | The problem persists despite repeated fixes |
| Escalation / executive involvement | “I’m looping in our VP,” “Can someone senior call me?” | The issue is moving beyond the day-to-day user |
| Alternative evaluation | “We’re looking at other options,” “Another vendor supports this” | The customer is considering a different solution |
| Value / commercial pressure | “What are we paying for?” “We aren’t using enough of this” | The customer is questioning the economics |
| Relationship disruption | “I’m leaving the company,” “Sam will own this now” | An internal advocate may be changing |
How do you tell frustration from churn risk?
Separate severity (how consequential is the signal?), persistence (is it recurring?) and resolution (was the problem actually fixed?).
An angry customer whose ticket is fixed in 15 minutes is fine. A polite one who reports the same integration failure three times in a month, then says “we’re reviewing alternatives before renewal,” deserves the attention.
How do you score churn risk without drowning CSMs in alerts?
Use a starting rubric, then calibrate it.
Score each signal family 0–3 on severity and 0–3 on persistence, and take the highest of each for the account.
| Score | Severity (per conversation) | Persistence (per account, trailing 60 days) |
|---|---|---|
| 0 | Signal absent | Seen once, resolved |
| 1 | Present, mild, resolved in-conversation | Seen twice, resolved each time |
| 2 | Present, unresolved at close | Seen 3+ times, or twice unresolved |
| 3 | Unresolved, with authority or competitor language | Seen 3+ times unresolved across 3+ weeks |
Account risk = highest severity × highest persistence. As a starting point, 6 or above is a flag; below 4 goes on a watchlist and decays to zero after 60 quiet days, so one bad Tuesday doesn’t haunt an account for a year.
These numbers aren’t universal. Look back at the conversations of accounts that churned and accounts that renewed, and adjust until the flags separate the two. AI can find the signals. Your data should determine which signals actually matter.
What does a churn pattern look like over time?
Take a hypothetical account. Day 1: a data sync fails and is resolved (severity 1). Day 12: it fails again, “This is the second time and it cost us a reporting cycle” (severity 2). Day 21: the user’s manager asks for a remediation plan and says the team is “looking at what else is out there” (severity 3).
No single conversation tells the story. The sequence does. Three occurrences, two unresolved, is persistence 2, so the account scores 3 × 2 = 6 and is flagged. That’s more useful than “Sentiment: Negative.”
Why should you analyze every conversation, not a sample?
Because churn signals are sparse.
If a signal appears in 2% of conversations and you randomly review 2%, you see one signal per 2,500 conversations, while 49 of the 50 that contain it go unread. Klaviyo had been reviewing under 2% of its customer incidents before Rippit (Klaviyo story).
Use samples to validate the analysis. Use the full dataset to measure the business. Humans check that your signal definitions work; the validated definitions then run across every relevant conversation (why Rippit reads 100% of conversations).
What should happen after a churn signal is detected?
The right first move depends on the signal.
| Signal | Useful first question |
|---|---|
| Repeated unresolved friction | Has the underlying problem actually been fixed? |
| Executive escalation | Who internally should own the response? |
| Alternative evaluation | What problem is the customer trying to solve with an alternative? |
| Value / commercial pressure | What value does the customer believe they’re not receiving? |
| Relationship disruption | Who owns the relationship now, and do they understand the value delivered? |
A CSM shouldn’t receive “Acme Corp—Churn Risk: 87.” They should receive “Acme has raised the same data-sync problem three times in 21 days; a manager joined and mentioned alternatives,” with the conversations behind it.
How does Rippit detect churn signals?
Rippit treats churn detection as one analysis on the same conversation data used for insights, QA and AI-agent monitoring (how it works). Connect your customer conversation hubs to Rippit in one click—including Zendesk, Intercom, Gong and more—and define the signal in natural language: “Identify conversations where a customer describes a recurring unresolved product problem. Through MCP, the agent can also read, write and update data across your broader stack, including Salesforce, HubSpot, Slack, Notion, Guru, Jira, Snowflake, and more. Do not flag a single resolved incident.” Each result becomes structured fields (signal family, severity, resolved, account, date, evidence). An agent rolls them up by account and delivers flagged accounts on a schedule, or you ask Claude or ChatGPT through Rippit’s hosted MCP server.
SpotOn found early risk signals in churned accounts’ conversations, then applied them across all conversations (SpotOn story). More in the guide to conversation analytics.
Comparing tools for this? See how Rippit stacks up against Gong on sales calls, Qualtrics on surveys and CSAT, and Zendesk on support conversations.
FAQ: detecting churn risk from customer conversations
Can support conversations actually predict churn?
Treat them as evidence, not a guaranteed prediction: a customer can show every risk signal and still renew. Backtest the signals against your actual renewal and churn outcomes.
How far before churn do these signals appear?
There isn’t a universal answer; it depends on your business model, renewal cycle and signal type. Measure when signals first appeared before each churn event to get a lead-time distribution for your business.
How is this different from a customer health score?
Logins, seats and feature adoption show what the account is doing; conversations show what the customer is saying. An account can keep heavy usage while building a case to replace you. Behavior tells you what changed. Conversations can help explain why.
Won’t this flag every frustrated customer?
It shouldn’t. Detecting negative sentiment will. Checking whether the issue was resolved, has recurred, or has drawn in someone senior detects patterns, not just emotion.
Do you need a data team to do this?
Not necessarily. With Rippit, business users define analyses in natural language, but your business experts still need to define what matters.
.webp)