Configure CSAT for Conversation Intelligence

This feature is only available to paid customers as an add-on. To upgrade, contact your Customer Success Manager or sales@heap.io

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_value must be less than max_value.
  • Both values must be between 0 and 100.
  • 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 Case related to the messaging session, not from the MessagingSession record itself.

Setup steps

  1. 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 Satisfied or Unsatisfied.
  2. 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.
  3. Grant read access. Make sure the Conversation Intelligence integration user has read access to Case.CSQ_CSAT__c.
  4. Declare your scale. Provide the numerical min_value and max_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.0
bad = 0.0
Chat chat.rating good = 1.0
bad = 0.0

Setup steps

  1. Enable Zendesk CSAT collection. For email and ticket conversations, enable Zendesk satisfaction ratings so answered tickets expose satisfaction_rating.score.
  2. Declare your scale. The default Zendesk mapping is binary: good maps to 1.0, and bad maps to 0.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

  1. Enable Intercom conversation ratings. Closed conversations should contain conversation_rating.rating when the end user submits a rating.
  2. 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

  1. Enable Ada CSAT collection. Resolved Ada conversations should expose the raw score on csat.score.
  2. Declare your scale. The default configuration assumes a 1–5 numerical scale. If your Ada setup uses a different scale, confirm the correct min_value and max_value during 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.

Last updated
Powered by Zendesk