Required Datapoints
- Positive Responses: The number of responses in the top range of the scale (e.g., 4–5 on a 5-point scale).
- Total Responses: The number of customers who responded to the survey.
**Customer Satisfaction Score (CSAT) **measures how satisfied customers are with a specific product, service, or interaction. It is typically calculated by asking customers to rate their experience on a scale, such as 1–5 or 1–10, with higher scores indicating greater satisfaction.
Customer Satisfaction Score (CSAT) is your frontline metric for capturing real-time sentiment after key touchpoints—support, purchases, onboarding, or feature use. It’s typically measured via a quick survey: “How satisfied were you with [X]?” (on a scale of 1–5 or 1–10).
The relevance and interpretation of this metric shift depending on the model or product:
A high CSAT score reflects positive micro-moments, while a drop can indicate pain points that escalate into churn if left unaddressed.
Segmenting CSAT by touchpoint, team, or persona unlocks where to double down and where to fix fast.
CSAT informs:
These are the main factors that directly impact the metric. Understanding these lets you know what levers you can pull to improve the outcome
Actionable ideas to optimize this KPI, from fast, low-effort wins to strategic initiatives that drive measurable impact.
Activities commonly tied to improving or operationalizing this KPI.
| Activity | Description |
|---|---|
| Retention Strategies | Retention Strategies involves systematic initiatives and processes aimed at maximizing customer lifetime value by proactively engaging and supporting existing users. It helps teams translate strategy into repeatable execution. Relevant KPIs include Customer Churn Rate and Customer Lifetime Value. |
| Customer Support | Customer Support is a proactive, strategic approach to supporting customers throughout their lifecycle, ensuring they realize maximum value from a product or service. It makes the motion operational through ownership, routines, and cross-functional follow-through. Relevant KPIs include Complaints Received and Complaints Resolved. |
| Experience Improvement Initiatives | Experience Improvement Initiatives are structured initiatives designed to systematically enhance customer and user experiences throughout every stage of their journey, from initial engagement to ongoing product usage and support. It coordinates execution across touchpoints so teams can move users or accounts toward the target outcome. Relevant KPIs include Customer Satisfaction Score. |
An e-commerce store collects CSAT after a support interaction:
This KPI is associated with the following stages in the AAARRR (Pirate Metrics) funnel:
This KPI is classified as a leading Indicator. It signals likely future performance and is used to predict outcomes before they fully materialize.
This role is directly accountable for the KPI and is expected to drive progress and decisions around it.
These roles contribute directly to performance and typically partner on execution, reporting, or optimization.
These roles should stay informed on changes in the KPI because it influences adjacent planning, coordination, or outcomes.
These leading indicators influence or contextualize this KPI and help create a multi-signal early warning system, improving confidence and enabling better root-cause analysis.
These lagging indicators support the recalibration of this KPI, helping to inform strategy and improve future forecasting.
How this KPI is structured in Cube.js, including its key measures, dimensions, and calculation logic for consistent reporting.
cube('CustomerSatisfaction', { sql: `SELECT * FROM customer_satisfaction`,
measures: { positiveResponses: { sql: `positive_responses`, type: 'sum', title: 'Positive Responses', description: 'The number of responses in the top range of the scale (e.g., 4–5 on a 5-point scale).' }, totalResponses: { sql: `total_responses`, type: 'sum', title: 'Total Responses', description: 'The number of customers who responded to the survey.' }, customerSatisfactionScore: { sql: `positive_responses * 1.0 / NULLIF(total_responses, 0)`, type: 'number', title: 'Customer Satisfaction Score', description: 'The ratio of positive responses to total responses, indicating customer satisfaction.' } },
dimensions: { id: { sql: `id`, type: 'number', primaryKey: true, title: 'ID', description: 'Unique identifier for each survey response.' }, surveyDate: { sql: `survey_date`, type: 'time', title: 'Survey Date', description: 'The date when the survey was conducted.' } }});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