Categorised causes of churn
A churn reason is the recorded explanation for why a customer stopped paying or stopped using a product. It looks like a simple field on a cancellation form, and that is exactly its trap: the answer a customer types is rarely the thing that actually caused them to leave. The discipline of churn analysis is the gap between the stated reason and the root causeRoot CauseEngineeringAn identified root cause of an issueView reference →, and learningLearningValidationAn insight gained from an experimentView reference → to close it.
Churn entered serious management thinking through retention economics. Frederick Reichheld and W. Earl Sasser argued in their 1990 Harvard Business Review article Zero Defections: Quality Comes to Services that small reductions in customer defection produced outsized profit gains, which made the question "why did they leave?" worth real money for the first time. Retention moved from an afterthought to a metricMetricStrategyA unified metric that measures progress, health, or behaviour across the productView reference → with a profit-and-loss attached.
The subscriptionSubscriptionSales & RevenueA recurring subscriptionView reference → and SaaS era forced a sharper taxonomy. Practitioners split churn into voluntary and involuntary. Voluntary churn is the customer who actively decides to cancel, usually because the product failed to deliver the outcomeOutcomeStrategyA desired business or user outcomeView reference → they expected, the experience frustrated them, or a competitorCompetitorMarket IntelligenceA competing product or companyView reference → looked better. Involuntary churn is the customer who would have stayed but could not, most often because a card expired or a payment failed. The two demand completely different responses: voluntary churn is a product and value signal, while involuntary churn is an operations and billing problem solved by dunning and card-update flows. Treating one as the other wastes the fix. Totango and Stripe both anchor their churn guidance on this split.
The harder evolution was epistemological. A churn reason captured from an exit survey is a stated reason, and stated reasons are notoriously unreliable. "Too expensive" frequently means "I never reached the value that justified the price." The mature practice treats every stated reason as a hypothesisHypothesisValidationA testable belief about a solutionView reference → to be tested against behavioural evidenceEvidenceValidationData supporting or refuting a hypothesisView reference →, usage data, support history, and the cohortCohortGrowthA group of users sharing a common characteristicView reference → the account belonged to, before anyone trusts it as a cause.
A B2B analytics tool loses 40 accounts in a quarter. The cancellation form says "too expensive" for 22 of them, and the instinct is to cut the price. Before doing that, the team joins each churn reason to product usage. The 22 "too expensive" accounts share a behaviour: none of them ever connected a second data sourceData SourceData & AnalyticsA data source or integrationView reference →, the step where the product starts to pay for itself. The eight accounts that did connect a second source and still left cited a genuine featureFeatureProduct SpecificationA product capability or featureView reference → gap.
The stated reason was the same word for two different root causes. The first group never reached value, which is an onboarding and activation problem. The second group reached value and found a real limit, which is a roadmapRoadmapProduct SpecificationA strategic plan of features and milestonesView reference → problem. Pricing was a symptomSymptomEngineeringA symptom of a problemView reference → in both, and the cause in neither. The team ships an onboarding nudge for the activation gap and files the feature gap as a needNeedUserA user need, pain, desire, or constraintView reference →, and the next quarter's "too expensive" rate falls without a price change.
In the Unified Product Graph, Churn ReasonCustomer SuccessWhy a customer left sits in the Customer Success region as an evidence node. The inbound edge churn_reasonProductloses becauseChurn Reasonhierarchy ties the reason directly to the product it explains, and product_loses_because_churn_reasonCustomer FeedbackrevealsChurn Reasonhierarchy records that most churn reasons surface from a wider feedback signal and not only from a dedicated form. The forward edges are where the value compounds: customer_feedback_reveals_churn_reasonChurn ReasongeneratesHypothesiscross-domain turns a stated reason into a testable claim, and churn_reason_generates_hypothesisChurn ReasonrevealsNeedcross-domain connects the exit back to an unmet requirement in the Users and Needs region. That structure encodes the discipline directly, because a churn reason that generates no hypothesis and reveals no need is recorded grief with nothing learned from it.churn_reason_reveals_need
Type-specific fields on BaseNode
categorystringHigh-level category of the churn reason
frequency_countnumberExact count of times this reason has been cited in `frequency_period`
frequency_periodstringThe recurrence period the count is measured over (ISO-8601 `Duration`, e.g. `'P30D'`)
frequency_ratingstringQualitative frequency tier when an exact count is not known
contributing_factorsstring[]Other factors that contributed to the churn
signal_sentimentstringDetected sentiment of the churn signal
signal_channelstringChannel through which the churn signal was received
signal_urgencystringUrgency of the churn risk
idstringrequiredUnique identifier (UUID)
typeNodeTyperequiredDiscriminator for the entity type
titlestringrequiredDisplay name
descriptionstringOptional detailed description
statusstringLifecycle status
tagsstring[]Freeform tags for filtering
4 edge types connected to this entity.
product_loses_because_churn_reasoncustomer_feedback_reveals_churn_reasonchurn_reason_generates_hypothesischurn_reason_reveals_need