Skip to main content

Auto-CSAT/NPS dispatch

Auto-CSAT sends a satisfaction survey to the customer automatically when a conversation closes — no manual send step. You pick the template once, and every qualifying close dispatches it after a configurable delay. Auto-NPS runs the same loop on a separate track, so satisfaction (CSAT, 1–5) and loyalty (NPS, 0–10) accumulate in parallel. The answers roll up into scorecards you can break down by queue or by agent. This is distinct from the two other survey surfaces: surveys end to end covers manual, audience-targeted distribution over the API (send to a segment, chase non-responders); post-call surveys covers the IVR digit-capture played inside a voice call. Auto-CSAT/NPS is the third pattern — a close-triggered follow-up message, with no audience step and no IVR.

1. Configure it in Settings

Open Settings → CSAT in the dashboard (owner or admin role). Everything on the page persists to one organization settings block; the shape is exact: NPS has its own Settings → NPS page with the same knob set, so the two tracks carry independent templates, delays, and enable flags.

Conditions: scope which closes fire

The conditions list lets you restrict auto-dispatch to the closes worth surveying. Each entry is an AND matcher — every field you set must match — and the list is an OR: any single matching entry fires the survey. Fields left empty are wildcards.
  • Channels — only closes on these conversation channels (SMS, WhatsApp, email, web chat, and the rest of the channel list). To disable auto-CSAT for one channel, set conditions that cover every channel except that one.
  • Agents — only conversations assigned to these users. Use it to pilot CSAT on a subgroup before rolling out, or to exclude a team. A conversation with no assignee (bot-only) never matches a non-empty agent list.
  • Dispositions — only closes stamped with these disposition labels from your taxonomy.
  • Exclude bot-only — skip conversations a human never touched; the bot’s own confidence score already captures that signal.
Leave the list empty to fire on every eligible close.

2. What happens on close

The moment a conversation transitions to closed — by an operator’s close action or by automated disposition — the platform reads your auto-CSAT settings. When enabled, a template is chosen, and the conditions pass, the close arms the survey: the due timestamp and the template are stamped on the conversation. A dispatcher sweep runs every minute, picks up conversations whose delay has elapsed, and sends the survey. Per dispatch, the sweep:
  1. Confirms the template still exists (a template deleted between close and dispatch clears the pending survey instead of retrying forever).
  2. Applies the smart-trigger gates: negative-sentiment conversations and contacts inside the cooldown window are marked skipped, not sent.
  3. Picks the channel — the conversation’s last-used channel when the template allows it, else the first allowed channel the contact can be reached on (a phone-capable channel needs a contact phone number; email needs a contact email). Closes with no reachable channel are skipped and recorded as such.
  4. Holds SMS-class sends outside the 08:00–21:00 TCPA quiet-hours window until the recipient’s local morning; email is exempt.
  5. Sends the survey through the same message routing, billing, and opt-out enforcement as a manual send. The message carries the question, a signed link to a hosted survey page, and a quick-rate link — so the customer can reply with a bare number, tap through to the full survey, or rate 1–5 directly.
Every dispatched answer attaches to the survey, the contact, and the conversation that triggered it.

3. Read the scorecards

Answered surveys aggregate into per-queue and per-agent scorecards over GET /api/v1/surveys/scorecards:
Response:
Each row reports the response count, the top-2-box satisfaction percentage (score ≥ 4), the average score, the CSAT-only average, and the NPS (promoters minus detractors) over NPS rows. A row appears only once the bucket has at least one answered response, so sampled-off or unanswered sends never surface as zero-divide rows. Trend the same call over time — weekly snapshots with a moving from/to window — to see whether a queue’s score is drifting or a coaching change is landing.

4. Troubleshooting

The survey did not fire on a close. Walk the gates in order: a template must be picked; the conditions list must match the close (an unmatched condition list skips silently); the smart trigger must not have suppressed it (a negative-sentiment conversation, or the contact inside the cooldown window — an explicit cooldown-skip leaves the cooldown config as the first thing to lower if you want more volume); and the customer must be reachable on a channel the template allows. Also confirm the delay has elapsed — nothing sends before it. Duplicate dispatches. The sweep is idempotent: each fired close is stamped, and the sweep skips stamped rows. If a customer reports two surveys, the usual cause is the per-contact cooldown spanning both the CSAT and NPS tracks being misread as a duplicate, or the customer was also caught by a manual send outside the auto flow — check the cooldown and the manual sends before assuming the sweep double-fired. A conversation that reopens and closes again legitimately re-arms the survey. A channel never fires. Two checks: the template’s allowed channels must include it, and the customer must have an address on it. A dispatch with no reachable channel is skipped deliberately, not retried — the fix is on the contact record (a phone number or an email), not the settings page. SMS arrives at odd hours, then stops arriving overnight. That is the quiet-hours hold doing its job: SMS-class sends wait for the 08:00–21:00 recipient-local window. Sends outside the window dispatch automatically the moment it opens; nothing is lost. Numbers with unknown timezone fail open, so if you need strict hold behavior, make sure contacts carry a timezone.

5. Auto-CSAT vs the manual flow

Use auto-CSAT/NPS when the question is “how are we doing” on a continuous, operational cadence — it needs no operator action, accumulates scorecard data per queue and per agent from day one, and the smart trigger + cooldown keep the volume honest. Use the manual flow in surveys end to end when you need a targeted pulse — a post-campaign CSAT to one segment, a one-off NPS to a cohort, or a remind loop over non-responders. And use post-call surveys when the answer must be captured inside the voice call itself rather than by a follow-up message. The three feeds land in the same surveys analytics, so mixing them never splits your reporting.