Skip to main content
Before debugging, have this ready:
  • Your Zendesk and the admin email used for the .
  • A specific (from Inbox) or Zendesk ticket ID where the problem shows.
  • The webhook URL shown in Settings → Integrations → Zendesk.
Re-run Verify in Settings → Integrations → Zendesk as your first step. Most issues are credential or webhook related.
Fastest path to root cause: filter Zendesk tickets by the opencx_channel_*, opencx_sentiment_*, or opencx_handedoff tags to scope the issue, then click View session in OpenCX in the first comment of the failing ticket. That link opens the full AI reasoning, tool calls, and handoff event — far faster than log-diving.

Common scenarios

Jump to the symptom that matches what you’re seeing.

”Failed to verify credentials” on save

: wrong subdomain format, expired token, or API access disabled. Fix: use just the subdomain part (acme, not acme.zendesk.com). Regenerate the token in Zendesk Admin Center. Confirm Token access is toggled on.

”Failed to verify credentials” on Sunshine Messaging save

: wrong key type (Integration key, not App key), or wrong App ID. Fix: confirm the Key ID starts with app_. If it doesn’t, delete the key and create a new one from the Conversations API section of Admin Center — not from inside a specific integration. Re-copy the App ID from the top of that same page.

Handoff runs but no ticket appears in Zendesk

: contact has no email, or the Zendesk user behind the API token lacks permission to create users and tickets. Fix: confirm the OpenCX contact has an email. Confirm the token’s Zendesk user is an or an agent with full access.

Agent public replies don’t reach the contact

: webhook missing, trigger misconfigured, or wrong event subscription. Fix: in Zendesk Admin Center → Triggers, confirm the condition is Ticket is Updated with a public comment present, and the action posts to the OpenCX webhook URL. from the webhook’s activity log.

Internal notes reaching the contact

: trigger payload uses the wrong comment variable. Fix: update the trigger to use specifically, not {{ticket.latest_comment}}.

Duplicate tickets for the same conversation

: handoff fires multiple times before the first ticket’s links to the session. Fix: none on your side — dedup is automatic once the link exists. If you see this consistently, open a support request with two example session IDs.

AI fields show blank on the ticket

: mapping disabled or description too vague. Fix: check Settings → Ticketing → Zendesk AI Fields. Enable the mapping. Tighten the description with .

Help Center articles not appearing in AI answers

: initial sync still running, or articles are . Fix: open Data Sources, wait for sync to complete. Check article visibility in Zendesk — published + no segment restriction is required for public answers.

Webhook returns 4xx in Zendesk’s activity log

: webhook URL is stale. Fix: copy the current URL from Settings → Integrations → Zendesk and update the webhook endpoint in Zendesk.

Webhook returns 5xx in Zendesk’s activity log

: payload missing ticket_id or external_id. Fix: update the trigger’s JSON body to include {{ticket.id}} and {{ticket.external_id}}. See the Ticketing API setup reference payload.

Handoff creates a ticket but agent replies do nothing

Work through this checklist:
  1. Open the ticket in Zendesk. Confirm it has tag and an external_id set.
  2. In Zendesk Admin Center → Webhooks, open your OpenCX webhook. Check Activity — recent calls should return 2xx. A 4xx means the webhook URL is stale (re-copy from OpenCX). A 5xx means OpenCX couldn’t match the ticket to a session.
  3. Confirm the in Admin Center → Triggers is active.
  4. Confirm the reply was posted as Public reply, not Internal note.
  5. Confirm the original contact channel is still reachable (email address valid, WhatsApp/SMS number still subscribed).

Assist Mode doesn’t post suggestions

Check, in order:
  • The ticket wasn’t created by OpenCX — .
  • The ticket’s topic isn’t on the (look for that tag).
  • The AI produced an answer — look for opencx_skipped_not_helpful_answer, which means the AI judged its own answer incomplete and stayed quiet.
  • The ticket is in a status where suggestions apply (open / pending).

Messaging (Sunshine) issues

Handoff on WhatsApp creates a ticket instead of a chat

: Sunshine credentials missing or inactive. Fix: confirm the Messaging tab in Settings → Integrations → Zendesk shows Active. Re-enter credentials if needed.

Rep reply in Agent Workspace doesn’t reach WhatsApp

: webhook not registered or wrong event subscription. Fix: re-register the Sunshine webhook subscribed to conversation:message. See Sunshine Conversations setup.

Duplicate contact in Zendesk for the same WhatsApp number

: skipped because the Zendesk API credentials are missing from the Messaging integration. Fix: paste the same credentials you use for Ticketing into the Zendesk API credentials panel under the Messaging setup.

Limits & timing

Value
Webhook processing timeout10 seconds
Deduplication window (agent replies, Assist suggestions)48 hours
Help Center initial syncMinutes to a few hours depending on article count
Help Center incremental syncHourly / daily (configurable per source)
Zendesk API rate limitGoverned by your Zendesk plan (200 req/min standard)
OpenCX retries on transient Zendesk failures but does not indefinitely retry past rate limits. Heavy backfills during peak hours can slow down. Run them overnight when possible.

Ticketing API

Re-verify email handoff credentials and webhook setup.

Sunshine Conversations

Re-verify chat, SMS, WhatsApp, and social setup.

Channels

Per-channel implementation details for Widget, WhatsApp, SMS, Phone, and Email.

Handoff settings

Global handoff rules and office hours.