On a schedule
Hear about negative satisfaction ratings fast
A poor rating reaches you within 15 minutes, with the comment, agent and ticket link.
- Runs
- On a schedule
- Apps
- Freshdesk
- AI
- Not needed
- Access
- read
Send this to your assistant
Create a ClickRuntime automation: every 15 minutes, check new Freshdesk satisfaction ratings and send any negative ones to #cx-leads in Slack with the ticket subject, agent, comment and link.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A customer who gives a poor satisfaction rating is telling you, at the moment they are most annoyed, exactly which ticket went wrong. Freshdesk records the rating, but support managers usually see it in a weekly report, long after the customer has cancelled, posted a review or moved on. The comment that explains the problem, such as being told the same thing three times, sits unread until the numbers are reviewed.
On each run, ClickRuntime lists the satisfaction ratings created since the last check, keeps only the negative ones, and posts the ticket subject, the agent's name and the customer's comment to your chosen channel. It remembers rating IDs so each is reported once. Follow-up becomes possible the same day.
It suits team leads who want to follow up with unhappy customers directly.
What you get out of it
Win back unhappy customers
A call or a personal email within hours of a bad rating often turns a customer around. The same message a week later often lands after they have decided to leave.
Coach agents with fresh examples
A bad rating with the ticket attached makes feedback concrete. Talking about a conversation from this morning is far more useful than a general talk about quality. Concrete examples change behavior faster than averages.
Find process problems early
Several negative ratings mentioning slow replies or repeated questions show a process failure. You can fix it in the same week instead of discovering it at the quarterly review. Quick fixes are possible.
See the customer's own words
The comment explains the problem better than a score. Reading it in the alert saves a trip to the ticket and sets the tone for a better reply. Context shapes your response.
Protect renewals and reviews
Unhappy customers often write public reviews or skip renewal. Quick contact reduces both, and the cost of one saved account is much higher than the effort of one phone call. Saving an account is worth far more than the time it takes.
How it works
What happens, step by step
Every 15 minutes ClickRuntime checks Freshdesk for satisfaction ratings left since the last check, so nothing is reported twice.
It keeps only the negative ratings.
For each one it looks up the ticket subject and the agent who handled it.
A message goes to your #cx-leads Slack channel with the ticket, the agent, the customer's comment and a link to the ticket.
Before it runs live
- Connect Freshdesk
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Act only on the items that match your own rules, and skip the rest
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Slack
- Combine it with other Freshdesk steps into one automation
Under the hood
The code that runs this automation
from datetime import datetime, timezone
from clickruntime import on_trigger, credentials, http, state, notify, report_fetched
DOMAIN = "acme"
@on_trigger
def run(event):
key = credentials.secret("FRESHDESK_API_KEY")
base = f"https://{DOMAIN}.freshdesk.com/api/v2"
since = state.get("since") or datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")
ratings = http.get(f"{base}/surveys/satisfaction_ratings", params={"created_since": since},
auth=(key, "X")).json()
report_fetched(len(ratings))
if not ratings:
return {"summary": "Nothing new"}
for r in ratings:
if r["ratings"].get("default_question", 0) >= 0:
continue
t = http.get(f"{base}/tickets/{r['ticket_id']}", auth=(key, "X")).json()
agent = http.get(f"{base}/agents/{r['agent_id']}", auth=(key, "X")).json()["contact"]["name"] if r.get("agent_id") else "unassigned"
notify.slack(f"Negative rating on #{t['id']} {t['subject']} ({agent})\n> {r.get('feedback') or 'no comment'}\n"
f"https://{DOMAIN}.freshdesk.com/a/tickets/{t['id']}", channel="#cx-leads")
state.set("since", max(r["created_at"] for r in ratings))
return {"ratings": len(ratings)}FAQ
Common questions
What counts as a negative rating?
Does it need agents to ask for ratings?
Can the alert go straight to the agent's manager?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Find tickets no agent has picked up
Tickets still without an agent after 2 hours land in Slack, each one only once.
See how it worksGet warned about overdue Freshdesk tickets
Every hour you see which tickets have passed their due-by time.
See how it worksPost new Freshdesk tickets to Slack
Each new ticket shows up in Slack with its subject, requester and priority.
See how it worksKeep exploring
Set up “Hear about negative satisfaction ratings fast” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.
