> ## Documentation Index
> Fetch the complete documentation index at: https://docs.open.cx/llms.txt
> Use this file to discover all available pages before exploring further.

# Connect Zendesk

> Paste your Zendesk subdomain, admin email, and API token — OpenCX pulls your Help Center articles.

<Tip>
  Configure the source at [**AI Training → Data Sources**](https://platform.open.cx/data-sources). This is separate from the [Ticketing integration](/integrations/zendesk/ticketing-api), though you can reuse the same API token.
</Tip>

## Set up the sync

<Steps>
  <Step title="Open Data Sources">
    Go to [**AI Training → Data Sources**](https://platform.open.cx/data-sources) in the OpenCX dashboard.
  </Step>

  <Step title="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**     | `admin@company.com`                         | The Zendesk user email the API token belongs to.                                                                                                               |
    | **API Token** | `••••••••`                                  | [Learn how to create an API token](https://developer.zendesk.com/api-reference/introduction/security-and-auth/). Any admin-level token with read access works. |

    <Note>
      You can reuse the API token from the [Ticketing integration](/integrations/zendesk/ticketing-api). The token just needs to be able to read Help Center articles.
    </Note>
  </Step>

  <Step title="Start the sync">
    Click **Connect**. The first run pulls every article across every locale — minutes to a few hours depending on catalog size.
  </Step>

  <Step title="Verify in AI Instructions">
    Open [**AI Training → AI Instructions**](https://platform.open.cx/ai-instructions). Articles appear grouped under **Zendesk**. Filter by visibility to confirm the eye icon matches expectations — see the visibility rules below.
  </Step>
</Steps>

## What gets synced

<AccordionGroup>
  <Accordion title="All article variants, across every locale" icon="layer-group">
    Published, <Tooltip tip="Articles saved but not yet released publicly.">draft</Tooltip>, and <Tooltip tip="Articles kept out of the live Help Center but not deleted.">archived</Tooltip> articles are all fetched. Each locale is stored as its own entry so the AI answers in the right language.
  </Accordion>

  <Accordion title="Visibility is derived automatically" icon="eye">
    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.

    | Article state in Zendesk                                                                                                                                                                                              | Visibility in OpenCX                                                               |
    | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
    | Published with no user-segment restriction                                                                                                                                                                            | **Public** — AI cites it in customer replies                                       |
    | Restricted to a <Tooltip tip="A Zendesk access control that restricts an article to specific groups of authenticated support-portal users. Common for tier-specific or internal-only content.">user segment</Tooltip> | **Internal** — AI uses it only in agent-facing surfaces, never in customer replies |
    | Draft                                                                                                                                                                                                                 | **Internal** — same as above                                                       |

    The eye icon in AI Instructions shows the final visibility. Override per-article if you need to.
  </Accordion>

  <Accordion title="Incremental sync on updated_at" icon="arrows-rotate">
    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.
  </Accordion>
</AccordionGroup>

## 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](/knowledge/sources/website/overview) with `include_paths` if you need to scope to a subset. |

***

## Related Documentation

<CardGroup cols={2}>
  <Card title="Zendesk overview" icon="headset" href="/knowledge/sources/zendesk/overview">
    Scope and dual-presence context.
  </Card>

  <Card title="Troubleshooting" icon="wrench" href="/knowledge/sources/zendesk/troubleshooting">
    Auth failures, visibility surprises, archived content.
  </Card>

  <Card title="Zendesk integration" icon="ticket" href="/integrations/zendesk/overview">
    Ticketing, Sunshine, channels.
  </Card>
</CardGroup>
