Follow up on low satisfaction ratings
Open a Zendesk follow-up when a customer rates a support conversation badly in your MySQL help desk, once per ticket, before they churn quietly.
- MySQL
- Zendesk
- Slack
- Support
- once per ticket
The trigger
One read-only SELECT against MySQL. Rowfire polls it for new rows, and the rule fires once per ticket.
SELECT t.id AS ticket_id,
t.subject,
t.requester_email,
t.assignee,
r.score,
r.comment,
r.rated_at
FROM satisfaction_ratings r
JOIN tickets t ON t.id = r.ticket_id
WHERE r.score <= 2
AND t.is_spam = 0The clock is rated_at and the key is ticket_id. A score of 2 or below on
a five-point scale is a bad experience worth a second look. Table and column
names are a sketch; adapt them to your schema.
{{ requester_email }} rated "{{ subject }}" {{ score }}/5: "{{ comment }}". Handled by {{ assignee }}.
The support desk is often a separate database from the application. Each trigger names the source it reads, so this one reads the help desk’s MySQL while billing triggers read the app’s PostgreSQL.
For tickets that never got a reply at all, see escalate urgent tickets nobody has answered.
Questions
Why not let the help desk handle this itself?
If the ratings live in your own MySQL database, a trigger reads them where they are. If your help desk already alerts on bad ratings, use that.
Can a team lead see them without a ticket each?
Yes. Add a Slack rule on the same trigger, which is keyed by ticket. For at most one message a day per assignee, use a second trigger keyed by assignee instead, since the key belongs to the trigger.