How to Automate CSAT Follow-Up and Detractor Recovery
Support teams collect CSAT scores far more diligently than they act on them. The survey goes out, a number comes back, someone screenshots the weekly average for a dashboard, and the customer who rated you a 2 on Thursday hears nothing until renewal season. The fix is not a better survey. The fix is to automate CSAT follow-up so every response is picked up within minutes, sorted by severity, and either logged quietly or handed to a named human with the full context already assembled.
This guide covers the design, the honest boundaries, and the exact build in Skopx, where you create workflows by describing them in chat in plain English. There is no drag-and-drop canvas. You write a sentence, Skopx assembles the steps, and you inspect every run afterward.
What manual CSAT follow-up costs a support team
The cost is rarely one big number. It is a dozen small leaks that all point the same direction: the customers most likely to leave are the ones you contact last.
| Stage | What usually happens by hand | Where it breaks |
|---|---|---|
| Sending the survey | An agent remembers to send it, or a helpdesk rule fires on some ticket types | Coverage is uneven, so the score reflects who got asked, not who was served |
| Collecting responses | Results land in a survey tool nobody has open | Detractor feedback sits unread for days |
| Triage | A lead exports a CSV on Friday and reads the comments | The recovery window has already closed |
| Ownership | Whoever notices first pings the agent | No consistent owner, so some cases get two replies and some get none |
| Follow-through | A promise to "reach out" lives in someone's head | Nothing is logged, so nobody can tell whether recovery worked |
The compounding problem is time. A detractor comment is most useful in the hour after it is written, while the customer still remembers the interaction and still believes a response means something. A weekly review process guarantees you always arrive late. Automation does not make your team more empathetic. It makes the empathy arrive while it still counts.
The workflow design: ask, score, split, recover
Build this as two workflows, not one. They have different triggers and different failure modes, and keeping them separate makes both easier to debug.
Workflow A, the sender. A schedule trigger runs daily, pulls tickets resolved in the last 24 hours, filters out anyone already surveyed, and sends the survey. Skopx schedules support 15 minute minimum intervals, hourly, daily, and weekly, in an IANA timezone you choose, so set it to your support team's working hours rather than UTC and it will follow daylight saving correctly.
Workflow B, the responder. A webhook trigger fires the instant a survey response is submitted. Skopx gives each workflow a unique webhook URL with a per-workflow secret, which you paste into your survey tool or helpdesk outbound webhook settings. This workflow reads the score, branches on it, and does the routing.
Start with the sender in its simplest form and confirm it is sending to the right people before you wire anything clever on top.
Basic CSAT follow-up
Daily 09:00 local
Fetch resolved tickets
Drop already surveyed
Send survey email
Log send row
The log step is not optional bookkeeping. It is the deduplication key. Without it, a customer with three tickets in a week gets three surveys and your response rate quietly collapses.
What to automate and what stays human
Skopx has no human-approval step, and that constraint pushes you toward the correct design anyway. A workflow should never send a customer-facing apology on its own. It should prepare the apology, attach the evidence, and put it in front of the person who owns the relationship.
Automate the mechanical parts:
- Deciding who gets surveyed and when
- Sending the survey and recording that it was sent
- Reading the score and comment the moment they arrive
- Classifying the comment into a theme with an AI step
- Assembling a recovery brief: ticket history, previous scores, account owner, first response time, what the customer actually said
- Alerting the right channel and opening an internal follow-up task
- Appending every response to a log you can query later
Keep these human:
- The reply that goes to the detractor
- Any refund, credit, discount, or goodwill gesture
- Escalating a named agent to their manager
- Deciding whether an account is at genuine churn risk
- Anything that changes a customer's plan, permissions, or billing
The workflow's job is to make the human's job take two minutes instead of twenty. When the Slack alert already contains the score, the verbatim comment, the ticket link, and a drafted response the owner can edit, the recovery actually happens. When the alert is just "new detractor, go look", it does not.
This is the same principle behind automated support escalation: the system watches, prepares, and notifies, while a person decides and speaks.
Build it in Skopx: automate CSAT follow-up in six steps
1. Connect the tools first
Before you describe anything, connect the accounts the workflow will touch. For a typical setup that means your helpdesk (Zendesk, Freshdesk, Intercom, HubSpot Service or similar), your email sender, Slack, and a Google Sheet or database for the log. Skopx connects to nearly 1,000 business tools, so the shape of this build stays the same whichever helpdesk you run.
2. Describe the sender workflow
Open the chat on the workflows page and write the whole thing as one sentence. Be specific about timing, timezone, filters, and fields.
Every weekday at 9:00 AM in America/New_York, get tickets from Zendesk that were solved in the last 24 hours, skip any ticket ID that already appears in the "CSAT sent" Google Sheet, send each requester our CSAT survey email through Gmail with the ticket ID in the survey link, and append a row to the sheet with the ticket ID, requester email, assigned agent, and send time.
Skopx builds the trigger, the integration actions, the filter condition, and the field transforms from that description. You then review the steps it produced rather than assembling them yourself.
3. Point the survey response webhook at Skopx
Create the responder workflow with a webhook trigger. Copy the generated URL and secret into your survey tool's webhook settings. Send one test response and check the run log: you will see the exact payload that arrived, which tells you the real field names to reference.
4. Describe the responder workflow
When the CSAT webhook fires, read the score and comment from the payload, and if the score is 3 or lower, use an AI step to write a 120 word recovery brief summarizing the ticket history and what went wrong, post it to #csat-detractors in Slack tagging the assigned agent, and create a follow-up ticket in Zendesk assigned to the team lead with priority high. Otherwise append the score, comment, ticket ID, and agent to the "CSAT log" sheet.
5. Wire the data between steps
Values move with expressions. The trigger payload is available as {{ trigger.score }} and {{ trigger.comment }}. Any earlier step's result is available as {{ steps.<id>.output.field }}, so the Slack message body can reference {{ steps.ai_brief.output.text }} and the ticket description can reference the same brief. If a field arrives in a format you do not want, add a transform step rather than trying to fix it inside the AI prompt.
6. Run it manually, then let the schedule take over
Every workflow can be triggered manually. Fire the sender by hand against a quiet day first and read every step's real output before you trust the schedule.
The advanced version: separate detractors from everyone else
Once the basic loop is stable, add the condition that makes this worth running. Skopx conditions support comparisons like equals, contains, greater_than, and is_empty, which is all you need to split a score band.
Detractor recovery with routing
Survey response webhook
Normalize score
Score 3 or lower
AI drafts brief
Alert owner in Slack
Open recovery ticket
Append to score log
Decide your bands before you build, and write them down so the workflow and the team agree:
| Score | Segment | What the workflow does | What a human does |
|---|---|---|---|
| 1 to 2 | Severe detractor | Drafts recovery brief, alerts channel and team lead, opens high priority ticket | Lead calls or emails within the same working day |
| 3 | Soft detractor | Drafts brief, alerts the assigned agent only | Agent decides whether a reply is warranted |
| 4 | Neutral | Logs the response with the comment | Reviewed in the weekly quality read |
| 5 | Promoter | Logs the response, tags the account | Account owner may ask for a review or reference |
Note what is not in that table: an automatic apology email, an automatic credit, an automatic escalation of the agent to their manager. Those all involve judgment about a person or money, so the workflow prepares and notifies. It does not act.
Both branches must terminate. Workflows in Skopx are acyclic with a maximum of 20 steps, so there is no way to loop back and re-check a score later. If you want a second touch, that is a separate scheduled workflow reading your log, not a loop inside this one.
How to tell it is working
Every run in Skopx records each step's real output, its duration, and the exact error if it failed. That run history is your first instrument, and you should read it daily for the first two weeks.
Watch four things:
- Send coverage. Compare resolved tickets against rows added to your send log. If coverage sits well below your resolution count, your filter is too aggressive or the ticket status you are matching is wrong.
- Webhook arrival rate. Every survey submission should produce a run. Runs missing entirely means the webhook is misconfigured on the survey tool side, not in the workflow.
- Detractor time to first human touch. Timestamp the Slack alert against the timestamp of the agent's reply in the ticket. This is the number the whole build exists to move.
- Branch balance. If almost nothing hits the detractor branch, check that your score field is arriving as a number and not a string. A silent type mismatch is the most common reason a condition never fires.
For the qualitative side, the AI step's theme classification becomes a feedback source in its own right. Recurring themes about missing documentation are a signal to feed into knowledge base maintenance, and recurring themes about slow first replies usually trace back to ticket triage and routing.
Common mistakes when you automate CSAT follow-up
Surveying too fast and too often. Sending a survey the second a ticket closes catches customers mid-frustration. A one day delay and a rule that nobody gets surveyed more than once every 30 days will do more for your data quality than any prompt tuning.
Letting AI write to the customer. The moment an AI step's output goes straight into a customer-facing send, you have automated the one part that needed a person. Draft into Slack. Let the human copy, edit, and send.
Skipping the deduplication log. Without a record of who was surveyed, the workflow will re-survey the same people on every run and your response rate will fall off a cliff.
Getting the timezone wrong. Schedules run in the IANA timezone you specify. Set it explicitly to your support region rather than assuming a default.
Assuming a missed schedule fires late. If a scheduled run is missed beyond a 2 hour grace window, Skopx records it as failed rather than firing it hours later. That is deliberate, because a CSAT survey arriving at 3am is worse than one that never arrived. Build the sender to look back over a full 24 hour window so the next successful run catches yesterday's stragglers.
Forgetting the AI key. AI steps run on your own provider key with zero markup, so if no key is configured those steps will not run. Add the key before you build a workflow that depends on one.
Cramming everything into one workflow. The 20 step ceiling arrives faster than you expect when you add branches. Split the sender, the responder, and any weekly rollup into separate workflows that share a log.
Turning the score into an agent scorecard on day one. If agents believe a detractor response triggers a manager alert about them, they will start gaming who gets surveyed. Route detractor alerts to the agent first and the lead only for the most severe band.
Frequently asked questions
Can Skopx send the survey itself, or do I need a survey tool?
Either works. The simplest version sends a plain email with rating links through your connected mail tool and captures replies through a webhook. If you already run a dedicated survey platform, keep it and let Skopx handle the scheduling on the way in and the routing on the way out.
What if my helpdesk cannot send a webhook when a survey is answered?
Fall back to polling. Replace the webhook trigger with a schedule trigger running every 15 minutes that fetches responses submitted since the last run and processes any that are not already in your log. The rest of the workflow is unchanged. You trade a few minutes of latency for compatibility.
Can the workflow reply to a detractor automatically?
It can technically send a message, but you should not build it that way, and Skopx has no human-approval step to sit in between. Design it so the workflow prepares the reply and notifies the owner, who reads, edits, and sends. Recovery works because a person took responsibility, and an autoresponder signals the opposite.
What does this cost to run?
Skopx is $5 per month for Solo, $16 per seat per month for Team, and $5,000 per month for Enterprise, billed from day one on every plan. AI steps bill directly to your own provider key with zero markup, so that usage never passes through Skopx.
How do I debug a run that did the wrong thing?
Open the run in the workflow history. Each step shows its actual input, its actual output, how long it took, and the exact error text if it failed. Most routing bugs resolve in under a minute once you see the real value the condition was comparing, which is usually a string where you expected a number or a nested field one level deeper than you referenced.
Start with the sender, confirm coverage for a week, then add the responder and its branch. Two workflows, roughly a dozen steps total, and detractors stop waiting until Friday to be heard. Build it on the workflows page.
Skopx Team
The Skopx engineering and product team