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

# Migrate from Zendesk to Orbit: tickets, users, and knowledge

> Move from Zendesk to Orbit's unified inbox with native tickets and a public knowledge base — the decision matrix for retire-vs-retain, the entity map (end-users, groups, tickets, Help Center), and the seven-step relink runbook.

# Migrate from Zendesk to Orbit

Zendesk is the third CRM-context provider Orbit connects — alongside HubSpot and Salesforce — but the migration shape is different: Zendesk is a *helpdesk*, so the move is about tickets, end-users, and knowledge, not a contact book. Pick the row that matches what you need:

| What you mean                                                   | The move                                                                                                                                                                                                                         |
| --------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Have Orbit conversations surface inside Zendesk (or vice versa) | Don't migrate — connect the two and use Zendesk-linked ticketing in the inbox. [Connect Zendesk & the OAuth SaaS integrations](/guides/oauth-saas-integrations).                                                                 |
| Run the helpdesk from Orbit while Zendesk stays the archive     | Don't migrate — connect so tickets keep being logged into Zendesk while the front-edge moves to Orbit. Same guide.                                                                                                               |
| Retire Zendesk and run the helpdesk entirely in Orbit           | **This guide.** Tickets move to [Orbit's native inbox tickets](/guides/inbox-tickets-workflow), knowledge moves to a [connected knowledge base](/guides/knowledge-base-lifecycle), and end-users are imported as Orbit contacts. |

The connector is identical either way. What changes is whether the Zendesk instance is still ticking the archive clock or shut down. The sections below are ordered for a retirement; sections 1–3 apply to side-by-side too.

## 1. What's exported from Zendesk — before you change anything

Export from Zendesk while the instance still has full data:

* **End-users** — a CSV of Users (name, email, phone, tags). These map to Orbit contacts on import.
* **Groups and agents** — the group structure informs queue setup in Orbit. A Zendesk Group maps to a queue, an agent maps to an inbox assignment rule.
* **Tickets** — while closed tickets can bulk-export on Premium plans, most migrations archive them rather than import them. Live tickets are rebuilt natively (see [step 3](#3-recreate-your-knowledge-base-in-orbit)).
* **Help Center (Knowledge)** — articles, categories, and sections. These move to Orbit's [knowledge base](/guides/knowledge-base-lifecycle) as connected content rather than an export — a Zendesk connector imports the Help Center tree into a KB you can search and publish.
* **Macros** — Zendesk macros map to [Orbit macros](/guides/inbox-setup#macros) in the inbox. Export the JSON of your macros; each becomes a reusable snippet or an agent-flow pattern.

Keep the exported CSVs — the audit spine if a row doesn't reconcile after the relink.

## 2. Connect Zendesk to Orbit (OAuth, admin-only)

The connection is one of the four OAuth-popup integrations, same connect flow as Calendly, DocuSign, or Jira. **Owner/admin role required**.

```bash theme={null}
curl -X POST https://api.orbit.devotel.io/api/v1/integrations/connect \
  -H "X-API-Key: dv_live_sk_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{ "integration_id": "zendesk" }'
```

The drawer's **Data** tab then controls which entities sync — enable the **tickets** and **users** models. End-users import onto Orbit contacts; tickets surface in the inbox CRM panel.

Verify the connection landed:

```bash theme={null}
curl https://api.orbit.devotel.io/api/v1/integrations \
  -H "X-API-Key: dv_live_sk_your_key_here"
# Expect a row for provider: 'zendesk'
```

For a retirement migration you can connect and immediately import end-users as contacts, then manage tickets natively (no Zendesk ticket sync needed). For a side-by-side setup the ticket linkage is the point — Orbit inbound conversations map into your Zendesk default group.

## 3. Recreate your knowledge base in Orbit

A Zendesk helpdesk usually pairs tickets with a public Help Center. Orbit's [knowledge base](/guides/knowledge-base-lifecycle) connects to Zendesk directly, imports the category → section → article tree, and keeps the import indexed as searchable content. On the [agent-assisted side](/guides/agent-assist-whisper-coaching) the imported KB is what the assistant and [Orby, the operator assistant](/guides/orby-in-dashboard) cite from.

Choose the import shape:

| Zendesk object                                | Orbit destination                                                                                                                                | When to use it                                                          |
| --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------- |
| Help Center category → section → article tree | A Zendesk [knowledge-base connector](/guides/knowledge-base-lifecycle#3-load-documents) — declare one connector, one sync run per article update | The public Help Center moves to Orbit's public docs endpoint.           |
| Internal macros / agent notes                 | A [macro](/guides/inbox-setup#macros) or a snippet; tag it so agents find it                                                                     | A short answer, not a long article.                                     |
| One-off snippet page you keep in Zendesk      | Keep it as a Zendesk connector (read-only sync)                                                                                                  | When Zendesk stays live but the knowledge should reach the Orbit agent. |

If you retire Zendesk entirely, the knowledge import completes once and the connector can be removed — the documents stay in Orbit.

## 4. Recreate your ticket workflow natively in Orbit

Zendesk tickets map to [Orbit inbox tickets](/guides/inbox-tickets-workflow) with first-class parity — `type` ∈ `question|incident|problem|task`, priority, tags, SLA timers, macros. The move is:

| Zendesk surface           | Orbit equivalent                                                                 |
| ------------------------- | -------------------------------------------------------------------------------- |
| Zendesk Agent Workspace   | [Unified inbox](/guides/inbox-setup) — SMS, WhatsApp, email, voice in one thread |
| Tickets                   | [Inbox tickets](/guides/inbox-tickets-workflow)                                  |
| Groups → routing rules    | [Routing rules](/guides/routing-rules)                                           |
| Help Center               | [Knowledge base](/guides/knowledge-base-lifecycle)                               |
| Triggers / automations    | [Flows (visual builder)](/guides/build-first-flow)                               |
| Zendesk Explore reporting | [Analytics](/guides/ask-your-data-insights)                                      |

The move is gradual — Zendesk can stay live as the archive while new tickets open natively in Orbit. The [seven-step cutover runbook](/guides/migration-playbook-hub#4-runbook-for-cutover--the-canonical-seven-steps) applies unchanged; the only Zendesk-specific detail is which sync model step 3 (end-users) and which archive finalization step 6 close out.

## 5. Reconcile, then cut over

The generic seven-step cutover in [Migration playbook hub](/guides/migration-playbook-hub#4-runbook-for-cutover--the-canonical-seven-steps) works as-is; these are the Zendesk-specific checkpoints to hang off it:

1. **Freeze new tickets in Zendesk** — inbound conversations stop opening Zendesk tickets. Closed tickets can stay as read-only history.
2. **Redirect ticket/webhook flow** — verify `POST /api/v1/integrations/webhooks/zendesk` if you wired one; otherwise verify an Orbit event against your receiver with `X-Orbit-Signature`.
3. **Swap API keys** — cut your own integration (if any) onto an Orbit key; the OAuth connection to Zendesk itself stays until decommission.
4. **Flip sender identity** — the production sender moves to Orbit's numbers; the Help Center public URL moves to Orbit's public docs endpoint.
5. **Watch the first-day parity window** — ticket creation rate, SLA adherence, and knowledge search coverage parity before decommission.
6. **Hold Zendesk readable** — keep the Zendesk instance accessible (ideally with sync running) for an agreed window so agents can search closed tickets if a customer calls back on an old thread.
7. **Decommission** — verify no live triggers/automations, no live tokens, and that the exported end-user CSV reconciles with what Orbit reports imported. Then close the instance.

## 6. Operate after the migration

Once cut over, the ongoing surfaces that keep the migration honest:

* **Settings → Migrations** — the job history for every import run lives here, with status and rollback. [Monitor, cancel, and roll back platform migrations](/guides/migration-jobs-operations).
* **Audit ledger** — every connect, sync, and knowledge import lands in the tenant audit log.
* **Suppression and consent state** — Zendesk organization/user-level opt-outs must exist in Orbit's per-channel suppression before decommission. [Opt-out lists](/guides/opt-out-lists) covers enforcement.
* **Sync health** — if you left Zendesk connected as an archive, `GET /api/v1/integrations/{id}/status` reports per-sync `last_sync`, and **Settings → Integrations → Zendesk → Status** surfaces the same.

<Tip>
  Retiring Zendesk entirely, or pairing it with Orbit for a season? The solutions team works Zendesk offloads regularly — [migrate@devotel.io](mailto:migrate@devotel.io) with your instance shape, lane, and Help Center size gets you the same plan the sections above assume.
</Tip>
