Skip to content

Customer Health Score (CHS)

Definition

Customer Health Score (CHS) is a composite metric used to evaluate the likelihood of a customer renewing, upselling, or churning. It typically combines multiple data points related to product usage, satisfaction, engagement, and support interactions into a single, actionable score.

Description

Customer Health Score (CHS) is a composite metric that combines signals like usage, satisfaction, support activity, and business fit to provide an at-a-glance view of customer retention risk or expansion readiness.

The relevance and interpretation of this metric shift depending on the model or product:

  • In B2B SaaS, it blends product usage + CSM touchpoints
  • In subscription commerce, it includes purchase frequency + service sentiment
  • In freemium models, it reflects engagement + upgrade indicators

A healthy CHS = stable or growing revenue. A low CHS flags urgent retention risk. Segment by account tier, role, or lifecycle stage to guide prioritization and intervention.

Customer Health Score informs:

  • Strategic decisions, like renewal forecasting or team capacity planning
  • Tactical actions, such as playbook-triggered CS follow-ups or escalation flags
  • Operational improvements, including score model calibration
  • Cross-functional alignment, by unifying CS, RevOps, and product around customer retention plays

Key Drivers

These are the main factors that directly impact the metric. Understanding these lets you know what levers you can pull to improve the outcome

  • Product Usage Frequency and Depth: More sessions and feature adoption = better health. Inactivity is often a silent churn alarm.
  • Recent Feedback or Support History: High NPS and low ticket volume correlate with better health. Complaints or repeated issues drag scores down.
  • Engagement With Success and Education Resources: Customers who attend trainings or use help resources tend to retain longer.

Improvement Tactics & Quick Wins

Actionable ideas to optimize this KPI, from fast, low-effort wins to strategic initiatives that drive measurable impact.

  • If scores are inaccurate or volatile, refine your weighting model based on churned vs. retained cohorts.
  • Add usage-based alerts to flag high-risk accounts before QBRs or renewals.
  • Run a test introducing lifecycle-based success emails, targeting customers when health dips.
  • Refine your dashboard to include a “what’s driving this score?” explanation for CS and AMs.
  • Partner with data teams to visualize score trends over time and tie them to revenue outcomes.

  • Required Datapoints to calculate the metric


    • Product usage metrics: Frequency of logins, number of features used, time spent in product.
    • Engagement metrics: Content interactions, response to campaigns, onboarding completion.
    • Support interactions: Number of support tickets, type of issues reported, average response time.
    • Customer feedback: Net Promoter Score (NPS), Customer Satisfaction (CSAT) scores, or other survey responses.
    • Billing history: On-time payments, upgrades, renewals.
    • Tools: Customer Success Platforms (e.g., Gainsight, ChurnZero), Customer Data Platforms (CDPs), and CRM systems like Salesforce.
  • Example to show how the metric is derived


    A SaaS company tracks CHS for its enterprise customers:

    • Customer A: CHS = 85/100 → Highly engaged and satisfied; focus on upselling.
    • Customer B: CHS = 45/100 → At risk; provide proactive support and engagement.

Formula

Formula

\[ \mathrm{Customer\ Health\ Score} = (\mathrm{Product\ Usage} \times \mathrm{Weight}_{\mathrm{PU}}) + (\mathrm{Customer\ Feedback} \times \mathrm{Weight}_{\mathrm{CF}}) + (\mathrm{Support\ Interactions} \times \mathrm{Weight}_{\mathrm{SI}}) \]

Data Model Definition

How this KPI is structured in Cube.js, including its key measures, dimensions, and calculation logic for consistent reporting.

cube(`CustomerHealthScore`, {
  sql: `SELECT * FROM customer_health_score`,

  measures: {
    loginFrequency: {
      sql: `login_frequency`,
      type: `avg`,
      title: `Login Frequency`,
      description: `Average frequency of customer logins.`
    },
    featuresUsed: {
      sql: `features_used`,
      type: `avg`,
      title: `Features Used`,
      description: `Average number of features used by the customer.`
    },
    timeSpent: {
      sql: `time_spent`,
      type: `avg`,
      title: `Time Spent`,
      description: `Average time spent by the customer in the product.`
    },
    contentInteractions: {
      sql: `content_interactions`,
      type: `avg`,
      title: `Content Interactions`,
      description: `Average number of content interactions by the customer.`
    },
    campaignResponses: {
      sql: `campaign_responses`,
      type: `avg`,
      title: `Campaign Responses`,
      description: `Average response rate to campaigns.`
    },
    onboardingCompletion: {
      sql: `onboarding_completion`,
      type: `avg`,
      title: `Onboarding Completion`,
      description: `Average onboarding completion rate.`
    },
    supportTickets: {
      sql: `support_tickets`,
      type: `avg`,
      title: `Support Tickets`,
      description: `Average number of support tickets raised by the customer.`
    },
    averageResponseTime: {
      sql: `average_response_time`,
      type: `avg`,
      title: `Average Response Time`,
      description: `Average response time for support tickets.`
    },
    npsScore: {
      sql: `nps_score`,
      type: `avg`,
      title: `NPS Score`,
      description: `Average Net Promoter Score.`
    },
    csatScore: {
      sql: `csat_score`,
      type: `avg`,
      title: `CSAT Score`,
      description: `Average Customer Satisfaction Score.`
    },
    onTimePayments: {
      sql: `on_time_payments`,
      type: `avg`,
      title: `On-Time Payments`,
      description: `Average rate of on-time payments.`
    },
    upgrades: {
      sql: `upgrades`,
      type: `avg`,
      title: `Upgrades`,
      description: `Average number of upgrades by the customer.`
    },
    renewals: {
      sql: `renewals`,
      type: `avg`,
      title: `Renewals`,
      description: `Average number of renewals by the customer.`
    }
  },

  dimensions: {
    customerId: {
      sql: `customer_id`,
      type: `string`,
      primaryKey: true,
      title: `Customer ID`,
      description: `Unique identifier for the customer.`
    },
    createdAt: {
      sql: `created_at`,
      type: `time`,
      title: `Created At`,
      description: `Timestamp when the record was created.`
    }
  }
});

Note: This is a reference implementation and should be used as a starting point. You’ll need to adapt it to match your own data model and schema


Positive & Negative Influences

  • Negative influences


    Factors that drive the metric in an undesirable direction, often signaling risk or decline.

    • Product Usage Frequency and Depth: Decreased sessions and lack of feature adoption are early indicators of disengagement, leading to a lower Customer Health Score.
    • Recent Feedback or Support History: Frequent complaints or high volumes of support tickets negatively impact the Customer Health Score, as they reflect unresolved issues and dissatisfaction.
    • Customer Churn Rate: An increasing churn rate is a direct negative influence on the Customer Health Score, indicating a loss of customers and potential dissatisfaction.
    • Inactivity Periods: Extended periods of inactivity are a strong negative influence on the Customer Health Score, signaling potential churn risk.
    • Negative Customer Reviews: An increase in negative customer reviews directly lowers the Customer Health Score, as they reflect dissatisfaction and potential churn risk.
  • Positive influences


    Factors that push the metric in a favorable direction, supporting growth or improvement.

    • Product Usage Frequency and Depth: Increased sessions and feature adoption lead to a higher Customer Health Score as they indicate active engagement and value realization.
    • Recent Feedback or Support History: High Net Promoter Scores (NPS) and low support ticket volumes are associated with a higher Customer Health Score, reflecting customer satisfaction and fewer issues.
    • Engagement With Success and Education Resources: Active participation in trainings and utilization of help resources correlate with a higher Customer Health Score, as they enhance customer knowledge and satisfaction.
    • Feature Adoption Rate: A higher rate of new feature adoption suggests that customers are finding value in the product, positively impacting the Customer Health Score.
    • Customer Satisfaction Surveys: Positive responses in customer satisfaction surveys are directly linked to a higher Customer Health Score, indicating contentment with the product and services.

Involved Roles & Activities


Funnel Stage & Type

  • AAARRR Funnel Stage


    This KPI is associated with the following stages in the AAARRR (Pirate Metrics) funnel:

    Retention

  • Type


    This KPI is classified as a Lagging Indicator. It reflects the results of past actions or behaviors and is used to validate performance or assess the impact of previous strategies.


Supporting Leading & Lagging Metrics

  • Leading


    These leading indicators influence this KPI and act as early signals that forecast future changes in this KPI.

    • Product Qualified Leads: Product Qualified Leads (PQLs) capture high-intent user behaviors that signal readiness for conversion or expansion. High PQL rates typically drive improvements in the Customer Health Score (CHS) as they reflect meaningful engagement, adoption, and fit—core components of a healthy account.
    • Customer Loyalty: Customer Loyalty provides early signals of long-term retention and advocacy. High loyalty indicates positive product experiences and satisfaction, directly supporting a higher CHS by reducing churn risk and increasing upsell/renewal likelihood.
    • Customer Satisfaction Score: Customer Satisfaction Score (CSAT) is a direct input to Customer Health Score, as it measures how well customer expectations are met. High CSAT scores forecast higher CHS, while drops in CSAT can be an early warning of declining health.
    • Activation Rate: Activation Rate measures the proportion of users reaching initial value milestones. Strong activation rates indicate good onboarding and early engagement, which are predictive of high CHS as users who activate are more likely to realize ongoing value.
    • Customer Engagement Score: Customer Engagement Score quantifies the depth and frequency of customer interactions with the product. High engagement scores are a strong predictor of positive Customer Health Scores, serving as a multi-signal indicator alongside usage and satisfaction.
  • Lagging


    These lagging indicators confirm, quantify, or amplify this KPI and help explain the broader business impact on this KPI after the fact.

    • Churn Risk Score: Churn Risk Score provides a predictive, quantitative estimate of potential churn. Analyzing discrepancies between CHS and actual churn risk can help recalibrate the weightings or thresholds within the Customer Health Score model.
    • Customer Downgrade Rate: Customer Downgrade Rate tracks reductions in account value. High downgrade rates highlight weaknesses in the CHS's ability to flag early risk, enabling refinement of leading indicator signals used in the score.
    • Contract Renewal Rate: Contract Renewal Rate confirms whether high CHS values correlate with actual renewals. Post-analysis allows teams to adjust the CHS algorithm based on which signals best predict renewals, improving future forecasting.
    • Customer Retention Rate: Customer Retention Rate quantifies the percentage of customers retained over time. Comparing retention outcomes with CHS predictions helps optimize input signals and thresholds for more accurate early warnings.
    • Customer Feedback Retention Score: Customer Feedback Retention Score shows if customers who provide feedback are actually retained, offering ground truth to assess the predictive value of feedback-related signals within the CHS and adjust its weighting accordingly.