
Available on any Dovetail plan that includes Channels, with available data points in your workspace.
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.comin your workspace URL (for example,acmefromacme.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.
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 agroup: 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
billingandrefundreturns tickets tagged with eitherbilling,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
What Dovetail imports
Only tickets whose status is Solved or Closed are imported. Tickets inopen, 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.
- 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 (enteracme, 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:- Open the Channel and select Sources.
- Find the Zendesk source and open its actions menu, then select Disconnect.
- Confirm in the Disconnect data source dialog:
Are you sure you want to disconnect <source name> from <Channel name>?
- Select Disconnect.
- From the same source menu, select Delete.
- 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.
- Select Delete.
- In Zendesk, open Admin Center → Apps and integrations → OAuth clients.
- Find the Dovetail token and revoke it.
FAQs
What Zendesk API scopes does Dovetail request?
What Zendesk API scopes does Dovetail request?
Dovetail requests a single OAuth scope when connecting to Zendesk:
read— read-only access across ticket content, comments, users, groups, tags, and ticket fields.
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.Which tickets get imported into a Channel?
Which tickets get imported into a Channel?
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.How often does Dovetail sync tickets from Zendesk?
How often does Dovetail sync tickets from Zendesk?
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.
Can I sync tickets from multiple Zendesk groups?
Can I sync tickets from multiple Zendesk groups?
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.How does Dovetail handle Zendesk API rate limits?
How does Dovetail handle Zendesk API rate limits?
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.
Can I import ticket attachments?
Can I import ticket attachments?
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).
What if I have more technical questions about this integration?
What if I have more technical questions about this integration?
Reach out to our team at support@dovetail.com, and we’d be happy to talk through it with you and your team.
Related guides
Voice of customer
Centralize feedback, make sense of it, and close the loop.