Skip to main content
Zendesk logo
Available on any Dovetail plan that includes Channels, with available data points in your workspace.
Connect Zendesk to Dovetail to automatically import solved and closed tickets into a Channel, where they’re analyzed, clustered into themes, and made searchable alongside the rest of your customer feedback. Zendesk is a Channels integration only. It doesn’t appear as an import source in Projects. Learn more about Channels →

Prerequisites

Before you start, make sure you have:
  • A Dovetail workspace on a plan that includes Channels, with available data points.
  • A Zendesk user role that can view all tickets in your brand (including tickets in private groups), add both public and private comments, and manage ticket fields. Typically this means an Agent role with the following configuration under People → Roles → Tickets:
    • Tickets they can access: All within their brand membership, including those in private groups
    • Commenting permissions: Public and private comments
    • Manage ticket fields: Enabled
  • Can edit or Full access on the Channel where you want to import tickets. Manage permissions in the Channel’s Share settings.
  • Your Zendesk subdomain — the part before .zendesk.com in your workspace URL (for example, acme from acme.zendesk.com).
If you have multiple Zendesk subdomains, connect each one as a separate source. One Dovetail Zendesk source authorizes against a single subdomain.

Set up the integration

You can start the connection from the Channel you want to import into, or from Settings → Integrations.
1

Open or create a Channel

Open the Channel where you want to import tickets, or create a new one.
2

Add Zendesk as a source

Select Add source, then pick Zendesk from the list of sources.
3

Review the requirements

On the Connect Zendesk screen, review the two requirements — Zendesk login credentials and Zendesk user role permissions — and select Connect.
4

Enter your workspace URL

On the Find your workspace screen, enter your Zendesk subdomain in the Enter your workspace URL field. The suffix .zendesk.com is shown for you — you only need the part before it (for example, acme). Select Continue.
5

Authorize in Zendesk

Dovetail redirects you to Zendesk to authorize the connection. Approve the request. You’ll be returned to Dovetail on the Configure what to analyze step.

Authorize Dovetail

Dovetail uses OAuth 2.0 to connect to Zendesk. The user who authorizes the connection is the account whose permissions Dovetail uses to read tickets — so their Zendesk role needs to satisfy the prerequisites above. Dovetail requests Zendesk’s global read scope: This is broader than Zendesk’s more restrictive tickets:read scope. Dovetail uses read because Zendesk’s ticket search endpoint doesn’t return archived tickets under tickets:read — and Dovetail relies on ticket search to filter by group, tag, and solved date. Dovetail only reads data from Zendesk; it never writes back.
Common reasons authorization fails:
  • The subdomain was entered incorrectly. Enter just the part before .zendesk.com (for example, acme), not the full URL.
  • The authorizing user’s role doesn’t have permission to view every ticket in the brand — the connection succeeds but no tickets import.
  • Your Zendesk workspace has SSO restrictions that block OAuth apps for that user. Try authorizing as a user whose access isn’t restricted, or ask a Zendesk admin.
To revoke Dovetail’s access on the Zendesk side, go to your Zendesk Admin Center → Apps and integrations → OAuth clients, find Dovetail, and revoke the token.

Configure what to analyze

After connecting, you’ll see the Configure what to analyze step, with three controls.

Groups

The Select groups dropdown is populated with your Zendesk groups, fetched live from your workspace. The default selection is All groups. Dovetail applies your group selection as a group: filter on Zendesk’s ticket search. Zendesk search syntax only supports one group: clause per query, so if you select more than one group, Dovetail applies only the first group and ignores the rest. If you need to sync tickets across multiple groups, either pick All groups, or set up a separate source per group. There’s no maximum selection count enforced on groups, but only the first selection has an effect at sync time.

Tags

The Select tags dropdown is populated with your Zendesk tags. The default selection is All tags.
  • Maximum: 15 tags.
  • Selecting multiple tags returns tickets that match any of the selected tags — for example, selecting billing and refund returns tickets tagged with either billing, refund, or both, not only tickets tagged with both.

Import period

Choose how far back Dovetail should look when it first backfills tickets:
  • Last 7 days
  • Last 30 days (default)
  • Last 90 days
  • Last 6 months
The import period is applied to a ticket’s solved date, not its created date. A ticket created six months ago but only solved last week will be imported by a Last 30 days selection. There are no filters for ticket priority, ticket type, requester organization, assignee, direction, or keyword.

What Dovetail imports

Only tickets whose status is Solved or Closed are imported. Tickets in open, pending, hold, or new statuses are ignored until they’re solved or closed. For each imported ticket, Dovetail pulls the following fields:
If the combined text of a ticket’s comments exceeds 10,000 characters, Dovetail trims comments from the end until the total fits. Every ticket keeps at least its first comment.
What doesn’t transfer:
  • Attachments
  • Ticket satisfaction (CSAT) ratings and comments
  • Assignee, submitter, and requester organization
  • SLA policies and breach data
  • Priority (unless captured on a custom field)
  • Views, macros, triggers, and automations
  • Side conversations
  • Internal notes on tickets that are neither solved nor closed
  • Historical ticket revisions and audit events
  • Analytics or derived scores (sentiment, intent, etc.)

Sync behavior

  • Initial backfill. On first connection, Dovetail imports tickets whose solved date falls within the import period you chose.
  • Ongoing sync. Once connected, Dovetail continues to pull new solved and closed tickets roughly every hour per connected Zendesk source. There’s no way to trigger a manual sync or change the frequency.
  • Private and restricted tickets. Dovetail imports tickets that the authorizing user has permission to view. Tickets in private groups the user can’t see, or restricted by brand membership, won’t appear.
  • Rate limits. Zendesk enforces an account-wide API rate limit that’s shared across every OAuth app connected to your account — not just Dovetail. Dovetail backs off whenever the remaining budget drops below 100 requests, and waits for Zendesk to reset the window before continuing.

Troubleshooting

I finished authorizing but no tickets appeared. Most likely one of: (1) no tickets in the selected date range are Solved or Closed yet, (2) the authorizing user’s role doesn’t include access to the brand’s tickets, or (3) your group or tag selection excludes everything. Widening to All groups and All tags is a fast way to confirm the connection itself is fine. Fewer tickets imported than I expected. Two common causes: your import period uses the solved date, not the created date — so recently created tickets that aren’t yet solved won’t appear. And if you selected more than one group, only the first group is applied — see the Groups section above. Authorization failed. Usually a subdomain typo (enter acme, not https://acme.zendesk.com), a user whose Zendesk role can’t view all brand tickets, or SSO restrictions blocking the OAuth flow. Retry with the correct subdomain, or authorize as a user whose Zendesk role meets the prerequisites. Rate limit messages. Dovetail throttles its own requests when your Zendesk account has fewer than 100 API requests remaining in the current window. If another OAuth app connected to your Zendesk workspace is consuming most of the quota, syncs may slow down — this recovers on its own once the rate-limit window resets. We have multiple Zendesk workspaces or subdomains. Each Dovetail Zendesk source connects to a single subdomain. To pull from multiple subdomains, add each one as a separate source on your Channel (or on different Channels). A comment or field I expected is missing. Check the “What doesn’t transfer” list above. If the ticket has more than 20 comments, only the first 20 are imported. If the combined comment text exceeds 10,000 characters, later comments are trimmed to keep the ticket within that cap.

Disconnect or delete the Zendesk source

Disconnecting stops new tickets from importing but keeps everything already imported. Deleting removes the source and all its data points from the Channel — this is permanent. To disconnect:
  1. Open the Channel and select Sources.
  2. Find the Zendesk source and open its actions menu, then select Disconnect.
  3. Confirm in the Disconnect data source dialog:
    Are you sure you want to disconnect <source name> from <Channel name>?
  4. Select Disconnect.
You’ll see the toast Dataset disconnected and the source will show a Disconnected label. You can reconnect later from the same menu. To delete:
  1. From the same source menu, select Delete.
  2. Confirm in the Delete data source dialog:
    Are you sure you want to delete <source name> from <Channel name>? This will delete all associated data points. This is permanent and cannot be undone.
  3. Select Delete.
To fully revoke Dovetail’s access on the Zendesk side:
  1. In Zendesk, open Admin Center → Apps and integrations → OAuth clients.
  2. Find the Dovetail token and revoke it.
Disconnecting inside Dovetail does not revoke the OAuth token on Zendesk’s side — revoking in the Admin Center is the definitive way to cut off access.

FAQs

Dovetail requests a single OAuth scope when connecting to Zendesk:
  • read — read-only access across ticket content, comments, users, groups, tags, and ticket fields.
Dovetail uses this broader scope rather than the narrower tickets:read because Zendesk’s ticket search endpoint doesn’t return archived tickets under tickets:read. To ensure a complete import — including archived tickets — Dovetail uses read.
Tickets with a status of Solved or Closed in Zendesk. Tickets in open, pending, hold, or new are ignored until they’re solved or closed.
About once an hour per connected Zendesk source, automatically. When you first connect, Dovetail runs an initial backfill scoped to your chosen import period. After that, it settles into the regular hourly cadence — there’s nothing to configure and no button to press.
Yes, but with a caveat. The Groups dropdown lets you multi-select, but Zendesk’s ticket search only supports one group: clause per query, so only the first group you select is applied at sync time. To sync tickets across multiple groups, either pick All groups or set up a separate source per group.
Zendesk enforces an account-wide rate limit that’s shared across every OAuth app connected to your account. Dovetail monitors the remaining budget and backs off whenever there are fewer than 100 requests remaining, then resumes once Zendesk resets the window. You don’t need to do anything — sync catches up on its own.
No. Dovetail doesn’t import attachments from Zendesk tickets — only the ticket subject, description, comments, tags, custom fields, and the requester’s email and display name (for email tickets).
Reach out to our team at support@dovetail.com, and we’d be happy to talk through it with you and your team.

Voice of customer

Centralize feedback, make sense of it, and close the loop.