Call solved Zendesk customers for a CSAT survey with Retell AI

The moment a ticket is marked solved, Retell AI calls your customer, captures their CSAT or NPS score, and posts the feedback back on the ticket.

Agentic Task
Retell AIZendeskSlack BotCustomer SupportFeedback TriageNotifications & Alerts
PromptCreate

Build me an agent workflow that runs a short Retell AI survey call every time a Zendesk ticket is marked solved, then writes the result back on the ticket and alerts the team if the customer is unhappy.

Trigger: an incoming webhook from Zendesk that fires when a ticket's status changes to solved. The webhook payload will include the ticket ID.

Steps the agent should follow:

1. Use Zendesk Show Ticket to pull the ticket by ID. From the response, grab the ticket subject, the ticket URL, the assignee's name, the requester's first name, the requester's email, the requester's phone number, and the ticket tags. If the requester object needs to be side-loaded, include users in the include parameter.

2. Skip the call gracefully in any of these cases: the requester has no phone number on file, the ticket has an internal tag such as internal or test, or the requester's email is on our own workspace domain (treat teammates as internal). If skipped, do not update the ticket and do not post to Slack. Just stop.

3. Otherwise, use Retell AI Create Outbound Phone Call to launch our CSAT survey agent. Pass the requester's phone number as the to_number, our Retell survey number as the from_number, and provide dynamic variables the agent can use in the script: customer_first_name, ticket_subject, and agent_name (the Zendesk assignee). Capture the returned call_id.

4. Wait for the call to finish, then use Retell AI Get Call with the call_id to fetch the transcript, sentiment, recording URL, and structured post-call analysis. Read the NPS score, the CSAT rating, and any open-ended feedback out of the custom analysis fields on the response. If the call was not answered or ended before the survey question, note that instead of a score.

5. Use Zendesk Update Ticket to append an internal note (public: false) on the same ticket. The note should include: the CSAT rating or NPS score, a one-paragraph plain-language summary of what the customer said, and a link or ID for the Retell call recording so an agent can listen back.

6. If the result is a detractor (NPS 0 through 6, or CSAT unsatisfied / thumbs down), also use Slack Bot Send a Message to post to our support alerts channel. Include: the ticket subject, a link to the Zendesk ticket, the assignee's name, the score, and the exact customer quote from the transcript that suggests dissatisfaction. Keep it short and scannable. If the score is neutral or positive, do not post to Slack.

Keep the note format consistent so it is easy to skim across tickets. Do not send any survey to the same ticket twice, even if Zendesk re-fires the webhook.

Additional information

What does this prompt do?
  • Watches Zendesk for tickets that get marked solved and kicks off a short survey call to the customer within minutes, while the experience is still fresh.
  • Runs the call with a Retell AI voice agent that greets the customer by first name, references the ticket subject, and asks a friendly CSAT or NPS question.
  • Once the call ends, writes an internal note on the Zendesk ticket with the score, a one-paragraph summary of what the customer said, and a link to the call recording.
  • If the score is a detractor or a low CSAT, pings a Slack channel with the ticket link and the exact quote that flagged the dissatisfaction so a human can follow up fast.
What do I need to use this?
  • A Zendesk account you can create a webhook and trigger on for solved tickets.
  • A Retell AI account with a short outbound survey agent set up and a phone number to call from.
  • A Slack workspace and a channel where the support team wants to see detractor alerts.
How can I customize it?
  • Change the survey style. Ask a single NPS 0 to 10 question, a CSAT thumbs up or down, or a two-question mix.
  • Adjust who gets called. Skip tickets tagged internal, tickets from teammates on your own email domain, or tickets under a certain priority.
  • Tune the Slack alert. Point it at a different channel, only alert on true detractors, or add the assigned agent's name to the ping.

Frequently asked questions

How soon after a ticket is solved does the customer get the call?
As soon as Zendesk sends the webhook, usually within a minute. You can add a delay if you want a small buffer before the phone rings.
What happens if the customer has no phone number on file?
The workflow skips the call gracefully and leaves no note on the ticket, so tickets without a phone stay untouched.
Can I stop it from calling internal test tickets and teammates?
Yes. The prompt includes a filter that skips tickets tagged internal and tickets from requesters on your own workspace email domain. You can extend that filter to any tag or field you use.
Where does the CSAT or NPS score end up?
It gets written as an internal note on the same Zendesk ticket, along with a one paragraph summary of the customer's feedback and a link to the recorded call.
What counts as a detractor for the Slack alert?
NPS scores of 0 through 6, or a CSAT rating of unsatisfied. Anything at or above that threshold stays quiet on Slack and just lands on the ticket.

Close every support ticket with a real customer voice.

Connect Zendesk, Retell AI, and Slack once, and Geni runs this survey every time a ticket is marked solved.