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.
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:
- Fire the survey:
Conversation closedtrigger. - React to the score:
CSAT response receivedtrigger.
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
Conversation closedtrigger. 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.Business hourscondition (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.Ask for CSAT surveynode. 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
CSAT response receivedtrigger withmax scoreset to 2 (out of 5). It only fires for 1- or 2-star replies.Add tagnode with something likeunhappy-customer. This leaves a mark on the contact so you can segment later.Notify team by emailnode. Immediate heads-up to a supervisor. Personalize the body with variables like{{$contact.first_name}}and{{$conversation.summary}}(the AI summary of the conversation).Create follow-up tasknode so someone calls or messages the customer. It ships with an owner and a due date.Reopen conversationnode 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 closedtrigger 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 closedtrigger already covers both cases. - Asking overnight. The
Business hourscondition prevents that.
Handy variants
- Branch-level escalation: in the low-score workflow, add a
Conditionthat checks whether the contact has a VIP tag and, if so, usesTransfer to an agentdirectly instead of just creating a task. - Historical log: add a
Google Sheets (append row)orHTTP requestnode 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.