NexaWorks
nexaworks

The Customer Signal Library

40 churn, renewal, and expansion signals, organized by where they hide.

Every signal below ships with three things most signal lists skip: a precise definition, concrete detection logic you can implement as a query or rule, and honest notes on when it lies to you. Because a signal without false-positive notes is just a superstition with a dashboard.

What a signal is — and what it isn't

A metric tells you what happened. A signal tells you what to do before it happens. Most CS teams drown in the first and starve for the second: their dashboards report the past in exquisite detail while the future walks out the door unnoticed.

“NPS is 32” is a metric. “The champion's reply latency doubled over 60 days” is a signal. The difference isn't sophistication — it's actionability. A signal points at a specific account, a specific change, and a specific next step. A metric points at a slide.

Every entry in this library passes three tests before it earns the name:

Test 1

It leads the outcome

The change is observable weeks or months before the renewal, downgrade, or churn — not concurrently with it. Lagging indicators are autopsies.

Test 2

It has detection logic

You can write it as a query, a rule, or a report — against systems you already own. If it requires a feeling, it's an intuition, not a signal.

Test 3

It names its false positives

Every signal misfires in known ways. We document them, because a signal you can't argue with is a signal you'll eventually ignore.

The signal matrix

All 40 signals, filterable by source. Lead time is how far in advance the signal typically appears; false-positive risk is how often it cries wolf. Full definitions live on the source pages.

SignalSourceTypical lead timeFalse-positive risk
Stalled expansion pipelineCRM60–120 daysMedium
Renewal close-date slippageCRM30–90 daysMedium
Champion goes quietCRM45–120 daysMedium
Executive sponsor changeCRM60–180 daysLow
Risk language in activity notesCRM30–120 daysMedium
Support cases spike pre-renewalCRM30–90 daysLow
Contract redlines multiplyCRM30–60 daysMedium
Sponsor stops attending callsCall transcripts60–120 daysMedium
"Remind me what we pay for"Call transcripts30–90 daysMedium
Sentiment drop across callsCall transcripts60–120 daysHigh
Competitor named by the customerCall transcripts30–90 daysMedium
Value language disappearsCall transcripts60–180 daysMedium
Meeting no-show rate climbsCall transcripts30–90 daysMedium
New stakeholder asks fundamentals lateCall transcripts30–90 daysHigh
Ticket volume spike vs baselineSupport tickets30–90 daysMedium
Severity mix shifts upSupport tickets30–60 daysLow
Reopened tickets climbSupport tickets30–90 daysLow
"How do I export my data" ticketsSupport tickets14–60 daysMedium
Ticket sentiment turns negativeSupport tickets60–120 daysMedium
SLA breaches cluster on one accountSupport tickets30–90 daysLow
Champion shifts to transactional channelsSupport tickets60–120 daysHigh
Core user activity dropProduct usage60–120 daysMedium
Feature breadth narrowsProduct usage90–180 daysMedium
Power-user attritionProduct usage60–120 daysMedium
API and integration usage declineProduct usage60–180 daysLow
Seat utilization fallsProduct usage90–180 daysMedium
New team activation stallsProduct usage90–180 daysMedium
Late payments startBilling & payments60–120 daysMedium
Seats or modules cutBilling & payments0–30 daysLow
Payment failures increaseBilling & payments30–90 daysMedium
Discount pressure escalatesBilling & payments30–60 daysMedium
Shorter term requestedBilling & payments30–60 daysMedium
Usage true-up disputesBilling & payments30–90 daysMedium
Champion reply latency doublesEmail & Slack60–120 daysHigh
Thread participants shrinkEmail & Slack60–120 daysHigh
QBRs and business reviews skippedEmail & Slack60–120 daysMedium
Shared Slack channel goes quietEmail & Slack30–90 daysMedium
Unknown evaluator looped into threadsEmail & Slack30–90 daysHigh
Detractor feedback goes unansweredEmail & Slack60–180 daysMedium
Renewal conversation moves to procurement onlyEmail & Slack14–60 daysLow

Lead times are practitioner-observed typical ranges, not guarantees. Every signal's definition, detection logic, and false positives are documented on its source page below.

How this library was built

These 40 signals were assembled from churn post-mortems, CS practitioner interviews, and thousands of buyer conversations in public CS communities — then filtered hard. For every ten candidate signals we considered, roughly six were cut: too vague to implement, too lagging to matter, or indistinguishable from a metric wearing a costume.

What survived had to be observable in a real system your team already owns — Salesforce, Gong, Zendesk, Mixpanel, Stripe, Gmail. Nothing here requires new software. That constraint is deliberate: we work alongside the CS platform you already own, and so should your signal layer.

A note on honesty: lead times are practitioner-observed typical ranges, not research findings and not guarantees. Your segments will differ — enterprise cycles run longer, SMB cycles shorter. Calibrate every signal against your own history before trusting it. The library is versioned below; when we learn a signal misfires more than documented, we update the entry and log it.

Update log

  • v1.0 — October 2026: Initial release. 40 signals across 6 sources, each with definition, detection logic, and false-positive notes.

Want these signals running on your accounts?

The Signal Stack Audit maps which of these 40 signals your stack can already detect, which data you're missing, and where your blind spots are. Three business days, $1,500, async.