Key Takeaways
- 1Build a custom Make.com webhook to catch Zendesk events instantly.
- 2Configure Zendesk triggers to push ticket payloads to external endpoints.
- 3Force OpenAI to output strictly structured JSON for reliable data mapping.
- 4Extract department routing and urgency metrics from unstructured customer text.
- 5Automatically update Zendesk ticket fields and tags using API calls.
Stop paying humans to read and sort support tickets. Today, you are going to build a live pipeline that catches new tickets, forces OpenAI to determine the department and urgency, and routes them to the correct Zendesk queue instantly.
Manual triage burns cash and time. When an operations team at a company like Intercom relies on humans to read and assign 500 tickets a day, response times tank. High-priority refund requests get buried under password resets.
We fix this by dropping an AI routing layer right between the customer and the support agent.
Phase 1: Catch the Ticket in Make.com
Before OpenAI can analyze the text, we have to catch the payload. We use a Make.com custom webhook as the listener.
- Step 1. Create the Make webhook: Navigate to your Make dashboard, click 'Create a new scenario', and add the 'Webhooks > Custom webhook' module.
- Step 2. Name and copy the endpoint: Click 'Add', name it 'Zendesk Inbound Triage', and hit Save. Copy the generated URL to your clipboard.
Establish the data structure early
Click 'Run once' on the Make webhook module right now. It needs to sit and wait for data so Make understands the incoming Zendesk payload structure.
Phase 2: Push Zendesk Data to the Webhook
Zendesk won't send data out unless you force it to. We need to set up an outbound webhook and a trigger to fire that payload the second a ticket is created.
- Step 3. Configure the Zendesk target: In Zendesk Admin Center, go to Apps and integrations > Webhooks > Create webhook. Select 'Trigger or automation'.
- Step 4. Paste your endpoint: Paste the Make.com URL into the Endpoint URL field. Set Request method to POST and Request format to JSON.
- Step 5. Create the Zendesk Trigger: Navigate to Objects and rules > Business rules > Triggers. Create a new trigger named 'Send to AI Triage'.
- Step 6. Set the conditions: Under 'Meet ALL of the following conditions', select 'Ticket > Is > Created'.
- Step 7. Define the JSON payload: Under Actions, select 'Notify active webhook' and choose the webhook you just built. Paste the following JSON block into the body.
{
"ticket_id": "{{ticket.id}}",
"subject": "{{ticket.title}}",
"description": "{{ticket.description}}"
}Phase 3: Prompting OpenAI for Structured Output
Passing text to OpenAI is easy. Getting a programmatic, predictable response without hallucinations requires brutal prompting. We force OpenAI to return a strict JSON object so Make.com can map the output directly to Zendesk.
- Step 8. Add the OpenAI module: Back in Make.com, add the 'OpenAI (ChatGPT) > Create a Chat Completion' module immediately after the webhook.
- Step 9. Select the model: Choose 'gpt-4o-mini' from the Model dropdown. Do not use standard GPT-4. Mini is 10x faster and highly accurate for classification tasks.
- Step 10. Write the System Prompt: Add a new message, set the Role to 'System', and paste the instructions below. Map the Zendesk payload fields into the User message.
You are a support triage engine. Analyze the incoming ticket and output ONLY a raw JSON object with exactly two keys: 'department' and 'urgency'.
Allowed values for 'department': [billing, technical, sales].
Allowed values for 'urgency': [low, medium, high].
Do not include markdown formatting or explanations.Force JSON Mode
Scroll down in the OpenAI module settings, expand 'Advanced Settings', and set 'Response Format' to 'JSON object'. If you skip this, OpenAI will wrap the output in markdown code blocks, crashing Make's JSON parser instantly.
Phase 4: Parse and Route in Zendesk
OpenAI has categorized the ticket. The final step is pushing those decisions back into Zendesk so the ticket routes to the right human.
- Step 11. Parse the JSON: Add Make's 'JSON > Parse JSON' module. Map the 'Choices [ ] > Message > Content' variable from the OpenAI module into the JSON string field.
- Step 12. Update the Zendesk Ticket: Add the 'Zendesk > Update a Ticket' module. Map the 'ticket_id' from your initial webhook into the Ticket ID field.
- Step 13. Map the tags: In the Tags field of the Zendesk module, add the 'department' and 'urgency' variables exported by the Parse JSON module.
Activate your scenario. Submit a test ticket saying 'I was double charged yesterday.' Watch the ticket route instantly to the billing queue with a high urgency tag. No human required.
Stop drowning in Level 1 support tickets.
Kyto builds custom AI workflows that connect your CRM, support desk, and internal tools. Skip the API documentation and let us deploy this routing engine for your team this week.
Book a discovery callFrequently Asked Questions
Can I use this workflow with platforms other than Zendesk?
Yes. While this guide uses Zendesk, the Make.com webhook and OpenAI parsing logic work identically for HubSpot, Intercom, or any CRM that supports outbound webhooks.
Will OpenAI hallucinate departments that don't exist?
Not if you enforce a strict JSON schema. If you define an exact list of allowed values in the prompt and enable JSON mode, the output is 100% predictable.
Kyto
AI & Automation Firm
We design and build AI automations and business operating systems. Agency results + Academy sovereignty.

