Using Zendesk CSAT to find customers about to churn
How to use Zendesk satisfaction ratings to flag customers at risk of churning: what CSAT data contains, how to export it and test the link to churn.
Zendesk CSAT is usually read as a team metric: what share of solved tickets were rated good this month. Read per customer instead, it becomes something else: a list of people who just told you, in one click, that something went wrong. Some of them are about to leave.
This guide explains what Zendesk’s satisfaction data contains, how to get it out, how to follow up on bad ratings quickly, and how to test whether ratings predict churn in your business. It relies on Zendesk’s documentation for the CSAT user experience, sending a CSAT survey, satisfaction reasons, unexpected bad ratings, and the Satisfaction Ratings and CSAT Survey Responses API references (all accessed November 2026).
How Zendesk collects CSAT
The survey is tied to solved tickets. For messaging channels, Zendesk creates a system trigger that shows the survey right after a ticket is solved. For email, a default automation sends the request 24 hours after the ticket is set to solved, according to Zendesk’s CSAT experience article.
With the current survey experience described in Sending a CSAT survey, admins choose the rating scale (two, three or five points), and can add an open-ended question. Zendesk also supports satisfaction reasons: a drop-down of reasons shown when a customer gives a negative rating. Reasons are optional for the customer.
Messaging surveys only show the comment prompt after the customer has clicked a rating.
What the data looks like
There are two API representations, and it helps to know both.
Satisfaction ratings. The older Satisfaction Ratings endpoint (GET /api/v2/satisfaction_ratings) returns ratings with a score of offered, unoffered, good or bad. You can filter by score, including variants with and without comments, and by a start_time. “Offered” means the customer was sent a survey and has not answered; “unoffered” means no survey was sent.
CSAT survey responses. The CSAT Survey Responses API covers the newer survey, with ratings grouped as bad, neutral or good. Zendesk’s guide on getting CSAT survey responses recommends this data for more accurate feedback when you use the newer survey.
Either way, each rating ties back to a ticket, and the ticket to a requester and, often, an organization. That is the path to a customer.
One data quality problem to fix first
Zendesk documents a known cause of unexpected bad ratings: email security scanners that follow every link in a message. Because the rating stores the last link clicked, a scanner clicking “good” then “bad” records a bad rating the customer never gave. Zendesk’s recommended fix is to replace the direct good and bad links in the CSAT email with a link to the survey landing page.
If you plan to use bad ratings as a churn signal, fix this first. Otherwise some of your “unhappy customers” are a mail filter at a large company.
Following up on bad ratings
The fastest win does not need any analysis: someone reads every bad rating within a day and acts on it.
- Build a view. Zendesk documents a view for ratings with comments, using conditions such as “Satisfaction Is Bad with comment”. Create one for bad ratings with and without comments.
- Assign an owner. A team lead or customer success manager, not the agent who handled the ticket.
- Read the comment and reason, then look at the account: plan, tenure, recent billing events, other open tickets.
- Reply personally to what the customer said. A short message from a named person that fixes or explains something does more than a generic apology.
- Tag the outcome (
csat-followup-done,csat-followup-churned) so you can measure it later.
For reporting, Zendesk publishes an Explore recipe for bad ratings with comments.
Reading reasons and comments
Scores tell you that something went wrong; satisfaction reasons and comments tell you what. Before any statistics, read a month of bad ratings with comments and sort them into a handful of themes:
- Support experience: slow reply, unclear answer, ticket closed too early.
- Product problem: a bug, a missing feature, something that does not work as advertised.
- Billing problem: an unexpected charge, a renewal the customer forgot about, a refund refused.
- Not about you: a rating clicked by mistake, or a complaint about something outside your control.
The second and third groups are the ones most worth comparing with churn. A customer upset about a slow reply may stay once it is fixed; a customer upset about a charge is also a dispute risk, so check their billing at the same time.
Testing whether ratings predict churn
A bad rating feels like a churn signal. Check it.
Build the dataset
- Export ratings for a period, using either API above, with ticket ID, requester, organization, score, reason, comment and date.
- Export billing customers with start date, cancellation date and churn type (voluntary or failed payment).
- Match requesters to customers by email. Zendesk users can have several email identities; use all of them. In B2B, decide whether a rating from any user counts for the organization.
- Fix a window. Ratings in the 90 days before a reference date; churn in the 90 days after.
Compare groups
| Group | Definition |
|---|---|
| At least one bad | One or more bad ratings in the window |
| Good only | Only good ratings |
| Offered, never answered | Surveys sent, no response |
| No solved tickets | No survey offered in the window |
Compute voluntary churn in each group, with the customer count next to every rate. Leave failed-payment churn out; see involuntary churn for why it behaves differently. The churn formulas are in how to calculate churn rate.
Read it with care
- Response rates shape everything. If few customers answer, the “bad” group is small and self-selected. The “offered, never answered” group can be as informative as the bad ratings.
- Reasons matter more than scores. A bad rating with the reason “issue not resolved” is a different signal from “agent was slow”. Break the comparison down by reason when you have enough data.
- Follow-up changes the result. If you start following up on bad ratings, their link to churn should weaken. That is the goal, not a broken analysis.
- Correlation, not causation. A bad rating can be a symptom of a decision already made. It still tells you who to talk to.
If CSAT does not separate churners from stayers in your data, look at other support signals; see how to spot churn signals in Zendesk tickets.
Doing this with NoChurn
NoChurn’s Zendesk connector is read-only: it does not send surveys, change your CSAT settings or write to tickets. It reads tickets and their satisfaction ratings, matches requesters to billing customers by email (doubtful matches are suggested for you to confirm, never merged automatically), and uses them as inputs to the 0–100 churn score and to churn drivers, which ranks the attributes most correlated with churn (correlation, not causation). You can push other attributes by API, such as product usage, to see how support signals compare. See NoChurn + Zendesk.