A status change becomes an action
A ticket moved to 'resolved: refund' fires the webhook, and the actual refund posts in the accounting system that owns it, logged back onto the ticket instead of handled as a separate manual step.
Zoho Desk ships a documented REST API covering tickets, contacts, accounts, and most of the objects an agent works with, plus webhooks for the events that matter: a ticket created, updated, or closed. Inside the Zoho ecosystem, most of this is wired up for you already. The API exists for everything outside it, your accounting system, your warehouse, a CRM that isn't Zoho CRM, and that's the part we build.
The REST API reaches most of the ticket. You can create, read, update, and search tickets, contacts, accounts, and agents through Zoho Desk's API, and pull department, team, and SLA data the same way. Authentication runs through OAuth2, a Zoho-wide standard rather than something Desk invented on its own, which means the same credentials pattern applies if you're already connected to other Zoho apps.
Webhooks cover the ticket lifecycle. Zoho Desk can fire a webhook when a ticket is created, updated, or has its status changed, enough to react in real time instead of polling the API on a schedule. Setup happens under Desk's own Automation settings, not a separate developer console.
OAuth scopes are where people get stuck. Zoho Desk's API access is split into specific scopes, tickets, contacts, and so on, and a connected app only gets the scopes it explicitly requested and that an admin approved. The most common first-call failure isn't a bad API key; it's a token that was issued without the scope the request actually needs.
The API gives you the ticket. It has no opinion on what a ticket tagged 'billing issue' should trigger in QuickBooks, or what a 'delivery delay' ticket should update in a warehouse system that isn't Zoho Inventory. That logic, along with the server that receives the webhook, retries it if it fails, and does something with it, is the part that doesn't come out of the box.
If your whole stack is Zoho, Desk, CRM, Books, Inventory, a lot of this connects natively without touching the API at all. The API matters specifically at the edges: the one accounting system, CRM, or warehouse tool that isn't Zoho, which is usually exactly the piece an agent is still checking by hand.
A ticket moved to 'resolved: refund' fires the webhook, and the actual refund posts in the accounting system that owns it, logged back onto the ticket instead of handled as a separate manual step.
A webhook on ticket-created kicks off a lookup in whatever system outside Zoho actually holds the answer, order status, invoice balance, account history, and it lands in the ticket before the agent opens it.
If Zoho Desk already fires the event, the usual gap is just the receiving end and the system it needs to talk to.
Tell us what you're trying to connect Zoho Desk to, we'll get the access scoped correctly and build the logic that runs on the other side of the webhook. And if the real bottleneck isn't your help desk, we automate whatever's manual in your business, not just tickets.
Let's talk →Yes. Zoho Desk has a documented REST API covering tickets, contacts, accounts, and agents, authenticated through OAuth2.
Yes, for ticket created, updated, and status-changed events, configured under Desk's Automation settings rather than a separate developer console.
The most common cause is a token issued without the OAuth scope the call actually needs. Zoho Desk's API access is split into scopes (tickets, contacts, and so on), and a connected app only gets what it explicitly requested and an admin approved.
Usually not for basic workflows. Zoho Desk connects natively to Zoho CRM, Books, and Inventory. The API matters at the edges, whatever system in your stack isn't Zoho, since that's what native integrations don't reach.