Asking for one
There is one way to collect a score and two ways to reach it, which is the point of the app model: the same action, whether a model decided to ask or a flow step did.1
A virtual agent asks
Give the profile the collect_csat action. The agent asks before it
ends the call or hands over to a person. If the caller has already said
something clear — “yeah, that was great” — the agent passes that as the
score rather than asking again.
2
A flow asks
Use an app action node. The caller is asked to press a digit.
One score per call, and the first answer is the one kept. A caller
re-asked until they change their mind is not a better measurement, it is a
worse one. An agent that has already collected a score will not survey the
same caller again at the end of the call.
Spoken and keypad are never pooled silently
A score the model read out of “yeah, pretty good” is its interpretation. A pressed digit is the caller’s own statement. Averaging the two without saying so produces a number that looks like a measurement and is partly an opinion. So the method travels with every score, and the split sits beside the total everywhere — on the screen, in the summary and in the API. Beside each average is its count, and a distribution across 1 to 5, because two averages of 3.0 can mean everyone is lukewarm or half love it and half hate it.Attribution
A score is stamped with the agent and the team as they were when it was given, not resolved through today’s roster later. An agent moves teams and a team’s members change; recalculating afterwards would silently rewrite last quarter’s numbers for two teams at once.Reading the numbers
Reading needscsat:read — a supervisor, an admin, not an agent. The default
window is the last 30 days, which is the window somebody means by “how are we
doing”.
Nothing can submit a score through the API. A score anyone can post is not a
measurement.
Individual ratings also appear on the call they came from and on that
customer’s timeline, with the caller’s own comment where they gave one.