Import from Zendesk

Pull tickets, comments and requesters out of Zendesk and into conversations.

The Zendesk importer pulls tickets, their comments and their requesters. Each ticket becomes a conversation, each comment a part, and each requester a contact. The API token is sealed at rest with AES-256-GCM under FIKADESK_IMPORT_SECRET before the run row exists, so the plaintext never touches the database.

Connection settings

  • subdomain is the bare prefix of your instance URL, acme for acme.zendesk.com.
  • email is the agent account the token belongs to.
  • token is a Zendesk API token, sent separately so it can be sealed.

Run it

Test the connection first with POST /api/imports/zendesk/test, which hits the ticket-count endpoint so a bad subdomain or token shows up in the wizard rather than after the job is enqueued. Then start a run:

sh
curl -X POST http://127.0.0.1/api/imports/runs \
  -H 'content-type: application/json' \
  -H 'authorization: Bearer fk_<key>' \
  -d '{"source":"zendesk","config":{"subdomain":"acme","email":"[email protected]"},"token":"<api token>"}'

How tickets map

Zendeskfikadesk
ticketconversation
commentconversation part
requestercontact
status solved or closedclosed conversation
status new, open, pending, holdopen conversation
priority low/normal/high/urgentpriority none/low/medium/high/urgent

Poll GET /api/imports/runs/{id} for progress. The run reports processed, created, updated and failed counts, with the first hundred row errors kept for you to read.

Note

Hosted-source imports need FIKADESK_IMPORT_SECRET set. Without it the CSV importer still works, but no Zendesk, Intercom or Chatwoot source can be created or run.