Turn inbound SMS into Zendesk tickets with smart triage

Every 15 minutes, an agent reads new inbound texts in Twilio, files clean Zendesk tickets, and pings Slack the moment something looks urgent.

Agentic Task
TwilioZendeskSlack BotCustomer SupportOperationsFeedback TriageNotifications & Alerts

Build me an agent workflow that triages inbound SMS into Zendesk support tickets. It should run on a cron every 15 minutes.

On each run, the agent should call Twilio List Messages and filter to inbound messages received within the last 15 minutes (use DateSent>= with the start of the window, and the inbound direction filter so we never pick up outbound texts). Twilio does not have a poll trigger, so a cron schedule with this filter is the right shape.

For each inbound SMS, read the message body and the sender's phone number, then classify two things in plain language: (1) intent, one of billing, technical issue, sales question, opt-out, or spam, and (2) priority, either urgent or normal. Urgent should mean things like outages, billing errors with real money at stake, account lockouts, or clearly angry language. If the intent is spam or opt-out, skip the message entirely. Do not create a ticket and do not send a Slack alert.

For every other message, draft a short, descriptive ticket subject (think "Billing question about duplicate charge", not "SMS from +1...") and a one or two sentence summary of what the customer is asking. Then call Zendesk Create Ticket with: the drafted subject, the full original SMS body as the description, the inferred priority mapped to Zendesk's priority field (urgent maps to urgent or high, normal maps to normal), a tag for the inferred category (billing, technical, sales), and a tag like sms-intake so the support team can see where it came from. Include the sender's phone number in the ticket somewhere obvious, for example as the requester phone or in the description preamble.

If the message was classified urgent, also call Slack Bot Send a Message to a support escalations channel (let me pick the channel during setup). The Slack message should include the sender's phone number, the inferred category, a one-line summary of the issue, and a link to the newly created Zendesk ticket so the on-call agent can click straight through.

Important behaviour notes: never create a duplicate ticket for the same Twilio message SID within a run, keep the SMS body verbatim in the ticket description so we have the source of truth, and log a one line summary at the end of each run with how many texts were processed, how many tickets were created, and how many urgent alerts were sent.

Additional information

What does this prompt do?
  • Pulls every new inbound text message from your Twilio number on a 15 minute schedule.
  • Reads each message and tags it as billing, technical, sales, opt-out, or spam, plus marks it urgent or normal.
  • Opens a Zendesk ticket with a clear subject line, a short summary, the inferred priority, and a category tag so agents can pick it up fast.
  • Posts a Slack alert with the ticket link and sender number whenever something urgent comes in, and quietly drops spam and opt-out texts.
What do I need to use this?
  • A Twilio account with an SMS number that receives the incoming texts
  • A Zendesk account with permission to create tickets
  • A Slack workspace and the channel you want urgent alerts posted into
How can I customize it?
  • Change the schedule to run more or less often, for example every 5 minutes during business hours.
  • Adjust the category list so the agent uses the labels your support team actually files under.
  • Swap the Slack channel, or send urgent texts to a different channel by team or product line.
  • Tighten what counts as urgent, for example only outage language or specific keywords.

Frequently asked questions

What happens if no new texts came in during the last 15 minutes?
The agent simply finishes its run and waits for the next scheduled check. No empty tickets are created and Slack stays quiet.
Will this create duplicate tickets if a customer sends two texts in a row?
Each inbound message becomes its own ticket by default. If you want related messages merged, ask the agent to look up the sender in Zendesk first and add a comment to an open ticket instead.
How does the agent decide what is urgent?
It reads the message body for signals like outage, can't access, charged twice, or angry tone, and pairs that with the category. You can rewrite the urgency rules in plain English to match how your team triages.
Can I file these into a specific Zendesk group or assignee?
Yes. Tell the agent which Zendesk group ID or assignee email should own tickets in each category, and it will set those on creation.
Does this respect customers who reply STOP?
Opt-out texts are detected and skipped so they do not generate a ticket or a Slack ping. Twilio still handles the actual unsubscribe on its end.

Stop letting inbound texts pile up unread.

Connect Twilio, Zendesk, and Slack once and every new SMS lands in your support queue with a priority and a category attached.