Before you start
Zendesk Suite plan with Sunshine provisioned
Zendesk Suite plan with Sunshine provisioned
Admin access in Zendesk
Admin access in Zendesk
Owner or admin in OpenCX
Owner or admin in OpenCX
Choose authorization
Open Settings → Integrations, select Zendesk → Messaging, then choose:- OAuth — recommended: install and authorize the OpenCX Marketplace bot. OpenCX provisions the integration webhook automatically; no Sunshine App key is stored.
- Legacy credentials: enter the Sunshine App ID, App key, secret, and integration ID. Existing installations continue to work and can switch to OAuth without deleting their legacy credentials first.
OAuth setup (recommended)
Choose Messaging OAuth
Install and authorize OpenCX
Assign the bot to a test channel
Configure conversation handback
Verify end to end
Legacy App key setup
Create a Sunshine App key
- Click Create API key.
- Label it
OpenCX. - Copy the Key ID and Secret — Zendesk only shows the Secret once.
- Note the App ID displayed at the top of the page.
Turn on multi-conversations for the Sunshine app
personal conversation mode caps each end user at one open conversation, so the second POST /v2/apps/{appId}/conversations for the same user fails and the session never reaches the Agent Workspace. Turn multi-conversations on once, in Zendesk, before you wire up OpenCX.- In Admin Center, go to Channels → Messaging and social → Messaging.
- Click Manage settings at the top of the page.
- Under Web Widget and Mobile SDKs, expand Multi-conversations and click Set up multi-conversations.
- Click Turn on multi-conversations for your account and select every Web Widget, iOS SDK, and Android SDK channel OpenCX will answer on.
- Save settings.
Open Zendesk Messaging in OpenCX
Copy your messaging webhook URL
Register the webhook in Sunshine
Enter your Sunshine credentials
Provide a Zendesk API token for user merge
metadata.opencx_org_id, metadata.opencx_contact_id, and metadata.opencx_session_id. Your reps don’t see these fields directly, but they’re reachable via the Conversations API for debugging and analytics. The session ID is the trace key back to the exact OpenCX conversation.Pick the channels OpenCX should answer on
- In your Zendesk Admin Center, go to AI → AI agents → AI agents, then click the Marketplace bots tab. (Direct admin URLs are subdomain-scoped, so we can’t link them — see Zendesk’s Managing third-party bots in Admin Center for the canonical walkthrough.)
- Find the OpenCX entry in the list of marketplace bots and open it.
- Under Channels, pick every channel you want the AI agent to handle — specific WhatsApp numbers, the Web Widget, Facebook Messenger pages, Instagram accounts, SMS numbers, etc. To make OpenCX the first responder for every messaging channel instead, use the entry’s Options → Assign default menu — see Setting an advanced AI agent as the default responder.
- Save.
Set Conversation control to Release control
zd-answerBot instead of the AI.Conversation control is an account-wide Sunshine Conversations switchboard setting — not a per-bot setting. It lives on the Messaging setup page, not inside the OpenCX marketplace bot entry.- In Zendesk Admin Center, go to Channels → Messaging and social → Messaging, then open your messaging configuration. (The direct URL is subdomain-scoped:
https://<your-subdomain>.zendesk.com/admin/channels/messaging_and_social/messaging/setup.) - Expand the Conversation control section.
- Select Release control.
- Save.
Shorten the Solved→Closed window (recommended)
- Edit the built-in automation: in Admin Center → Objects and rules → Business rules → Automations, open
Close ticket 4 days after status is set to solvedand drop the timeframe to ~1 hour (or whatever close-window your team needs for re-opens). - Add a close-on-solve trigger: create a trigger that closes any ticket whose status changes to Solved. Handback then fires the instant an agent solves.
Verify end to end
- Handoff: send a test message, request a human, confirm the conversation appears in the Zendesk Agent Workspace as a live chat. Reply from Agent Workspace and confirm it lands back on the original channel within a couple of seconds.
- Solve and close: solve the ticket from Agent Workspace, then close it (manually, or wait for your trigger / shortened automation from the previous step to fire).
- Handback: from the same end user, send a fresh message on the same channel. Confirm the AI responds — not the live agent and not Zendesk’s
zd-answerBot.
Sunshine channels handle off as live chats, not tickets
For channels routed through Sunshine — WhatsApp, Messenger, Instagram, web chat, SMS, and phone — handoff does not create a Zendesk ticket. The conversation appears in the Agent Workspace as a live chat. Ticket-based behavior (AI Fields auto-fill, tag application, agent-reply sync) described on the Ticketing API page applies to email only.Turn on AI agent tickets if you want ticket ids before handoff
By default, an AI-handled messaging conversation has no Zendesk ticket until it’s handed off to a human. Zendesk creates the ticket at escalation, and that’s the moment a ticket id appears in the OpenCX Inbox sidebar. A conversation the AI resolves on its own never gets a ticket — so its ticket id in OpenCX stays empty. With the default configuration that’s expected, not a bug. If you want every conversation — including AI-resolved ones — to have a Zendesk ticket and a ticket id in OpenCX, turn on Zendesk’s AI agent tickets feature:- In Zendesk, go to Admin Center → Channels → Messaging and social → Messaging and click Manage settings.
- Expand AI agent conversations as tickets in Agent Workspace and turn it on.
- Save.
Rotating Legacy Sunshine credentials
OAuth has no App key to rotate. For a Legacy connection, create a new App key in Zendesk, paste it into OpenCX, then delete the old key. The is unaffected by App key rotation.Disconnecting
To stop routing conversations to the AI, remove OpenCX from the channels in Zendesk’s AI Agents admin (un-select the channels you enabled in Pick the channels OpenCX should answer on, or clear it as the default responder). Active conversations finish out on their current channel; no data is deleted from Zendesk. For OAuth, open Settings → Integrations → Zendesk → Messaging → OAuth, click Disconnect, and typeDELETE. This revokes and removes only the OAuth connection and its provisioned webhook; Legacy App credentials remain available. Removing the Marketplace bot in Zendesk also disconnects OpenCX through Zendesk’s verified uninstall callback.
For Legacy authorization, delete the webhook in Conversations API admin to cut delivery, then remove or replace the stored App credentials through the Legacy panel.