Support Signals That Predict Churn: Using AI to Flag At-Risk Customers

Turn this article into takeaways for your work.

Each assistant summarizes the article only for you and suggests best practices for your work.

A support churn signal is a pattern in a customer's tickets, chats and calls (repeat contacts, souring tone, bugs that stay open, escalations, rising effort) that tends to show up before the customer cancels or declines to renew. AI turns those scattered patterns into one account-level flag, and the flag goes to the customer success manager (CSM) who owns the relationship.

Support sees things the rest of the company doesn't. A customer who stops logging in is quiet. A customer who writes in four times in a month, each time a little shorter and a little sharper, is loud. The problem is that nobody is paid to add those messages up. Support closes the ticket, customer success looks at a usage dashboard, and the account walks away with the warning sitting in a help desk nobody on the CS side opened.

This guide covers which support signals are worth tracking, how AI combines them, how to hand the flag to a person who can act on it, and how to check that the model works. If you want the broader picture of acting before a customer complains, start with proactive customer service with AI.

Key Facts

  • IBM researchers trained a ticket-escalation model on over 2.5 million support tickets and about 10,000 escalations, and report 87.36% recall with an 88.23% reduction in analyst workload (Montgomery et al., arXiv). It predicts escalations, not churn, but it shows ticket history is strong raw material for risk models.
  • The features in that IBM work include increases in severity, days since last contact, and a customer's current response time compared with what they've historically received (Montgomery et al., full paper). Comparing a customer to their own baseline is the key idea.
  • Gainsight's Zendesk integration lets admins pull ticket data into Gainsight and "trigger health scores based on support data" (Gainsight Marketplace). That is a vendor-described capability, not a measured result.
  • The same listing describes creating and linking Calls to Action (CTAs) to Zendesk tickets from within the help desk, which is the handoff mechanism covered below.
  • Precision is the share of flagged accounts that really were at risk, and recall is the share of at-risk accounts the model caught (scikit-learn documentation). You need both numbers to judge a churn flag.
  • Ordinary shuffled cross-validation gives inflated scores on time-ordered data, so churn models should be tested on later periods than they were trained on (scikit-learn documentation).

Why Support Data Predicts Churn

Product usage tells you what customers do. Support tells you how they feel about it, in their own words, at the moment something went wrong. That makes it an unusually direct signal, and it's available on day one, before you have months of usage history.

Three things make support data different from a usage score:

  • It's text. Most of the information is in what the customer wrote, not in a field. Reading it at scale is exactly what language models do well.
  • It's event-driven. A health score refreshed monthly misses the week where three things broke. Tickets arrive as they happen.
  • It shows the experience of the whole account. One angry user is an incident. Five users at one company raising problems in the same fortnight is a pattern.

None of this means a ticket is a verdict. Plenty of customers who file many tickets are heavy, engaged users who renew happily. The goal isn't to treat contact as bad. It's to find the change in an account's pattern, which is why the approach below keeps comparing each customer with its own history.

The Five Signal Families

Most useful churn signals from support fall into five families. Each one is cheap to compute once your support data is prepared for AI.

Signal family What it looks like Why it matters Common trap
Repeat contacts Same issue raised again within days, or the customer reopens a closed ticket The first fix didn't work, and the customer is spending effort twice Counting all volume instead of repeats on the same problem
Negative sentiment Tone worsens across a conversation or across tickets over weeks Frustration usually builds before cancellation Treating one sharp message as a trend
Unresolved bugs A defect affecting the account stays open past the customer's expectations The customer is paying for something that doesn't work Ignoring bugs that sit with engineering, not support
Escalations Severity raised, manager requested, executive sponsor copied in The customer is applying maximum pressure Missing quiet escalations that happen by email outside the help desk
Effort Many back-and-forth messages, many handoffs, long waits for a first reply Hard work to get help erodes goodwill Measuring only resolution time and not the number of steps

Repeat contacts

A repeat contact is the strongest simple signal because it means the support process failed once already. Define it carefully: the same customer, the same underlying issue, inside a window you choose (seven days is a common starting point). That requires grouping tickets by topic, and customer intent detection is the tool for that, since customers describe one problem in many different words.

Negative sentiment

Sentiment is only useful as a trajectory. A customer who is always blunt shouldn't be flagged for being blunt. A customer who was warm in January and clipped in March should. If you already run predicted CSAT, its per-conversation scores are a ready-made input here. For risk work, store the score per message, then track the change over a rolling window for each account.

Unresolved bugs

This is the one most teams miss, because the ticket isn't "open" in support's queue: it's been handed to engineering and shows as pending. From the customer's side nothing has changed. Link tickets to bug records, and measure how long each affected account has been waiting. The same link is what lets product teams see which defects cost the most, as covered in turning support tickets into product backlog items.

Escalations

An escalation is the customer telling you how serious this is. The IBM escalation research is a useful reference here: its features include increases in severity and customer-specific response-time comparisons (Montgomery et al.). You can borrow the thinking without copying the model. Track severity changes, requests for a manager, and the arrival of a new senior name on the thread.

Effort

Effort is the hardest to see and often the most telling. Count the messages it took to resolve, the number of different agents involved, the number of channel switches (chat to email to phone), and the gap between a customer's message and the first useful reply. A resolved ticket that took nine messages and three agents is a different experience from one that took two.

How AI Combines the Signals

A single signal is noisy. The value comes from combining them, and from comparing each account to its own normal.

The pipeline has four steps, matching the ingest, analyze, predict and execute capabilities in the ACE Framework:

  1. Ingest. Pull tickets, chat transcripts, call transcripts, bug links and CSAT responses into one account-level view, keyed on the customer account, not the individual user.
  2. Analyze. A language model labels each conversation: topic, sentiment, whether the issue was resolved, whether the customer mentions leaving, competitors or contract terms. A ticket summary for each account over the last 30 days keeps the output readable for humans.
  3. Predict. A scoring model takes the labels plus structured facts (plan, tenure, renewal date, usage trend) and produces a risk score per account. This can be a simple logistic regression or a gradient-boosted model. A more complex model rarely beats a well-built simple one when you have a few hundred churn examples.
  4. Execute. Accounts that cross a threshold create a task for the owner. That's the handoff covered in the next section.

Two design choices decide whether this works.

Compare to the account's own baseline. The IBM team's response-time feature is built this way: it compares what the customer is receiving now with what they historically received (Montgomery et al.). Apply the same idea to volume, sentiment and effort. "Ticket count is 3x this account's median" is a far better feature than "ticket count is 12."

Separate the reason from the score. A bare number such as "risk 0.82" gets ignored. Make the model return the top two or three contributing signals in plain words. Those reasons are what the CSM reads.

For the modeling side beyond support data, churn prediction models goes deeper on algorithms and training data. Support signals are best used as one input into a broader health score, not as a replacement for usage and commercial data.

A Worked Example (Hypothetical)

This example is illustrative. The numbers are invented to show the logic.

A mid-market software account usually opens one ticket a month. In the last three weeks it opened five. Two were about the same export failure, one was reopened, and a linked bug has been open for 19 days. Message tone dropped from neutral to curt across the last three tickets. The most recent mentions "evaluating other options."

No single item is alarming. Together, against an account that is usually quiet, they are. The model flags the account and writes: "Support volume 5x normal. Same export issue raised twice, bug open 19 days. Sentiment declining. Customer mentioned evaluating alternatives." A CSM can act on that in a minute.

Handing the Flag to the CSM

This is where most programs fail. A flag nobody acts on is a dashboard. The handoff needs to be designed as carefully as the model.

Put the flag where the CSM already works. If CSMs live in the CRM or customer success platform, create the task there, not in a report they have to open. Integrations exist for this: Gainsight's Zendesk listing, for instance, describes linking CTAs to Zendesk tickets from within the help desk (Gainsight Marketplace).

Send a package, not an alert. Each flag should answer five questions without the CSM opening anything else:

Question What the flag should contain
Who is it? Account, owner, plan, renewal date
What happened? A two-line summary of the last 30 days of support
Why flagged? The top contributing signals in plain words
What's open? Unresolved tickets and linked bugs, with age
What should I do? A suggested first move, such as a call, an executive note, or a bug status update

Define ownership and a response time. Decide who owns each flag and how fast they respond. Without that, support assumes CS is handling it and CS assumes support is.

Close the loop. When the CSM acts, they record the outcome (saved, false alarm, already churning, customer recovered). That feedback is the training data for the next version of the model, and it's the only way you'll learn what the flag is worth.

Don't flood them. If a CSM gets 40 flags a week, they'll stop reading by week three. Set the threshold to produce a number of flags the team can actually work, and review it monthly. It's better to catch 60% of at-risk accounts with flags people trust than 90% with flags people ignore.

Not every flag belongs to the CSM. A flag caused by a recurring defect is a product problem. Route it to product with the evidence, and track which causes keep showing up.

How to Validate the Model

A churn flag that looks sensible in a demo can still be wrong in practice. Validation answers one question: do accounts the model flags really churn more than accounts it doesn't?

Step 1: Define churn and the prediction window

Decide what counts: cancellation, non-renewal, or a large downgrade. Then decide the window, for example "will this account churn within 90 days of the flag?" A model with no stated window can't be tested.

Step 2: Build the dataset from the past

For every account at each past date, record the support signals as they stood then and whether the account churned within the window afterward. Be strict about this: if a feature includes information from after the flag date, the model is cheating. A classic leak is a field set when the customer cancels, such as a "cancellation reason" tag on the last ticket.

Step 3: Split by time, not at random

Train on earlier periods and test on later ones. Standard shuffled cross-validation assumes samples are independent, and on time-ordered data it produces inflated scores because test samples sit close in time to training samples (scikit-learn documentation). A time-based split mimics real use: the model learns from the past and is judged on a future it hasn't seen.

Step 4: Measure the right things

Metric Plain meaning What to watch for
Precision Of the accounts we flagged, how many really were at risk? Low precision means CSMs waste time and stop trusting flags
Recall Of the accounts that churned, how many did we flag? Low recall means the model misses most of the problem
Lift How much more likely are flagged accounts to churn than average? A lift near 1 means the flag adds nothing
Lead time How many days before churn did the flag fire? A flag that fires a week before cancellation is too late to help

Precision is the share of flagged accounts that were truly positive, and recall is the share of all positives the model found (scikit-learn documentation). They pull against each other. Raising the threshold gives you fewer, more reliable flags and misses more churners. Pick the balance based on how many flags your CSMs can work.

Step 5: Compare against a simple baseline

Check the model against something dull: "flag any account with three or more tickets in 30 days," or your existing health score. If an AI model barely beats the simple rule, use the rule. If the model adds support signals to an existing health score and it improves lift, that's the evidence you need to keep it.

Step 6: Test in the field, then keep checking

Run in shadow mode for a renewal cycle, flagging accounts without changing how CSMs work, then compare flagged accounts with the rest. After launch, watch for drift. A new product release, a pricing change or a new support team can all change what "normal" looks like. Recheck precision and recall every quarter, and use the CSM outcome notes to find the false alarms.

Be careful with the causal claim. A flag shows who is likely to leave. It doesn't show that your intervention saved them. To measure the effect of outreach, hold out a random slice of flagged accounts for a while and compare outcomes, if your business can accept that.

Implementation Checklist

  1. Pick one churn definition and one window. Don't start with three.
  2. Connect support to account records. Tickets must roll up to the account, not just the user.
  3. Start with the five signal families. Add more only when they earn their place.
  4. Compute signals against each account's own baseline.
  5. Build a baseline rule first, then try a model.
  6. Return reasons with every score.
  7. Create tasks in the CSM's tool, with an owner and response time.
  8. Record outcomes on every flag.
  9. Validate by time split and report precision, recall, lift and lead time.
  10. Review quarterly and retire signals that stop helping.

Common Pitfalls

Treating all contact as bad. Heavy users file more tickets. Look for changes from the account's baseline, not raw counts.

Scoring users instead of accounts. Churn is usually an account-level decision. One person's bad week isn't the account's risk.

Leaking the answer. Features created after the cancellation decision make the model look brilliant in testing and useless in production.

Alert fatigue. Too many flags and the team stops reading. Tune the threshold to capacity.

Flag without a play. If nobody knows what to do when a flag appears, the model has no value. Write the playbook first.

Ignoring bugs owned by engineering. Pending-engineering tickets are where customers wait longest. Include them.

Punishing the customer. A risk flag is for helping, not for withholding service. Don't route flagged customers to slower queues or use the score to refuse reasonable requests.

Forgetting privacy. Ticket text includes personal data. Check what your data-processing terms allow before sending transcripts to a model, and limit what the flag exposes to the CSM.

Frequently Asked Questions about Support Signals and Churn

Which support signals best predict churn?

Five families are worth starting with: repeat contacts on the same issue, worsening sentiment over time, bugs that stay unresolved, escalations, and high customer effort. Each is more useful measured against the account's own normal pattern than as a raw count.

Can AI really predict churn from support tickets alone?

Support data is strong raw material, but it works best combined with usage, contract and renewal data. Published IBM research on ticket escalations shows how much ticket history can reveal, though that study predicted escalations rather than churn.

How should we hand an at-risk flag to a CSM?

Create a task in the tool the CSM already uses, with the account, a short summary, the top reasons for the flag, open tickets and bugs, and a suggested first action. Assign an owner and a response time, and ask the CSM to record the outcome so the model can learn.

How do we know the churn model is accurate?

Train on past periods and test on later ones, then report precision, recall, lift and lead time against a simple baseline rule. Random shuffled splits give inflated results on time-ordered data, so avoid them. Recheck quarterly because products and policies change what normal looks like.

How many tickets should trigger a churn flag?

There's no universal number. A better trigger is a jump compared with that account's usual volume, combined with other signals such as repeats, tone and open bugs. Set the threshold so your CSMs get a number of flags they can realistically work each week.

Is it fair to score customers on their support behavior?

It's fine when the score is used to offer help sooner, not to limit service. Keep the data protected, explain in your privacy notice how support data is used, and never use a risk score to deny or slow down legitimate requests.

About the author

Linh Ngo

Linh Ngo

Customer Success Operations Manager

Linh Ngo is Customer Success Operations Manager at Rework, focused on AI-led process automation for operations teams, especially order fulfillment and finance workflows. Linh writes about process management and the AI productivity tools that take manual steps out of daily operations, so teams can see where work stalls and fix the process before adding headcount.