Zendesk

View as Markdown

What it indexes

Each Zendesk connector indexes exactly one content type: articles or tickets. Create separate connectors if both types are required. The Admin form has no organization, brand, category, section, ticket-view, or tag scope, so the selected type is read across the account as visible to the credential.

ContentIndexing behavior
ArticlesEach published article with a body becomes one document containing parsed body text, its source link, author when available, labels, and content tags. Drafts, bodyless articles, and articles with deployment-configured skip labels are omitted.
TicketsEach non-deleted ticket becomes one document containing the subject and the bodies of comments returned by the ticket-comments endpoint. Status, priority, tags, and ticket type are stored as metadata.
AttachmentsArticle and ticket-comment attachment files are not downloaded or indexed.
ScopeThere is no project or organization selector. Credential visibility and the chosen content type define the ingestion boundary.

Prerequisites

  • Identify the Zendesk account subdomain from https://<ZENDESK_SUBDOMAIN>.zendesk.com.
  • Enable token access and create an API token for the approved Zendesk user.
  • Allow the connector worker to reach the account’s Zendesk API over HTTPS.
  • Grant access to Help Center articles and Guide content tags. The current connector validates the article endpoint and loads content tags before either content mode runs.
  • For tickets, keep Zendesk Support active and grant access to incremental ticket export and ticket comments. User endpoint access is optional author metadata enrichment: without it, submitter and comment-author details may be absent, but ticket and comment text can still be indexed.

Credentials

MethodOpenCore credential valuesNotes
Zendesk API tokenzendesk_subdomain: <ZENDESK_SUBDOMAIN>, zendesk_email: <ZENDESK_EMAIL>, zendesk_token: <ZENDESK_API_TOKEN>OpenCore authenticates as <ZENDESK_EMAIL>/token with the API token and constructs https://<ZENDESK_SUBDOMAIN>.zendesk.com/api/v2.

Enter the account’s tenant name in Zendesk Subdomain, not a generic API Base URL. The connector accepts a value beginning with https:// and strips the .zendesk.com suffix, but the bare subdomain avoids ambiguous paths or protocols.

Access to Zendesk’s user endpoint is optional author metadata enrichment. If an author lookup returns an HTTP error, OpenCore omits that submitter or comment-author metadata and continues building the article or ticket document.

Configure in OpenCore

  1. In the Admin panel, open Connectors, select Zendesk, and create the subdomain, email, and token credential.
  2. Under Content Type, choose articles or tickets. One connector cannot index both modes.
  3. Optionally set API Calls per Minute. This is a connector-local ceiling applied across its article, ticket, comment, user, and content-tag requests.
  4. Choose Private and assign OpenCore groups for restricted support content. Use Public only when every OpenCore account may search every indexed article or ticket.
  5. Set refresh and cleanup options, create the connector, and run the first indexing attempt.
  6. To index both articles and tickets, repeat these steps with a second connector using the other content type.

Permissions

The Zendesk credential controls what the connector can ingest, but Zendesk article, ticket, organization, brand, role, and end-user restrictions are not synchronized into OpenCore. The connector’s slim-document path returns IDs and creation dates without source access records.

After indexing, search access is determined by the connector’s OpenCore Private groups or Public mode. Any user with access to the connector can search every successfully indexed document, even if that user cannot open the article or ticket in Zendesk. Separate sensitive content where possible through narrower Zendesk credentials, and use separate OpenCore connectors and groups.

Verify

  1. Validate the credential and confirm it can call the Help Center article endpoint.
  2. Run an indexing attempt. For articles, search for text from a published, non-draft article. For tickets, search for a ticket subject and a returned comment body.
  3. Confirm a draft article or deleted ticket is absent.
  4. Confirm attachment-only text is not searchable.
  5. Open a result link with a Zendesk-authorized browser session and confirm it targets the expected tenant and article or agent ticket.
  6. Test search access with every assigned OpenCore group because Zendesk permissions will not be re-evaluated at query time.

Troubleshooting

SymptomWhat to check
Requests target the wrong tenant or return 404Enter only the account subdomain. Remove paths, an http:// prefix, or another Zendesk host suffix.
Validation returns 401Replace the expired or invalid token and confirm the email belongs to the token user.
Validation returns 403Grant the credential access to Help Center articles and content tags; ticket mode also needs ticket and comment access. User endpoint access is needed only for author metadata enrichment.
Ticket indexing says Support is inactiveActivate Zendesk Support for the account or use articles mode.
An article is missingCheck whether it is a draft, has no body, carries a deployment-configured skip label, or is hidden from the credential.
A ticket or comment is missingDeleted tickets are skipped. Check credential visibility and the incremental-ticket or ticket-comments request. If a user lookup returns an HTTP error, only submitter or comment-author metadata is omitted and ticket/comment text can still be generated. Other exceptions, such as timeouts or JSON parsing errors, can still propagate and produce a ConnectorFailure for that document.
Attachment text is missingThis is expected; attachment payloads are not downloaded or indexed.
Indexing is slow or repeatedly receives 429Review API Calls per Minute and Zendesk account limits. A server Retry-After delay is honored up to 60 seconds before the request retry logic continues.
Users can search content they cannot open in ZendeskThis is expected because source ACLs are not synchronized. Restrict the connector with OpenCore groups or split the source.