Set up the sync
Open Data Sources
Go to AI Training → Data Sources in the OpenCX dashboard.
Add a Zendesk source
Click Add source → Zendesk. Paste the credentials below (each field label and placeholder mirrors the dashboard form).
| Field | Example | Where to get it |
|---|---|---|
| Subdomain | your-company (from company.zendesk.com) | The instance name, not the public Help Center URL. |
[email protected] | The Zendesk user email the API token belongs to. | |
| API Token | •••••••• | Learn how to create an API token. Any admin-level token with read access works. |
You can reuse the API token from the Ticketing integration. The token just needs to be able to read Help Center articles.
Start the sync
Click Connect. The first run pulls every article across every locale — minutes to a few hours depending on catalog size.
Verify in AI Instructions
Open AI Training → AI Instructions. Articles appear grouped under Zendesk. Filter by visibility to confirm the eye icon matches expectations — see the visibility rules below.
What gets synced
All article variants, across every locale
All article variants, across every locale
Published, , and articles are all fetched. Each locale is stored as its own entry so the AI answers in the right language.
Visibility is derived automatically
Visibility is derived automatically
Every synced article is tagged public or internal based on Zendesk’s own signals. This mirrors Zendesk’s access model — you don’t configure it twice.
The eye icon in AI Instructions shows the final visibility. Override per-article if you need to.
| Article state in Zendesk | Visibility in OpenCX |
|---|---|
| Published with no user-segment restriction | Public — AI cites it in customer replies |
| Restricted to a | Internal — AI uses it only in agent-facing surfaces like Assist Mode |
| Draft | Internal — same as above |
Incremental sync on updated_at
Incremental sync on updated_at
After the initial pull, only articles whose
updated_at changed since the last run are fetched. Outdated articles marked outdated: true in Zendesk are filtered out before ingestion.Re-sync, disconnect, and re-connect
- Sync now on the source row pulls only articles changed since the last run. Use after a bulk edit in Zendesk.
- Remove on the source row deletes the connection and the synced items. The articles in Zendesk aren’t touched.
- Re-adding the source re-pulls everything from scratch.
Limits
| Value | |
|---|---|
| Streams synced | articles (includes all_article_variants — drafts, archived, published) |
| Sync mode | incremental_deduped_history on updated_at |
| Sync cadence | Airbyte polling — typically every few hours, configurable on the connection schedule |
| Credential type | Subdomain + admin email + API token (no OAuth) |
| Multi-Help-Center | Not supported today. One Help Center per Zendesk account is synced. |
| Archived articles | Fetched; show as INTERNAL unless also a draft. Delete in Zendesk to remove. |
| Selective scoping | Not supported today. Whole Help Center syncs. Use Website crawler with include_paths if you need to scope to a subset. |
Related Documentation
Zendesk overview
Scope and dual-presence context.
Troubleshooting
Auth failures, visibility surprises, archived content.
Zendesk integration
Ticketing, Assist Mode, channels.
Assist Mode
Where internal articles surface to agents.