5 Churn Signals Hiding in Your HubSpot Data (That No One Is Looking At)
Most CS teams build health scores from one signal: usage. The signals that actually predict churn 60-90 days out are sitting in HubSpot, untouched. Here are five of them.
Most Customer Success teams I look at build their health score from one signal: product usage. If usage is up, the account is "green." If it drops, the account is "yellow." If it falls off a cliff, the account is "red."
The problem is that by the time usage falls off a cliff, the renewal conversation has already happened in the customer's head. They have already mentally cancelled. The CSM is just the last to know.
Better churn signals exist, and most of them are sitting in HubSpot already, in fields no one queries. Here are five.
1. Time since last meaningful contact, segmented by stakeholder role
The HubSpot field: last_contact_date on the contact record.
The mistake CS teams make is averaging last_contact_date across all contacts at an account. That hides the signal you actually want.
What predicts churn is silence from the economic buyer. If your CSM has talked to the day-to-day user three times this month but the VP who signed the contract has been silent for 90 days, you have a problem. The user likes you. The buyer is not paying attention. When renewal lands on the buyer's desk, you are an unjustified line item.
The metric to track:
buyer_silence_days = today - max(last_contact_date) where contact.role = "Decision Maker" or "Economic Buyer"
If buyer_silence_days > 60, escalate. If > 120, you are probably already losing this one.
2. Support ticket sentiment trend, not volume
The HubSpot field: ticket priority and ticket close reason on the support pipeline.
Volume of tickets is a noisy signal. Some of your healthiest customers file the most tickets because they are deeply embedded in the product. Some of your soon-to-churn customers file fewer tickets because they have given up.
What is predictive is the trend in ticket close reasons. Track:
- Tickets closed with "resolved" reason - healthy engagement
- Tickets closed with "won't fix" or "by design" - customer hit a friction point that is not going away
- Tickets closed with "no response from customer" - customer disengaged mid-thread
If the ratio of (won't fix + no response) / (total closed) climbs above 30% over a 60-day window, that is a churn signal stronger than any usage drop.
3. NPS score change, not absolute value
The HubSpot field: custom property nps_score (if you survey through HubSpot's feedback tool).
Absolute NPS is not predictive. Plenty of accounts at NPS 7 renew. Plenty of accounts at NPS 9 churn three months later for reasons unrelated to satisfaction (their champion left, they got acquired, budget cycle changed).
What is predictive is the delta. An account that drops from 9 to 6 between surveys is at higher churn risk than an account that has been steady at 6 for two years. Compute:
nps_delta = current_nps - previous_nps
If nps_delta <= -2 and the time between surveys is under 90 days, this is a hot signal. If it stays negative across two consecutive surveys, you are now in a confirmed downward trajectory.
4. Internal champion role change
The HubSpot field: jobtitle and lifecyclestage on the contact record, plus engagement events (hs_email_open, hs_email_click).
Your champion is the contact at the customer who advocates for you internally. When their role changes, your renewal probability changes with it.
The signals to look for:
- Champion's
jobtitlechanges (promotion, lateral move, or worse, gone from the account entirely) - Champion stops opening your emails for 21+ consecutive days
- Champion's contact
lifecyclestageregresses (e.g. from "customer" back to "subscriber" because they unsubscribed from your CSM check-ins)
Any one of these is a yellow flag. Two of them in the same 30-day window and you should be on the phone, not waiting for the QBR.
5. Deal-stage history on associated open opportunities
The HubSpot field: dealstage history on the deals object, joined to the company.
If your sales team has open expansion or renewal deals against the account, the path that deal takes through stages is a churn signal you are probably not using. Specifically:
- Deals that stall in "Proposal Sent" for 45+ days without movement
- Deals that move backward (e.g. "Negotiation" back to "Discovery")
- Renewal deals where the close date keeps getting pushed
Any of these mean the buyer is buying time, not value. Buying time is the polite way of saying "I am evaluating alternatives." Treat every renewal where the close date slips by more than 14 days as a high-risk account, regardless of what the CSM thinks.
Putting it together
You do not need to build a machine learning model to use these five signals. A simple weighted sum, scored 0 to 100, will outperform most off-the-shelf health scores:
| Signal | Weight | Trigger |
|---|---|---|
| Buyer silence > 60 days | 25 | Boolean |
| Support ratio (won't fix + no response) > 30% | 20 | Boolean |
| NPS delta <= -2 | 15 | Boolean |
| Champion role change OR engagement drop | 25 | Boolean |
| Renewal deal slipped > 14 days | 15 | Boolean |
Score above 50 = mid-risk. Score above 75 = high-risk. Pull the data weekly, not monthly.
Two of these five signals can be calculated directly in a HubSpot list view. The other three need a join to deals or tickets, which means either a workflow or a tool that can read across HubSpot objects. You do not need to write SQL for it, but you do need a tool that crosses the object boundary.
If you want to see what this looks like as an actual scoring agent that runs on your HubSpot data without code, that is what NoCodePredict does. But the formulas above are useful with or without us.
What signal does your team rely on that did not make this list?