Bad CSAT alerts in Slack with an AI root-cause summary

When a Zendesk ticket gets a bad satisfaction rating, post a short post-mortem in Slack so support leads see the why, not just the score.

Agentic Task
ZendeskSlackCustomer SupportNotifications & AlertsFeedback Triage
PromptCreate

Build me an agent workflow that posts a root-cause summary to Slack every time a Zendesk ticket gets a bad customer satisfaction rating.

Trigger: poll Zendesk for updated tickets (Updated Ticket event). For each updated ticket, run the agent.

Agent instructions:

1. Use Zendesk Show Ticket to fetch the ticket. Check the satisfaction_rating field. Only continue if the score is 'bad' (or 'badwithcomment'). Otherwise stop.

2. Skip tickets that already had a bad rating before this update. Use the ticket tags as a dedupe marker: if the ticket already has the tag 'csat-bad-alerted', stop. This prevents re-firing on subsequent ticket updates.

3. Use Zendesk List Ticket Comments to read the full conversation between the customer and the agent. Capture timestamps so you can reason about response times.

4. If the ticket has an assigned agent (assignee_id), use Zendesk Show User to get the agent's name. Pull the ticket tags as well so you can mention any relevant ones (product area, priority, etc.).

5. Produce a short post-mortem with these sections: customer pain in one sentence; where it went wrong (pick from: slow first response, wrong answer, tone, unresolved issue, repeat contact, other); the verbatim bad-rating comment if any; assigned agent and relevant tags; one concrete suggested follow-up action.

6. Use Slack Send a Message to post the summary into the #csat-alerts channel (let the user pick the channel during setup). Include the ticket subject, requester name, and a direct link to the ticket in Zendesk.

7. Use Zendesk Update Ticket to add the tag 'csat-bad-alerted' so this ticket is not alerted again on future updates.

Keep the Slack message tight and skimmable. Use bold for section labels and a single bullet per section. The goal is that the head of support reads it in 15 seconds and knows exactly what happened and what to do next.

Additional information

What does this prompt do?
  • Watches Zendesk for tickets that just received a bad customer satisfaction rating.
  • Reads the full conversation and identifies what actually went wrong (slow first response, wrong answer, tone, unresolved issue, or repeat contact).
  • Posts a tidy summary into a Slack channel with the customer pain in one sentence, the verbatim bad-rating comment, the assigned agent, and one suggested follow-up.
  • Tags the ticket so the same bad rating never gets re-alerted on later updates.
What do I need to use this?
  • A Zendesk account with permission to read tickets and update tags.
  • A Slack workspace with a channel for CSAT alerts (for example, #csat-alerts).
  • Customer satisfaction ratings turned on in Zendesk.
How can I customize it?
  • Change which Slack channel receives the alerts, or send to a DM instead.
  • Adjust the categories the AI uses to classify why the rating was bad.
  • Add filters by brand, group, or product area so only certain teams get pinged.

FAQs

Will I get pinged twice if a ticket gets updated again after a bad rating?
No. Once a ticket is alerted, it gets a tag so the workflow skips it on future updates.
What if the customer left a bad rating without writing a comment?
The summary still goes out. The AI infers the likely reason from the conversation and notes that no comment was provided.
Does this work with Zendesk's built-in CSAT survey?
Yes. It reads the standard satisfaction rating field on tickets, which is populated by the built-in Zendesk survey.
Can the alert go to multiple Slack channels?
Yes. You can route by team or product area, for example a regional channel plus a central #csat-alerts channel.
How quickly will I see the alert after a customer rates a ticket?
Usually within a few minutes of the rating being submitted in Zendesk.

Related templates

Turn website roof inspection requests into JobNimbus leads

New roof inspection requests from your website form land in JobNimbus within a minute, with no duplicate records and nothing retyped by your team.

JobNimbus
Google Forms
Slack
Agentic Task
Triage new Jira Service Management requests before anyone opens them

Every new customer request gets a priority, triage labels, a friendly reply with the right help article, and a Slack ping only when it is truly urgent.

Jira Service Management
Jira
Slack
Agentic Task
Risk-check every dependency upgrade pull request in GitHub

When a bot opens a version bump pull request, we read the real documentation for that exact version and tell you whether it is safe to merge.

Context7
GitHub
Slack
Agentic Task
Launch an Ironclad contract when a HubSpot deal is won

The moment a deal hits Closed Won, the right contract starts in Ironclad, the link lands on the deal, and your sales channel hears who owns the next step.

Ironclad
HubSpot
Slack
Agentic Task
Weekly Ironclad contract renewal digest in Slack and Asana

Every Monday, find contracts renewing or expiring in the next 90 days, post a ranked digest to Slack, and open Asana tasks for the ones that need a decision now.

Ironclad
Slack
Asana
Agentic Task
Turn repeat support tickets into draft help articles

Every Friday, spot the questions your team keeps answering by hand and get a ready-to-review help article drafted from real fixes.

Jira Service Management
Confluence
Slack
Agentic Task

See every bad CSAT with the story behind it.

Connect Zendesk and Slack once, and Geni explains the why behind every bad rating in your CSAT channel.