There are two truthful ways to get WhatsApp working with Zendesk, and they are very different. Route one is Zendesk's own WhatsApp channel: official, built on the Business API, which means a dedicated number, template approvals, per-message fees, and no WhatsApp groups. Route two keeps WhatsApp on the number you already use, with Spun as the WhatsApp workspace, and a WhatsApp Zendesk workflow in your own n8n turns each conversation into a Zendesk ticket.
This page documents route two, and is honest about where route one is the better fit: if your entire support operation lives inside Zendesk and you want WhatsApp as one more ticket channel at API economics, use Zendesk's channel. If WhatsApp is your primary customer channel and Zendesk is one system among several, keeping it on your real number with a team inbox usually serves customers better.
1. WhatsApp Zendesk tickets: what the workflow does
Every one-to-one WhatsApp conversation on the line becomes a Zendesk ticket, with no label to apply first. Later messages are added to the same ticket, and a public comment by an agent goes back to the customer on WhatsApp.
- The requester is a Zendesk user the workflow finds or creates for the customer's phone number, and the ticket is created for that user.
- Public agent comments in Zendesk are sent to the customer on WhatsApp as text, from your own number. Private comments stay internal.
- Replies your team sends from the Spun inbox become private comments on the ticket, so both sides can answer and the ticket keeps the whole exchange.
- Archiving the conversation in Spun solves the ticket, and unarchiving reopens it. Solving in Zendesk can archive the conversation in Spun as well, an option that is off until you turn it on. The workflow sends no status message to the customer either way.
- Each reply is sent with the Zendesk comment id as its idempotency key, so a retried reply is not sent twice.
Group chats are skipped. Media arrives in the ticket as a link that stays valid for 24 hours.
2. Set it up
You need a Zendesk admin who can create webhooks, triggers and an OAuth client, an integration agent such as "Spun WhatsApp", and an n8n instance that Zendesk and Spun can reach over HTTPS. The setup guide lists every value and where to find it.
- 1
Create an OAuth client
Signed in as the integration agent, add an OAuth client in Zendesk Admin Center and an OAuth2 credential in n8n with the client credentials grant. An API token is the fallback.
- 2
Import the workflow
Open its Settings node and paste your Zendesk URL and the user id of the integration agent. A group, a brand and a "Spun line" ticket field are optional.
- 3
Create the Zendesk webhook and reply trigger
A webhook pointed at the workflow's reply URL, and a trigger that calls it when a ticket tagged spun gets a public comment. Paste the webhook's signing secret into the workflow.
- 4
Create a Spun API key
Settings, then Webhooks, then Manage API Keys, with the Send Messages scope. Tick "Close & Reopen Conversations" too if solving in Zendesk should archive the conversation in Spun.
- 5
Subscribe Spun to the workflow
Add a webhook for incoming messages, outgoing messages, conversation closed and conversation reopened, with the payload template set to raw, and paste its signing secret into the workflow.
- 6
Send a test message
Message the line from another phone. A ticket appears in Zendesk; reply with a public comment and the reply reaches the phone.
POST https://api.spun.com/api/integrations/send-message
Authorization: Bearer wap_YOUR_KEY
Content-Type: application/json
{
"to": "14155552671",
"text": "Thanks for waiting, your replacement ships today.",
"idempotency_key": "<Zendesk comment id>"
}Related: Docs: Zendesk via n8n, the full setup guide · WhatsApp + n8n: the API and webhooks underneath
What to know before you build
- This is a bridge, not a channel merge: WhatsApp conversations live in Spun, tickets live in Zendesk, and the workflow keeps them in step. If you need WhatsApp as a Zendesk channel with its own number, that is route one with its costs and limits.
- It is an n8n workflow you import, not a Zendesk marketplace app. The Spun side uses an API key; the Zendesk side uses an OAuth client.
- Closing from Zendesk calls Spun's close and reopen endpoints, which need the Close & Reopen Conversations scope on the key.
- Zendesk allows 30 updates per ticket per 10 minutes, 5 new users per minute and 5,000 comments per ticket. The Spun API allows 60 requests per minute per key.
- Each delivered event uses AI tokens from your Spun plan. How this is metered for helpdesk use is still being reviewed.
- Many teams discover the ticket layer was the optional part: Spun's labels, assignment and tasks cover chat-based ticketing on their own. See the WhatsApp helpdesk page.
Related: WhatsApp as the helpdesk itself (no Zendesk needed) · All WhatsApp helpdesk integrations · WhatsApp + Zapier & Make (the full API surface)