Skip to main content

Zendesk Chat

This page contains the setup guide and reference information for the Zendesk Chat source connector.

Prerequisites

  • A Zendesk Account with permission to access data from accounts you want to sync.
  • (Airbyte Open Source) An Access Token (https://developer.zendesk.com/rest_api/docs/chat/auth). We recommend creating a restricted, read-only key specifically for Airbyte access to allow you to control which resources Airbyte should be able to access.

Setup guide

For Airbyte Cloud:

  1. Log into your Airbyte Cloud account.
  2. Click Sources and then click + New source.
  3. On the Set up the source page, select Zendesk Chat from the Source type dropdown.
  4. Enter the name for the Zendesk Chat connector.
  5. If you access Zendesk Chat from a Zendesk subdomain, enter the Subdomain.
  6. For Start Date, enter the date in YYYY-MM-DDTHH:mm:ssZ format. The data added on and after this date will be replicated.
  7. Click Authenticate your Zendesk Chat account. Log in and authorize your Zendesk Chat account.
  8. Click Set up source.

For Airbyte Open Source:

  1. Navigate to the Airbyte Open Source dashboard.
  2. Click Sources and then click + New source.
  3. On the Set up the source page, select Zendesk Chat from the Source type dropdown.
  4. Enter the name for the Zendesk Chat connector.
  5. If you access Zendesk Chat from a Zendesk subdomain, enter the Subdomain.
  6. For Start Date, enter the date in YYYY-MM-DDTHH:mm:ssZ format. The data added on and after this date will be replicated.
  7. For Authorization Method, select Access Token from the dropdown and enter your Zendesk access token.
  8. Click Set up source.

Supported sync modes

The Zendesk Chat source connector supports the following sync modes:

Supported Streams

Performance considerations

The connector is restricted by Zendesk's requests limitation.

Data type map

Integration TypeAirbyte Type
stringstring
numbernumber
arrayarray
objectobject

Build instructions

Build your own connector image

This connector is built using our dynamic built process. The base image used to build it is defined within the metadata.yaml file under the connectorBuildOptions. The build logic is defined using Dagger here. It does not rely on a Dockerfile.

If you would like to patch our connector and build your own a simple approach would be:

  1. Create your own Dockerfile based on the latest version of the connector image.
FROM airbyte/source-zendesk-chat:latest

COPY . ./airbyte/integration_code
RUN pip install ./airbyte/integration_code

# The entrypoint and default env vars are already set in the base image
# ENV AIRBYTE_ENTRYPOINT "python /airbyte/integration_code/main.py"
# ENTRYPOINT ["python", "/airbyte/integration_code/main.py"]

Please use this as an example. This is not optimized.

  1. Build your image:
docker build -t airbyte/source-zendesk-chat:dev .
# Running the spec command against your patched connector
docker run airbyte/source-zendesk-chat:dev spec

Customizing our build process

When contributing on our connector you might need to customize the build process to add a system dependency or set an env var. You can customize our build process by adding a build_customization.py module to your connector. This module should contain a pre_connector_install and post_connector_install async function that will mutate the base image and the connector container respectively. It will be imported at runtime by our build process and the functions will be called if they exist.

Here is an example of a build_customization.py module:

from __future__ import annotations

from typing import TYPE_CHECKING

if TYPE_CHECKING:
# Feel free to check the dagger documentation for more information on the Container object and its methods.
# https://dagger-io.readthedocs.io/en/sdk-python-v0.6.4/
from dagger import Container


async def pre_connector_install(base_image_container: Container) -> Container:
return await base_image_container.with_env_variable("MY_PRE_BUILD_ENV_VAR", "my_pre_build_env_var_value")

async def post_connector_install(connector_container: Container) -> Container:
return await connector_container.with_env_variable("MY_POST_BUILD_ENV_VAR", "my_post_build_env_var_value")

Changelog

VersionDatePull RequestSubject
0.2.12023-10-1331377Use our base image and remove Dockerfile
0.2.02023-10-1130526Use the python connector base image, remove dockerfile and implement build_customization.py
0.1.142023-02-1024190Fix remove too high min/max from account stream
0.1.132023-02-1022819Specified date formatting in specification
0.1.122023-01-2722026Set AvailabilityStrategy for streams explicitly to None
0.1.112022-10-1817745Add Engagements Stream and fix infity looping
0.1.102022-09-2817326Migrate to per-stream states.
0.1.92022-08-2315879Corrected specification and stream schemas to support backward capability
0.1.82022-06-2813387Add state checkpoint to allow long runs
0.1.72022-05-2512883Pass timeout in request to prevent a stuck connection
0.1.62021-12-157313Add support of OAuth 2.0 authentication. Fixed the issue with created_at can now be null for bans stream
0.1.52021-12-068425Update title, description fields in spec
0.1.42021-11-228166Make Chats stream incremental + add tests for all streams
0.1.32021-10-217210Chats stream is only getting data from first page
0.1.22021-08-175476Correct field unread to boolean type
0.1.12021-06-093973Add AIRBYTE_ENTRYPOINT for Kubernetes support
0.1.02021-05-033088Initial release