Skip to main content
userTourKit
@tour-kit/surveysUtilities

calculateCSAT

Calculate Customer Satisfaction Score as the percentage of responses at or above a configurable threshold value

domidex01Published Updated

Customer Satisfaction Score (CSAT) is the percentage of responses that meet or exceed a positive threshold. On a 1–5 scale, ratings ≥ 4 are typically considered positive.

Import

import { calculateCSAT } from '@tour-kit/surveys';

Usage

import { calculateCSAT } from '@tour-kit/surveys';

// Default threshold: 4 (suitable for a 1–5 scale)
const result = calculateCSAT([5, 4, 3, 5, 4, 2, 5, 4]);

console.log(result.score);     // 75  (6 of 8 responses ≥ 4)
console.log(result.positive);  // 6
console.log(result.negative);  // 2
console.log(result.total);     // 8
console.log(result.threshold); // 4

Custom threshold

// On a 1–10 scale, treat ≥ 7 as positive
const result = calculateCSAT([8, 9, 5, 7, 6, 10], 7);

console.log(result.score);    // 67 (4 of 6 responses ≥ 7, rounded)
console.log(result.positive); // 4
console.log(result.negative); // 2

Typical survey config

const csatSurvey: SurveyConfig = {
  id: 'support-csat',
  type: 'csat',
  displayMode: 'modal',
  title: 'How satisfied were you with our support?',
  questions: [
    {
      id: 'satisfaction',
      type: 'rating',
      text: 'Rate your experience',
      ratingScale: { min: 1, max: 5, style: 'stars', labels: { min: 'Poor', max: 'Excellent' } },
    },
  ],
  onComplete: (responses) => {
    const ratings = Array.from(responses.values()).filter((v): v is number => typeof v === 'number');
    const csat = calculateCSAT(ratings, 4);
    sendToAnalytics({ csat: csat.score });
  },
};

Parameters

Prop

Type

Returns — CSATResult

Prop

Type