Monitor CSAT scores and alert Slack on low ratings using Claude Cowork

low complexityCost: Usage-based

Prerequisites

Prerequisites
  • Claude Desktop with Cowork enabled
  • Gorgias account email, API key, and domain
  • Slack Incoming Webhook URL for your CSAT alerts channel

Overview

Claude Cowork lets you set up a recurring task that checks Gorgias for recent satisfaction survey responses, identifies low scores, and sends a Slack alert — all described in plain text. No code to write or maintain. Claude reads the task description, makes the API calls, and posts alerts on your behalf.

This is the fastest way to get CSAT alerting running if you don't want to configure Gorgias Rules or set up an n8n workflow.

Step 1: Set up a Slack Incoming Webhook

In Slack, go to Apps → Incoming Webhooks → Add to Slack:

  1. Choose the channel for alerts (e.g. #csat-alerts)
  2. Copy the Webhook URL
  3. Set the bot name to "CSAT Alert" for easy identification

You'll paste this URL into the Cowork task description.

Step 2: Create the Cowork task

Open Claude Desktop → Cowork tab → + New task.

Title: Check for low CSAT scores and alert Slack

Description:

You are a customer satisfaction monitor. Check Gorgias for recent satisfaction
survey responses and alert a Slack channel when a customer gives a low score.
 
Gorgias credentials:
- Domain: your-store
- Auth: HTTP Basic (username: you@company.com, password: YOUR_API_KEY)
 
Slack webhook URL: https://hooks.slack.com/services/YOUR/WEBHOOK/URL
 
Step 1 — Get recent satisfaction surveys:
GET https://your-store.gorgias.com/api/satisfaction-surveys?order_by=created_datetime:desc&limit=30
 
Step 2 — For each survey with a score of 1 or 2 (out of 5):
Fetch the ticket details:
GET https://your-store.gorgias.com/api/tickets/{ticket_id}
 
Step 3 — Send a Slack alert for each low score:
POST to the Slack webhook URL with this JSON:
{
  "blocks": [
    {
      "type": "header",
      "text": {"type": "plain_text", "text": "Low CSAT Score: SCORE/5"}
    },
    {
      "type": "section",
      "fields": [
        {"type": "mrkdwn", "text": "*Customer:* CUSTOMER_NAME"},
        {"type": "mrkdwn", "text": "*Email:* CUSTOMER_EMAIL"},
        {"type": "mrkdwn", "text": "*Subject:* TICKET_SUBJECT"},
        {"type": "mrkdwn", "text": "*Agent:* ASSIGNED_AGENT"}
      ]
    },
    {
      "type": "actions",
      "elements": [
        {
          "type": "button",
          "text": {"type": "plain_text", "text": "Open Ticket"},
          "url": "https://your-store.gorgias.com/app/ticket/TICKET_ID"
        }
      ]
    }
  ]
}
 
Step 4 — Tag the ticket as "csat-low":
PUT https://your-store.gorgias.com/api/tickets/{ticket_id}
Body: {"tags": [{"name": "csat-low"}]}
 
Step 5 — Print a summary of what you found:
- Total surveys checked
- Number of low scores found
- For each low score: ticket ID, customer name, score, and whether alert was sent
 
Only alert on surveys from the last 2 hours to avoid duplicate alerts across runs.
Skip any ticket that already has the "csat-low" tag.
Claude Desktop must be running

Cowork tasks only execute while Claude Desktop is open and your machine is awake. For reliable 24/7 monitoring, use the Agent Skill with a cron job or the native Gorgias Rules approach instead.

Step 3: Set the schedule

Frequency: Every 30-60 minutes during business hours

If your support team works 9am-6pm, schedule every 30 minutes during those hours. Low CSAT scores that arrive overnight will be caught on the first morning run.

Step 4: Run manually and review

Click Run now and watch the output. Claude will:

  1. Fetch recent satisfaction surveys
  2. Identify scores of 1 or 2
  3. Look up ticket details for each
  4. Post a Slack alert
  5. Tag the ticket in Gorgias

A typical run summary looks like:

Checked 30 recent satisfaction surveys. Found 2 low scores.
 
#15201 - Maria S. - Score: 1/5
  Subject: "Damaged item received"
  Agent: Sarah K.
  -> Slack alert sent, ticket tagged csat-low
 
#15195 - James T. - Score: 2/5
  Subject: "Late delivery"
  Agent: Mike R.
  -> Slack alert sent, ticket tagged csat-low
 
Summary: 2 alerts sent, 28 surveys above threshold.

Step 5: Refine the alert threshold

To also catch "passive" scores (3 out of 5), update the task description:

Change "score of 1 or 2" to "score of 1, 2, or 3" in both Step 2 and the summary.

Start with detractors only

Alert on 1-2 scores first. These are customers who are actively unhappy and most likely to churn. Once your team has a follow-up process in place for detractors, expand to include 3s if you want to catch passives too.

Step 6: Build a follow-up process

The Slack alert is only useful if someone acts on it. Establish a simple follow-up protocol:

  1. The agent who handled the ticket reviews the thread and identifies what went wrong
  2. A senior agent or team lead reaches out to the customer within 4 hours
  3. The follow-up message acknowledges the poor experience and offers a concrete resolution
  4. After follow-up, add a csat-followed-up tag to the ticket

Update the Cowork task to skip tickets that already have csat-followed-up in addition to csat-low.

When to use this approach

  • You want CSAT alerting running in under 10 minutes with no code
  • Your team works standard hours and doesn't need 24/7 real-time alerts
  • You have moderate survey volume (under 50 responses/day)

When to switch to another approach

  • You need instant alerts the moment a low score arrives → use Gorgias native Rules
  • You need alerts running 24/7 without depending on your laptop → use the Agent Skill with cron
  • You want to enrich alerts with order history or route different scores to different channels → use n8n

Need help implementing this?

We build and optimize automation systems for mid-market businesses. Let's discuss the right approach for your team.