What it means
CSAT is a transactional score. It asks one person about one thing that just happened, usually in the form "how satisfied were you with this conversation?" with a five-point answer. That specificity is its strength: unlike relationship metrics it can be attributed to a queue, an agent, a channel or a day, so when it moves you can normally find out why.
The specificity is also its limit. A customer can be very satisfied with how politely you handled a refund and still be leaving. CSAT measures the interaction, not the relationship, which is why it lives alongside NPS rather than replacing it.
The term hides more variation than almost any other metric in this glossary. A "CSAT of 82" might be a five-point top-two-box percentage, a five-point average rescaled to 100, a seven-point top-three-box, or a thumbs-up rate. Those are four different measurements of the same sentiment and they do not produce the same number, so the first question about any CSAT figure is always how it was computed.
The formulas, written out
Method 1, top-two-box. The standard and the one worth defaulting to:
CSAT = (responses rated 4 or 5 / total responses received) x 100
- Responses rated 4 or 5: the satisfied band. On a five-point scale that is the top two points.
- Total responses received: every response, including neutrals and dissatisfied ones. Surveys sent but not answered are not in this denominator, which is why the response rate must be published alongside.
Method 2, average score. Common in tools that display a star rating:
MeanCSAT = ( sum over s of s x n_s ) / N, optionally x 100 / s_max to express as a percentage
s: each point on the scale, 1 through 5.n_s: the number of responses at that point.N: total responses.s_max: the top of the scale, 5 here.
And the number nobody publishes and everybody should, because it bounds how much the other two can be trusted:
Response rate = (responses received / surveys delivered) x 100
A worked example, end to end
A support team resolves 1,000 conversations in a month and sends a survey on each. 214 people answer, a response rate of 21.4%. The distribution is 118 fives, 47 fours, 21 threes, 14 twos and 14 ones.
Top-two-box:
(118 + 47) / 214 = 165 / 214 = 77.1%
Average score:
(5x118) + (4x47) + (3x21) + (2x14) + (1x14) = 590 + 188 + 63 + 28 + 14 = 883
883 / 214 = 4.13 out of 5, which rescaled is 4.13 / 5 x 100 = 82.5%
Two headline numbers from one set of answers, 5.4 percentage points apart, both arithmetically correct. The average-score method is higher here because it gives partial credit for threes and twos, which the top-two-box method treats as failures.
Now the confidence interval, which is the part almost always omitted. With n = 214 and p = 0.771:
standard error = sqrt(0.771 x 0.229 / 214) = sqrt(0.000825) = 0.0287
That is 2.87 percentage points, so a 95% interval is roughly 77.1% plus or minus 5.6, from 71.5% to 82.7%. A move from 77.1% to 79.5% next month is not an improvement, it is the same number sampled twice. This single calculation would prevent most of the monthly meetings held about CSAT.
The same arithmetic at agent level is brutal. An agent with 18 responses has a standard error of sqrt(0.771 x 0.229 / 18) = 0.099, so a 95% interval of roughly plus or minus 19 points. Ranking a team on that is ranking them on noise.
Three ways the number goes wrong
Dropping neutrals from the denominator. Some dashboards compute satisfaction as satisfied divided by satisfied plus dissatisfied, quietly removing the middle of the scale. In this dataset that is 165 / (214 - 21) = 165 / 193 = 85.5%, a free gain of 8.4 points. It is almost never done deliberately, and it is very hard to spot once the chart is built, because the number looks plausible. If a CSAT figure ever jumps by several points after a reporting change and nobody can point at an operational cause, check the denominator first.
Ignoring non-response bias. 786 people did not answer. If they resemble the responders, the true satisfaction of the full population is also about 77%. If they are half as likely to be satisfied, which is a common pattern because unhappy customers often disengage entirely rather than complain, the picture changes materially. Among responders, 28 of 214 were dissatisfied, 13.1%. If the dissatisfied share among non-responders were double that, 26.2%, then across all 1,000 surveyed customers the dissatisfied share would be (28 + 0.262 x 786) / 1,000 = 23.4% rather than the 13.1% the responses suggest. Nobody knows which case is true, and that is the point: publish the response rate so the reader can weight the score accordingly.
Surveying only the successful outcomes. The 1,000 surveys went out on conversations marked resolved. In the same month 63 conversations were closed as "no reply from customer" and never surveyed at all. Those are disproportionately people who gave up waiting, which means the survey population is selected on the very outcome being measured. Any closure reason that excludes a conversation from the survey should be reported next to the score.
How CSAT is actually derived from CRM data
The survey is a record with its own lifecycle, joined to a conversation:
- The survey record: conversation ID, contact ID, the agent snapshotted at the moment of resolution,
sent_at,responded_at, score, optional comment, and the scale used. - The conversation: channel, queue, closure reason, and whether it was ever reopened.
- The contact: language, so the survey goes out in a language the person reads, and account, so one large customer can be identified as such.
Edge cases that change the number:
- Attribution window. A survey sent on 29 March and answered on 7 April belongs to which month? Attribute by
sent_atso the cohort matches the work that was done, and accept that the last few days of a month are provisional until the responses land. - The agent snapshot. Store the responsible agent on the survey row at send time. Reading the conversation's current owner at report time attributes last month's scores to whoever touched the ticket most recently.
- Reopened conversations. A reopen after a survey means the resolution was not one. Decide whether the reopen voids the score, triggers a second survey, or neither, and apply it consistently. Sending a second survey to the same person for the same problem is the fastest way to train them to ignore surveys.
- Heavy users. One contact who opens fourteen tickets in a month can contribute fourteen responses and dominate an agent's score. Cap responses per contact per period, or report a contact-weighted score alongside the response-weighted one.
- Language. A survey delivered in the wrong language does not produce a bad score, it produces no score, which silently removes a whole segment of customers from the metric.
- Scale changes. Moving from a five-point scale to thumbs up or down breaks the time series completely. Keep the old scale running in parallel for one full period or accept that the chart restarts.
Why it matters
CSAT is the fastest feedback loop a service organisation has. A queue that degrades on Tuesday shows up in Tuesday's scores, long before it shows up in churn or in a quarterly relationship survey. Paired with first response time it usually explains itself: the two move together more reliably than CSAT moves with resolution time, because being answered matters more to people than being finished quickly.
The free-text comment attached to the score is often worth more than the score. A hundred numbers tell you something changed; twenty comments tell you what. Treat the score as the trigger for reading the comments rather than as the output of the programme.
Common mistakes
- Publishing CSAT without the response rate. The two numbers are one fact and separating them is misleading.
- Ranking agents on small samples. Below about a hundred responses the confidence interval swamps any real difference.
- Tying compensation to it. Agents will begin asking for good scores, which changes the measurement rather than the service.
- Blending channels. Chat, email and phone produce structurally different scores. Report them separately.
- Reacting to movements inside the margin of error. Compute the interval once and put it on the chart.
Related concepts
- NPS: the relationship-level counterpart, measured on a different scale with different maths.
- First response time: the operational metric CSAT tracks most closely.
- Churn rate: the outcome that a persistently low CSAT eventually turns into.
- Omnichannel CRM: the system that makes per-channel comparison possible.
- ICP: satisfaction split by fit often shows two very different service experiences.
- Conversion funnel: pre-sale satisfaction predicts conversion as well as post-sale retention.
How Pinlyx handles it
Pinlyx attaches surveys to the conversation, snapshots the responsible agent at send time so attribution does not drift, and keeps the score, the free-text comment and the response timestamp on one row. Response rate is reported next to the score, results split by channel and queue without extra configuration, and surveys are delivered in the contact's own language so entire segments do not silently drop out of the sample.