🇪🇸 Español 🇬🇧 English 🇧🇷 Português
Guides

Automatic CSAT survey on close and reaction by score

Fire an automatic CSAT survey when each conversation closes and react by score: tags, team alerts and recovery tasks — no agent has to remember.

July 11, 2026

Closing a conversation isn't the end — it's the perfect moment to ask the customer how it went. With two simple workflows in Omnifox you can fire an automatic CSAT survey the instant a ticket is resolved, and then react differently depending on the score. One tags, another alerts, another opens a recovery task. All without an agent having to remember a thing.

In this guide we build the full circuit using real triggers and nodes from the workflow engine.

Why split the survey into two workflows

Omnifox's engine enforces one trigger per workflow. Since there are two distinct moments here — when the conversation closes and when the customer answers the survey — you need two flows:

  1. Fire the survey: Conversation closed trigger.
  2. React to the score: CSAT response received trigger.

They're decoupled on purpose: the customer may take hours to reply, and you don't want the first flow sitting there blocked.

Workflow 1 — Fire the survey on close

The flow is short:

Trigger: Conversation closed
   → Condition: Business hours (optional)
   → Ask for CSAT survey
  1. Conversation closed trigger. Fires every time an agent (or an auto-close) marks the conversation as closed. Filter by channel if you only want to measure WhatsApp, for example.
  2. Business hours condition (optional but recommended). It has three branches: In hours, Out of hours and Holiday. Sending a survey at 3 a.m. tanks your response rate, so let only the In hours branch continue.
  3. Ask for CSAT survey node. Sends the satisfaction question over the same channel the conversation lives on. On channels like WhatsApp it renders as score buttons — the customer taps and they're done.

That already gets you measuring. But the good part starts when the reply lands.

Workflow 2 — React based on the score

Here comes the CSAT response received trigger, which accepts minimum and maximum score filters. That lets you build three parallel workflows (or one with conditions) for promoters, passives and detractors. Let's look at the most valuable one: the low score.

Trigger: CSAT response received (max score = 2)
   → Add tag "unhappy-customer"
   → Notify team by email
   → Create follow-up task
   → Reopen conversation
  1. CSAT response received trigger with max score set to 2 (out of 5). It only fires for 1- or 2-star replies.
  2. Add tag node with something like unhappy-customer. This leaves a mark on the contact so you can segment later.
  3. Notify team by email node. Immediate heads-up to a supervisor. Personalize the body with variables like {{$contact.first_name}} and {{$conversation.summary}} (the AI summary of the conversation).
  4. Create follow-up task node so someone calls or messages the customer. It ships with an owner and a due date.
  5. Reopen conversation node so the case returns to the inbox and nothing slips through.

For promoters (score 4–5) build a third workflow: CSAT response received trigger with min score = 4, and an Add tag "promoter" node or even a Send message asking for a review.

Personalize with variables

Both the survey message and the notifications get much better with variables:

  • {{$contact.first_name}} to greet by name.
  • {{$conversation.channel_name}} to know where it came in.
  • {{$conversation.assignee}} to name the agent who handled it.
  • {{$conversation.summary}} so the supervisor reads the context without opening the chat.

Remember the golden rule: if a variable doesn't exist, it's replaced by an empty string and the message doesn't break.

Common mistakes

  • Surveying internal or spam conversations. Filter the Conversation closed trigger by channel or tag so you don't annoy people.
  • Skipping the score filter. If a single workflow reacts to every score, you'll open tasks for happy customers. Use min/max score.
  • Duplicate surveys. If you run auto-close on inactivity, check it doesn't fire the survey twice; the Conversation closed trigger already covers both cases.
  • Asking overnight. The Business hours condition prevents that.

Handy variants

  • Branch-level escalation: in the low-score workflow, add a Condition that checks whether the contact has a VIP tag and, if so, uses Transfer to an agent directly instead of just creating a task.
  • Historical log: add a Google Sheets (append row) or HTTP request node to push every reply to your external dashboard.
  • CSAT by team: filter the close trigger by assigned agent to measure satisfaction per team.

How you do it in Omnifox

You build all of this visually in the Omnifox workflow editor: pick the trigger, chain the nodes, publish. The Ask for CSAT survey node and the CSAT response received trigger come ready to use, so you don't have to code anything.

Measuring satisfaction and acting on it in the same minute is the difference between a customer who leaves quietly and one you save in time. Try the CSAT circuit in Omnifox and turn every close into a chance to improve.

Comentarios (0)

Todavía no hay comentarios. Sé el primero en compartir tu opinión.

Dejá un comentario

Tu email nunca se publica. Los comentarios se moderan antes de aparecer.

Soporta markdown. El HTML se elimina.