Zendesk
Two-way sync Zendesk tickets, users, organizations, and custom objects with Airtable, Notion, Google Sheets, and more. Covers connecting and which fields sync.
Zendesk Connector Guide
Section titled “Zendesk Connector Guide”This guide covers how to connect Whalesync to Zendesk, how your tickets, users, and organizations appear in Whalesync, and which fields sync.
In Whalesync terms, a Zendesk account is the base, and Tickets, Users, Organizations, and each custom object are tables. Three more tables, Agents, Groups, and Brands, list what fields such as a ticket's assignee and group point at; they are read only.
Connecting to Zendesk
Section titled “Connecting to Zendesk”Whalesync connects by signing in to your Zendesk account. See Authorize Zendesk.
- In Whalesync, choose Zendesk and enter your account's subdomain: for
acme.zendesk.com, enteracme. - Sign in to Zendesk and allow Whalesync access.
- Pick the tables to sync.
Syncing Data
Section titled “Syncing Data”- Tickets holds tickets, one record each.
- Users holds users of every role: end users, agents, and admins.
- Organizations holds organizations.
- Each custom object is a table named after it, holding its records, when the account's plan includes custom objects.
- Agents holds the account's agents and admins, so a ticket's assignee and followers can link to them without syncing every end user.
- Groups and Brands hold the account's groups and brands.
Each table's columns are Zendesk's standard fields plus the account's active custom fields for tickets, users, organizations, or that custom object. Inactive custom fields are left out.
Supported Fields
Section titled “Supported Fields”Tickets
Section titled “Tickets”| Zendesk field | Status | Notes |
|---|---|---|
| Subject | ✅ Supported | Zendesk keeps the first 255 characters. |
| Description | ✅ Supported | The ticket's first comment, as plain text. It's set when Whalesync creates the ticket, using the subject when the record has no description. Later changes to it aren't written to Zendesk. |
| Status | ✅ Supported | One of new, open, pending, hold, solved, or closed, in lowercase. Any other value, such as Open, is reported as a sync issue for that ticket. An empty status leaves the ticket's status as it is. |
| Priority | ✅ Supported | One of urgent, high, normal, or low. |
| Type | ✅ Supported | One of problem, incident, question, or task. |
| Custom status | ✅ Supported | Synced by the status's agent label. |
| Ticket form | ✅ Supported | Synced by the form's name. |
| Requester, CCs | ✅ Supported | Links to the Users table. |
| Assignee, Followers | ✅ Supported | Links to the Agents table. |
| Group | ✅ Supported | A link to the Groups table. |
| Organization | ✅ Supported | A link to the Organizations table. Zendesk ignores it unless the requester belongs to that organization. |
| Brand | ✅ Supported | A link to the Brands table. |
| Problem ticket | ✅ Supported | A link to another ticket: the problem an incident belongs to. Zendesk refuses a link to a ticket whose Type isn't problem. |
| Tags | ✅ Supported | The ticket's tags, apart from the ones its fields add. See Tags. |
| Due date | ✅ Supported | A date and time. Zendesk keeps it only when the ticket's Type is task. |
| External ID | ✅ Supported | |
| Submitter | ➡️ Supported (1-Way) | Read only. A link to the Users table. |
| Recipient, Channel, Satisfaction, Public, Has incidents | ➡️ Supported (1-Way) | Read only. |
| Link, Created at, Updated at | ➡️ Supported (1-Way) | Read only. Link opens the ticket in Zendesk. |
| Comments, Attachments | ✖️ Not supported | No column. The first comment is the Description. |
| Zendesk field | Status | Notes |
|---|---|---|
| Name | ✅ Supported | Required when creating a user from another app. |
| Email, Phone | ✅ Supported | The user's primary email and phone. Changing one makes the new one primary and keeps the old one on the user as a secondary, so mail or calls from it still reach them. Clearing one leaves it as it is. Zendesk stores phone numbers in international format, such as +14155550100. |
| Role | ✅ Supported | One of end-user, agent, or admin. |
| Organization | ✅ Supported | A link to the Organizations table. |
| Tags | ✅ Supported | See Tags. |
| Time zone | ✅ Supported | Zendesk reads time zones back by its own names, so America/Los_Angeles comes back as Pacific Time (US & Canada). |
| Ticket access | ✅ Supported | One of organization, groups, assigned, or requested. |
| External ID, Alias, Details, Notes | ✅ Supported | |
| Verified, Suspended | ✅ Supported | Checkboxes. |
| Default group | ➡️ Supported (1-Way) | Read only. A link to the Groups table. |
| Language, Signature, Private comments only, Shared agent, Last sign-in | ➡️ Supported (1-Way) | Read only. |
| Link, Created at, Updated at | ➡️ Supported (1-Way) | Read only. |
Organizations
Section titled “Organizations”| Zendesk field | Status | Notes |
|---|---|---|
| Name | ✅ Supported | Required when creating an organization from another app. |
| Domains | ✅ Supported | A list of domains. |
| Group | ✅ Supported | A link to the Groups table. |
| Shared tickets, Shared comments | ✅ Supported | Checkboxes. Zendesk ignores Shared comments unless Shared tickets is on. |
| Details, Notes, External ID | ✅ Supported | |
| Tags | ✅ Supported | See Tags. |
| Link, Created at, Updated at | ➡️ Supported (1-Way) | Read only. |
Custom objects
Section titled “Custom objects”| Zendesk field | Status | Notes |
|---|---|---|
| Name | ✅ Supported | Required when creating a record from another app. |
| External ID | ✅ Supported | |
| Created by, Updated by | ➡️ Supported (1-Way) | Read only. Links to the Users table. |
| Created at, Updated at | ➡️ Supported (1-Way) | Read only. |
Custom fields
Section titled “Custom fields”Each active custom field is a column of its table: ticket fields on Tickets, user fields on Users, organization fields on Organizations, and a custom object's fields on its table.
| Custom field type | Status | Notes |
|---|---|---|
| Text, Multi-line, Regex | ✅ Supported | Zendesk refuses a value that doesn't match a regex field's pattern, and Whalesync reports it as a sync issue for that record. |
| Checkbox | ✅ Supported | |
| Number, Decimal | ✅ Supported | |
| Currency | ✅ Supported | Custom objects only. A number. |
| Date | ✅ Supported | A date, with no time. |
| Drop-down | ✅ Supported | Synced by option name. The option has to exist in Zendesk. When two options share a name, the option's ID follows its name, so each one writes back as itself. |
| Multi-select | ✅ Supported | Synced by option names. Each option has to exist in Zendesk. |
| Lookup relationship | ✅ Supported | A link to the Users, Organizations, or Tickets table, or to a custom object's table. |
| Credit card | ➡️ Supported (1-Way) | Read only. Zendesk keeps only the last four digits. |
| Ticket fields agents can't edit | ➡️ Supported (1-Way) | Read only. Zendesk's own features fill these in, and Zendesk ignores other changes to them. |
| Other types | ➡️ Supported (1-Way) | Read only, as text. |
Zendesk tags a ticket, user, or organization with the value of each drop-down, multi-select, and checkbox field it has. Those tags belong to the fields, so the Tags column leaves them out and holds only the other tags. When Tags changes in another app, Whalesync keeps the fields' tags on the record, so a tag edit never clears a field.
A ticket whose requester changes also takes on the requester's user tags, which then show in its Tags column.
Real-time updates
Section titled “Real-time updates”Whalesync registers one webhook on your Zendesk account, so most changes to tickets, users, and organizations reach your other apps within seconds.
Zendesk sends no webhook for custom object records, Groups, or Brands, or for an organization's details, notes, domains, group, or sharing settings. Those changes are found by a scan of the account that runs once a day while webhooks are on. A sync that maps none of Tickets, Users, Agents, or Organizations has no webhook, and scans for changes on its sync frequency instead.
Deleting records
Section titled “Deleting records”Deleting a record in another app deletes it in Zendesk. A deleted ticket goes to Zendesk's deleted tickets, where it can be restored for 30 days. Deleting a Zendesk user or organization is permanent.
Delete Protection is off until you turn it on for a table. We recommend turning it on for the Users and Organizations tables, so a record deleted in another app never deletes a user or organization in Zendesk.
Things to Keep in Mind
Section titled “Things to Keep in Mind”- Synced changes run your Zendesk triggers. Zendesk treats a change Whalesync makes like an agent's edit, so your account's triggers run on it, and a new or updated ticket can email its requester.
- Closed tickets can't be edited. Zendesk refuses changes to a closed ticket, and Whalesync reports This Zendesk ticket is closed, and Zendesk does not allow changes to closed tickets. Edit a follow-up ticket instead. as a sync issue for it.
- Comments and attachments are not synced. A ticket's first comment is its Description.
- Whalesync doesn't create fields, drop-down options, custom statuses, or ticket forms. A value that doesn't match one in Zendesk is reported as a sync issue for that record.
- Whalesync makes at most 2 requests a second to Zendesk, which leaves room for your account's other apps under Zendesk's per-minute limit. Writing a record takes at least two requests, so a large first sync into Zendesk takes a while.