Skip to main content

Zendesk Support

This connector captures data from Zendesk into Flow collections.

It is available for use in the Flow web application. For local development or open-source workflows, ghcr.io/estuary/source-zendesk-support:dev provides the latest version of the connector as a Docker image. You can also follow the link in your browser to see past image versions.

This connector is based on an open-source connector from a third party, with modifications for performance in the Flow system. You can find their documentation here, but keep in mind that the two versions may be significantly different.

Supported data resources

The following data resources are supported through the Zendesk API:

By default, each resource is mapped to a Flow collection through a separate binding.

Prerequisites

There are two different ways to authenticate with Zendesk Support when capturing data into Flow: using OAuth2 or providing an API token. The prerequisites for both authentication methods are listed below.

OAuth2 authentication

  • Subdomain of your Zendesk URL. In the URL https://MY_SUBDOMAIN.zendesk.com/, MY_SUBDOMAIN is the subdomain.

API token authentication

  • Subdomain of your Zendesk URL. In the URL https://MY_SUBDOMAIN.zendesk.com/, MY_SUBDOMAIN is the subdomain.
  • Email address associated with your Zendesk account.
  • A Zendesk API token. See the Zendesk docs to enable tokens and generate a new token.

Configuration

You configure connectors either in the Flow web app, or by directly editing the catalog specification files. See connectors to learn more about using connectors. The values and specification sample below provide configuration details specific to the Zendesk Support source connector.

Properties

Endpoint

PropertyTitleDescriptionTypeRequired/Default
/credentials/credentialsCredentials methodType of credentials used. Set to api_token or oauth2.0.stringRequired
/credentials/api_tokenAPI TokenThe value of the API token generated.stringRequired for API token authentication
/credentials/emailEmailThe user email for your Zendesk account.stringRequired for API token authentication
/credentials/client_idOAuth Client IDThe OAuth app's client ID.stringRequired for OAuth2 authentication
/credentials/client_secretOAuth Client SecretThe OAuth app's client secret.stringRequired for OAuth2 authentication
/credentials/access_tokenAccess TokenThe access token received from the OAuth app.stringRequired for OAuth2 authentication
/start_dateStart DateThe date from which you'd like to replicate data for Zendesk Support API, in the format YYYY-MM-DDT00:00:00Z. All data generated after this date will be replicated.stringRequired
/subdomainSubdomainThis is your Zendesk subdomain that can be found in your account URL. For example, in https://MY_SUBDOMAIN.zendesk.com/, where MY_SUBDOMAIN is the value of your subdomain.stringRequired

Bindings

PropertyTitleDescriptionTypeRequired/Default
/streamStreamResource in Zendesk from which collections are captured.stringRequired
/syncModeSync ModeConnection method.stringRequired
cursorFieldCursor FieldField to use as a cursor when paginating through results. Required when syncMode is incremental.string

Sample

captures:
${PREFIX}/${CAPTURE_NAME}:
endpoint:
connector:
image: ghcr.io/estuary/source-zendesk-support:dev
config:
credentials:
api_token: <secret>
credentials: api_token
email: user@domain.com
start_date: 2022-03-01T00:00:00Z
subdomain: my_subdomain
bindings:
- resource:
stream: account_attributes
syncMode: full_refresh
target: ${PREFIX}/accountattributes
- resource:
stream: attribute_definitions
syncMode: full_refresh
target: ${PREFIX}/attributedefinitions
- resource:
stream: audit_logs
syncMode: incremental
cursorField:
- created_at
target: ${PREFIX}/auditlogs
- resource:
stream: brands
syncMode: full_refresh
target: ${PREFIX}/brands
- resource:
stream: custom_roles
syncMode: full_refresh
target: ${PREFIX}/customroles
- resource:
stream: group_memberships
syncMode: incremental
cursorField:
- updated_at
target: ${PREFIX}/groupmemberships
- resource:
stream: groups
syncMode: incremental
cursorField:
- updated_at
target: ${PREFIX}/groups
- resource:
stream: macros
syncMode: incremental
cursorField:
- updated_at
target: ${PREFIX}/macros
- resource:
stream: organizations
syncMode: incremental
cursorField:
- updated_at
target: ${PREFIX}/organizations
- resource:
stream: organization_memberships
syncMode: incremental
cursorField:
- updated_at
target: ${PREFIX}/organizationmemberships
- resource:
stream: posts
syncMode: incremental
cursorField:
- updated_at
target: ${PREFIX}/posts
- resource:
stream: post_comments
syncMode: full_refresh
target: ${PREFIX}/postcomments
- resource:
stream: post_comment_votes
syncMode: full_refresh
target: ${PREFIX}/postcommentvotes
- resource:
stream: post_votes
syncMode: full_refresh
target: ${PREFIX}/postvotes
- resource:
stream: satisfaction_ratings
syncMode: incremental
cursorField:
- updated_at
target: ${PREFIX}/satisfactionratings
- resource:
stream: schedules
syncMode: full_refresh
target: ${PREFIX}/schedules
- resource:
stream: sla_policies
syncMode: full_refresh
target: ${PREFIX}/slapoliciies
- resource:
stream: tags
syncMode: full_refresh
target: ${PREFIX}/tags
- resource:
stream: ticket_audits
syncMode: incremental
cursorField:
- created_at
target: ${PREFIX}/ticketaudits
- resource:
stream: ticket_comments
syncMode: incremental
cursorField:
- created_at
target: ${PREFIX}/ticketcomments
- resource:
stream: ticket_fields
syncMode: incremental
cursorField:
- updated_at
target: ${PREFIX}/ticketfields
- resource:
stream: ticket_forms
syncMode: incremental
cursorField:
- updated_at
target: ${PREFIX}/ticketforms
- resource:
stream: ticket_metrics
syncMode: incremental
cursorField:
- after_cursor
target: ${PREFIX}/ticketmetrics
- resource:
stream: ticket_metric_events
syncMode: incremental
cursorField:
- time
target: ${PREFIX}/ticketmetricevents
- resource:
stream: ticket_skips
syncMode: incremental
cursorField:
- updated_at
target: ${PREFIX}/ticketskips
- resource:
stream: tickets
syncMode: incremental
cursorField:
- after_cursor
target: ${PREFIX}/tickets
- resource:
stream: users
syncMode: incremental
cursorField:
- after_cursor
target: ${PREFIX}/users