automations.help

Support & returns

Send a CSAT survey after a ticket is resolved

Right now you close a ticket and move on, with no idea whether the customer left happy or just gave up. This watches for resolved tickets in Gorgias, waits a beat, and sends one short Klaviyo email with a single-click rating — then records the score against the agent who handled it and pings someone when a customer is unhappy enough to act on. Build it yourself with the steps below — or we build it, wire the score back into your reporting, and hand it over so you own it outright with no monthly fee. Free teardown of your current setup first.

Difficulty
Intermediate
Time to build
2-4 hrs
Updated
  • Gorgias
  • Klaviyo

The manual way today

An agent answers a ticket, marks it closed, and that's the last anyone hears of it. Whether the customer walked away satisfied or quietly furious is invisible. The only feedback you ever get is the loud minority — a one-star review or a chargeback weeks later — by which point the moment to fix it is long gone. The good agents and the rushed-reply agents look identical in the queue stats, because 'closed' counts the same either way.

You're flying blind on the thing support exists to do. Without a satisfaction signal you can't tell which agents need coaching, which canned replies actually resolve the issue versus just close the tab, or which ticket topics leave people unhappy no matter how fast you answer. A customer who got a curt, technically-correct reply churns silently and never tells you why — and silent churn is the most expensive kind, because there's nothing to learn from and no chance to win them back.

What running looks like

When a ticket flips to resolved in Gorgias, a short, branded survey email goes out from Klaviyo a little while later — one question, a row of rating buttons, no login and no form. A single click records the score, tags it to the agent and the ticket topic, and writes it onto the customer's Klaviyo profile. Happy customers get nudged toward a public review; unhappy ones trigger a follow-up so a real person reaches back out before they're gone. Spam tickets, auto-closed tickets, and customers you just surveyed are skipped automatically.

01The build

How to build it

  1. Decide what you're asking — and which tickets earn a survey

    Needs a human

    Pick the scale before you build: a 1-5 CSAT, a thumbs-up / thumbs-down, or a 'How easy was it to get this sorted?' (CES). One question, no more. Then write the exclusion list, because surveying the wrong tickets is how you train customers to ignore the email: skip anything tagged spam, anything auto-closed without an agent reply, tickets with no real customer email, and your own internal/test addresses. Decide the suppression window too — most brands don't re-survey the same person inside 14-30 days. This is a policy choice, so settle it on paper first.

  2. Fire on ticket-closed in Gorgias and grab the context

    Runs itself

    Build a Gorgias Rule on the 'ticket closed' trigger (or subscribe to the ticket-updated webhook and filter to status = closed). Have it send an HTTP request to your glue (n8n / Zapier) carrying the fields you'll need downstream: ticket_id, the requester's email, the assigned agent, the ticket tags, the channel (email / chat / social), and the subject. Trigger on the status change, not on an agent reply — a ticket can get several replies but should only ever produce one survey.

  3. Filter out the tickets that shouldn't be surveyed

    Runs itself

    In the glue step, drop anything that hit your exclusion list: a spam or no-reply tag, an auto-close with zero agent messages, a missing or internal email. Then run the suppression check — look up the customer's last survey date (a Klaviyo profile property or a small lookup table) and stop if it's inside your window. This is the guardrail that keeps the survey credible. A customer who opens four tickets in a week getting four surveys is how response rates collapse and the inbox starts treating you as noise.

  4. Push a Klaviyo event with the ticket details

    Runs itself

    For every ticket that survives the filter, send a server-side Klaviyo event — Track API, metric name like 'Support Ticket Resolved' — keyed to the customer's email so it lands on their profile. Attach the properties as event data: ticket_id, agent name, the primary tag/topic, channel, and resolved_at. This event is what the flow listens for, and stamping the agent and topic onto it now is what lets you slice CSAT by person and by issue type later instead of getting one meaningless company-wide average.

  5. Build the Klaviyo flow with a deliberate delay

    Runs itself

    Create a metric-triggered flow in Klaviyo on 'Support Ticket Resolved'. Add a time delay before the email — 30 to 60 minutes at minimum, or hold until the next morning — so the survey never arrives while the customer is still mid-conversation or while a 'resolved' ticket is about to be reopened. One email in the flow: the single question, the rating buttons, and nothing else competing for the click. Keep it plain and on-brand; this is a service touch, not a campaign.

  6. Make each rating a one-click link that captures the score

    Runs itself

    Render every rating as its own URL carrying the score and identifiers as query params — e.g. /csat?score=5&ticket={{ event.ticket_id }}&agent={{ event.agent }} — pointing at a thank-you page or a tracked endpoint in your glue. Clicking the button is the entire survey: no second page, no form, no login. Then branch on the landing page by score: a top rating leads to a soft 'mind leaving a public review?' ask, while a low rating leads to an apology and an optional 'what went wrong?' box. One click is the whole point — every extra field you add costs you responses.

  7. Write the score back where it's actually useful

    Runs itself

    When the rating link is hit, record it: set a Klaviyo profile property (last_csat_score, last_csat_date) so the suppression check and your segments can use it, and post the score back onto the Gorgias ticket as a tag or internal note so the agent who handled it sees the result and your CSAT-by-agent and CSAT-by-topic reporting has real data. A score nobody can see by agent or by issue is just a vanity number — the write-back is what turns it into something you can coach and fix from.

  8. Close the loop on the unhappy ones — with a human

    Needs a human

    A low score (a 1-2, or a thumbs-down) should do more than sit in a chart. Have the landing page or glue fire a Slack ping or open a fresh Gorgias ticket tagged 'csat-detractor' so a person reaches back out while the frustration is fresh and recoverable. The survey only earns its place if someone acts on the detractors; collecting sad faces and doing nothing with them is worse than not asking, because now the customer knows you asked and still didn't care.

02The stack

What it’s built on

Gorgias
The helpdesk where tickets get resolved and the trigger originates. Its Rules engine fires on 'ticket closed', and it already carries the agent, tags, channel, and customer email the survey needs — plus it's where the score gets written back so agents see how their resolutions actually landed. Rules can call out to n8n / Zapier for the filtering, suppression, and write-back logic.The 'ticket closed' trigger and the Rules engine are available on every Gorgias plan — you don't need a premium tier to ship this.
Klaviyo
Receives the resolution event, runs the delayed flow, and sends the one-question survey email — then stores the returned score on the customer profile so suppression and segmentation both work off it. Because it's the same Klaviyo you already run marketing on, the survey rides your existing sends instead of becoming a separate subscription.Klaviyo's free tier covers small lists (up to 250 contacts and a few hundred sends a month), and transactional survey emails ride the plan you already pay for — so this replaces a dedicated CSAT tool like Delighted or Nicereply rather than adding a new monthly bill.

03Questions

Before you build

Won't customers get annoyed being surveyed after every ticket?

They would if you surveyed every ticket — which is exactly why the recipe doesn't. The suppression window stops anyone being re-surveyed inside 14-30 days, the filter drops spam and auto-closed tickets, and the email is a single one-click question with no form. A short, infrequent ask that a customer can answer in one tap is the version people actually respond to, and the part that keeps it from feeling like spam.

Do I need a separate survey tool like Delighted or Nicereply?

No, and that's a large part of the point. Klaviyo already sends your email and stores customer profiles, so it can send the survey, capture the one-click score as a profile property, and segment on it — no extra monthly subscription and no second customer database to keep in sync. A standalone CSAT tool is mostly worth it only if you need very deep survey logic; for a single rating after a resolved ticket, the stack you already pay for covers it.

How do I tie each score to the agent who handled the ticket?

By stamping the agent onto the resolution event before the email even sends. The Gorgias trigger passes the assigned agent into the Klaviyo event, that value rides through the rating link's query params, and the write-back lands the score on the ticket and against that agent. That's what lets you report CSAT by person and by ticket topic instead of one company-wide average that tells you nothing actionable.

Will it survey tickets that were auto-closed or that were spam?

No. The filter step explicitly drops anything tagged spam or no-reply, anything auto-closed without a real agent message, and tickets with a missing or internal email address. You only want a satisfaction signal on interactions a human actually handled — surveying a bot-closed or junk ticket just pollutes the data and wastes a send.

Can I build this without n8n or Zapier?

Partly. A Gorgias Rule can call Klaviyo's API directly to fire the resolution event, and Klaviyo's flow handles the delay and the email on its own — so a basic version is doable with no separate glue. You reach for n8n or Zapier when you want the parts that need real logic: the spam/auto-close filtering, the suppression-window lookup, and writing the returned score back onto the Gorgias ticket and the Klaviyo profile.

What's a realistic response rate on something like this?

Honestly, it varies too much by brand and audience for anyone to quote you a number you should trust. What's reliable is the direction: a single one-click rating in the email gets far more responses than a link to a multi-question form, and a short delay after resolution beats sending while the conversation is still warm. Treat your own first few weeks as the baseline and tune the timing and wording from there.

Support & returns

Auto-close stale support tickets

Half your open queue isn't open — it's answered, sitting in 'waiting on customer', never closed. Those zombie tickets pad your open count and quietly wreck your resolution-time numbers. This runs a daily sweep over Gorgias, finds tickets that have gone quiet on the customer's side, sends one polite 'reply if you still need us' nudge, then closes the ones that stay silent — tagged so they're auditable, and set to reopen the instant anyone writes back. Build it yourself with the steps below — or we build it, tune the timing against your real inbox, and hand it over so you own it outright with no monthly fee. Free teardown of your current setup first.

  • Gorgias
  • n8n

Intermediate3-5 hrs

Support & returns

Auto-tag and route support tickets by topic

Most DTC inboxes are one big undifferentiated queue: a wholesale inquiry, a damaged-item photo, and a 'where's my order?' all sit in the same line, and whoever's free grabs the top one regardless of whether it's theirs to answer. This reads every inbound Gorgias ticket, decides what it's actually about from a taxonomy you define, tags it, and routes it to the right team or view — keyword rules for the obvious cases, an LLM fallback for the fuzzy ones, and a 'needs-triage' safety net for anything it isn't sure about. Build it yourself with the steps below — or we build it, tune the taxonomy against your real inbox, and hand it over so you own it outright with no monthly fee. Free teardown of your current setup first.

  • Gorgias
  • n8n

Intermediate3-6 hrs

Support & returns

Auto-escalate angry support tickets to Slack

A customer threatening a chargeback at 9am shouldn't be discovered at 2pm. This watches every inbound Gorgias ticket, decides which ones are actually angry — not just mildly annoyed — and drops a Slack alert with the message, the customer's history, and a one-click link into the ticket, so the right person sees it in seconds instead of when the queue gets around to it. Build it yourself with the steps below — or we build it, tune the noise out, and hand it over so you own it outright with no monthly fee. Free teardown of your current setup first.

  • Gorgias
  • Slack

Intermediate2-4 hrs