Connect Zendesk#
Difficulty: moderate (API token). Sync Zendesk users, organizations, and tickets in both directions.
Auth at a glance#
| Method | HTTP Basic, API-token form (email/token : token) |
| What you create | A Zendesk API token (token access enabled) |
| Where Forge helps | Forge builds the /token auth form for you; you supply the subdomain |
What you'll need#
- Your Zendesk agent/admin email.
- An API token with token access enabled (Admin Center → Apps and integrations → APIs → Zendesk API → enable Token access → add token).
- Your Zendesk subdomain (
yourco→https://yourco.zendesk.com).
Steps#
- Enable token access and create an API token in Admin Center.
- In Connections, choose Zendesk → Connect. Enter your plain email + token and the subdomain.
- Forge stores the token encrypted and verifies the connection.
What you get#
- Source: Zendesk's Incremental Export API is the change feed — Forge polls
start_time=<cursor>per object and emits one change per record. - Destination: upsert Users and Organizations by
external_id(server-sidecreate_or_update— no double-create); Tickets via search-then-write.
Gotchas#
- Don't add
/tokenyourself. Zendesk's API-token auth uses username"<email>/token". Forge adds the/tokensuffix internally — store the bare email. Appending it yourself double-suffixes and fails auth. - Token access must be enabled in Admin → APIs → Settings, and the token's user needs the right role for writes and deletes. 403 → Forge aborts (permanent auth error).
- Users/Organizations upsert natively; Tickets don't. Tickets are searched by
external_idthen written, so a fresh ticket can briefly double-create under Zendesk's search-index lag. Users and Organizations are immune. - Delete is by numeric id. Forge reads the record to resolve its id, then deletes — two calls, but a clean, confirmed removal.
- Incremental export is throttled (~10 requests/minute). Forge paces its polling accordingly.
What Forge provisions for you#
You create the API token (Zendesk requires a human), but Forge handles the API-token auth form, the per-object incremental-export cursors, the search-then-write for Tickets, and the read-then-delete-by-id confirmation.