This guide explains how to configure customer satisfaction (CSAT) so survey scores are ingested and normalized consistently across supported integrations.
Survey tools use different scoring systems, including 1–3 ratings, 1–5 stars, 1–10 scales, and binary outcomes such as satisfied or unsatisfied. Conversation Intelligence converts these raw scores into a normalized value between 0.0 and 1.0.
Part 1: Configure your CSAT scale
Configure one CSAT scale for your integration. The scale determines how Conversation Intelligence converts the raw score from your source system into a normalized value.
Option A: Numerical scale
Use a numerical scale when your survey produces a number within a fixed range, such as 1–3, 1–5, or 1–10. You can also define a custom numerical range.
Provide the following values:
| Setting | Meaning | Example |
|---|---|---|
min_value
|
The lowest possible score on your scale. |
1
|
max_value
|
The highest possible score on your scale. |
5
|
Conversation Intelligence uses this formula to normalize numerical scores:
normalized = (raw_score - min_value) / (max_value - min_value)
Example: 1–5 scale
| Raw score | Normalized value |
|---|---|
1
|
0.00
|
3
|
0.50
|
5
|
1.00
|
On a 1–5 scale, the midpoint score of 3 becomes 0.50. This allows the score to be compared with values from other numerical scales after normalization.
Numerical scales must meet the following requirements:
min_valuemust be less thanmax_value.- Both values must be between
0and100. - A raw score outside the declared range is ignored. No CSAT is recorded for that conversation.
Make sure the numerical range matches the values sent by your survey system. Scores outside the declared range aren't normalized or recorded.
Option B: Binary scale
Use a binary scale when your survey produces exactly two outcomes, such as satisfied and unsatisfied, or good and bad. Each outcome maps to either 1 or 0.
Binary scales must meet the following requirements:
- The mapping must contain exactly two raw values.
- A raw value that isn't included in the mapping is ignored. No CSAT is recorded for that conversation.
If you use text values, the value sent by your source system must match the declared mapping exactly. For example, Satisfied and Unsatisfied are treated as different values.
Use text or verbal values for binary scales. Emojis and other unique characters may not work reliably.
Part 2: Configure each integration
After choosing your CSAT scale, configure the field or data path used by your integration. The required setup depends on the platform and conversation channel.
Salesforce
For Salesforce, CSAT is read from one custom field on the Case object. The field must exist and be readable by the Conversation Intelligence integration user.
If the field is missing or unreadable, the Salesforce query used to retrieve Cases can fail. This can stop conversation ingestion for the affected channels. Create the field and grant read access before enabling CSAT during onboarding.
Required field
| Item | Value |
|---|---|
| Object |
Case
|
| Field API name |
CSQ_CSAT__c
|
| Field type | Number for a numerical scale, or Text for a binary scale |
| Channels covered | Email and Messaging |
The same field on Case serves both supported channels:
- Email: The score is read from the conversation's own
Case. - Messaging: The score is read from the
Caserelated to the messaging session, not from theMessagingSessionrecord itself.
Setup steps
- Create the field.
- Field API name:
CSQ_CSAT__c - Object:
Case - Use Number for a numerical scale.
- Use Text for a binary scale, and store the exact raw value from your mapping, such as
SatisfiedorUnsatisfied.
- Field API name:
- Populate the field.
- Native Salesforce Surveys: Use a Record-Triggered Flow to write the survey response to the parent
Case. - Third-party survey tools: Extend your Salesforce integration to write the score to
Case.CSQ_CSAT__c. - Custom survey object: Use a Flow on that object to write the score to the related
Case.
- Native Salesforce Surveys: Use a Record-Triggered Flow to write the survey response to the parent
- Grant read access. Make sure the Conversation Intelligence integration user has read access to
Case.CSQ_CSAT__c. - Declare your scale. Provide the numerical
min_valueandmax_value, or provide the binary value mapping.
Late-arriving CSAT
Surveys are often completed hours or days after a conversation closes. When your automation writes the score to Case.CSQ_CSAT__c, the Case's last-modified timestamp changes. Conversation Intelligence retrieves the score during the next refresh of that Case.
No additional action is needed as long as your automation writes the score to Case.CSQ_CSAT__c.
Zendesk
For Zendesk, CSAT is read from Zendesk's native satisfaction rating fields by default. The expected field depends on the supported Zendesk channel.
Default CSAT fields
| Channel | Default CSAT path | Expected values |
|---|---|---|
| Email and tickets | ticket.satisfaction_rating.score |
good = 1.0bad = 0.0
|
| Chat | chat.rating |
good = 1.0bad = 0.0
|
Setup steps
- Enable Zendesk CSAT collection. For email and ticket conversations, enable Zendesk satisfaction ratings so answered tickets expose
satisfaction_rating.score. - Declare your scale. The default Zendesk mapping is binary:
goodmaps to1.0, andbadmaps to0.0. If your account uses a different mapping, confirm it during onboarding.
Unanswered surveys
Zendesk can return values such as offered or unoffered when a survey was sent but not answered. These values aren't included in the default mapping, so no CSAT is recorded for that conversation.
Custom Zendesk CSAT fields
Some accounts store Zendesk CSAT in a custom ticket field instead of Zendesk's native satisfaction rating. This is a custom configuration, not the default path. If you use a custom field, provide its field ID during onboarding.
Once Zendesk CSAT is enabled and a rated conversation exposes the rating on the expected path, CSAT can be ingested for supported Zendesk email and ticket conversations.
Intercom
For Intercom, CSAT is read from the conversation rating object on the Intercom conversation.
Default CSAT field
| Item | Value |
|---|---|
| Object | Intercom conversation |
| Default CSAT path |
conversation_rating.rating
|
Setup steps
- Enable Intercom conversation ratings. Closed conversations should contain
conversation_rating.ratingwhen the end user submits a rating. - Declare your scale. The default configuration assumes a 1–5 numerical scale. If your Intercom setup uses a different scale or text values, confirm the correct numerical range or binary mapping during onboarding.
Conversations without ratings
If conversation_rating is empty, no CSAT is recorded for that conversation.
Ada
For Ada, CSAT is read from the Ada conversation's CSAT object.
Default CSAT fields
| Item | Value |
|---|---|
| Object | Ada conversation |
| Default CSAT path |
csat.score
|
| Channels covered | Ada chatbot conversations that aren't escalated to another CRM |
Setup steps
- Enable Ada CSAT collection. Resolved Ada conversations should expose the raw score on
csat.score. - Declare your scale. The default configuration assumes a 1–5 numerical scale. If your Ada setup uses a different scale, confirm the correct
min_valueandmax_valueduring onboarding.
When an Ada conversation is escalated to another CRM, that CRM owns the conversation ingestion and CSAT path. For example, an Ada conversation escalated to Zendesk should expose CSAT through the applicable Zendesk path.
Need help?
If you're unsure which CSAT scale or integration field to use, contact your Customer Success Manager before enabling CSAT during onboarding.