> AI agents: this is one page from PostHog's docs. Full index of Markdown docs for LLMs: https://posthog.com/llms.txt # Linking Zendesk as a source Canonical URL: https://posthog.com/docs/data-pipelines/sources/zendesk > **Cloud region:** This page uses US Cloud hosts. For an EU Cloud project, use `https://eu.posthog.com` instead of `https://us.posthog.com` or `https://app.posthog.com` (app host for links). ## On this page - [Prerequisites](#prerequisites) - [Adding a data source](#adding-a-data-source) - [Sync modes](#sync-modes) - [Configuration](#configuration) - [Supported tables](#supported-tables) - [Troubleshooting](#troubleshooting) ![](https://res.cloudinary.com/dmukukwp6/image/upload/texture_tan_9608fcca70) ![](https://res.cloudinary.com/dmukukwp6/image/upload/texture_tan_dark_a92b0e022d) Let AI connect your sources for you Skip the manual setup — run this in your project and the wizard auto-detects your databases and APIs and connects them to PostHog. `npx @posthog/wizard warehouse` ![PostHog Wizard hedgehog](https://res.cloudinary.com/dmukukwp6/image/upload/wizard_3f8bb7a240.png) ![](https://res.cloudinary.com/dmukukwp6/image/upload/wizard_3f8bb7a240.png)Let AI connect your sources for you The Zendesk connector syncs your customer support data – tickets, ticket events, ticket metric events, ticket fields, users, organizations, groups, brands, and SLA policies – into PostHog, so you can analyze support activity alongside your product data. ## Prerequisites You need a Zendesk account with access to the [Zendesk API](https://support.zendesk.com/hc/en-us/articles/4408889192858-Managing-access-to-the-Zendesk-API). Token access must be enabled in your Zendesk admin settings, and you'll need an API token plus the email address it belongs to. ## Adding a data source 1. In PostHog, go to the [Sources tab](https://app.posthog.com/data-management/sources) of the data pipeline section. 2. Click **\+ New source** and click **Link** next to this source. 3. Enter your credentials (see [Configuration](#configuration) below) and click **Next**. 4. Select the tables you want to sync, choose a sync method and frequency, then click **Import**. Once the syncs are complete, you can start querying this data in PostHog. When linking Zendesk, you'll need: - **Subdomain** – the subdomain of your Zendesk account. For `https://posthoghelp.zendesk.com/`, the subdomain is `posthoghelp`. - **API token** – create one under **Admin Center → Apps and integrations → Zendesk API → Add API token**. - **Email** – the email address of the account the API token belongs to. ## Sync modes Each table can be synced in one of several modes, depending on what the source supports: - **Webhook** (when available) – the source pushes changes to PostHog in real time. Fastest freshness, lowest ongoing cost, and the only mode that reliably captures updates and deletes. - **Incremental** – only new or updated rows are synced on each run, using a cursor field (such as an `updated_at` timestamp). Cheaper than a full refresh, but deletes aren't captured. - **Append only** – new rows are appended using a cursor field; existing rows are never updated. Ideal for immutable, append-only tables like event logs. - **Full refresh** – the whole table is reloaded on every sync. Use it when a table has no reliable cursor or when you need deletions reflected. See [sync methods](https://posthog.com/docs/data-pipelines/sources.md#sync-methods) for a full explanation of how each mode works and how to choose between them. ## Configuration | Option | Type | Required | | --- | --- | --- | | `Zendesk subdomain` | text | Yes | | `API key` | password | Yes | | `Zendesk email address` | email | Yes | ## Supported tables | Table | Description | Sync method | Incremental field | Primary key | | --- | --- | --- | --- | --- | | `ticket_fields` | A field that appears on tickets, system or custom, with its type and configuration. | Full refresh | — | — | | `ticket_events` | A record of changes to ticket properties over time, from the incremental ticket events export. | Incremental, Full refresh | created\_at | — | | `tickets` | A support request submitted by a customer and tracked through to resolution. | Incremental, Full refresh | generated\_timestamp | — | | `ticket_metric_events` | Time-series events for ticket metrics such as reply time and resolution time. | Incremental, Full refresh | time | — | | `users` | A person who interacts with Zendesk Support: an end user, agent, or administrator. | Incremental, Full refresh | updated\_at | — | | `sla_policies` | A service level agreement policy defining target response and resolution times for tickets. | Full refresh | — | — | | `groups` | A collection of agents who can be assigned tickets together. | Full refresh | — | — | | `organizations` | A collection of users grouped into a single account, often a company. | Incremental, Full refresh | updated\_at | — | | `brands` | A customer-facing identity — branding, support address, and help center — within one account. | Full refresh | — | — | | `satisfaction_ratings` | A customer satisfaction rating left on a ticket, with its score and optional comment. | Full refresh | — | — | | `ticket_metrics` | Rolled-up timing and volume metrics for a single ticket, such as first reply and full resolution time. | Full refresh | — | — | | `ticket_audits` | An immutable record of every change made to a ticket, including the events that made it up. | Full refresh | — | — | | `ticket_comments` | A comment on a ticket: a public reply to the requester or an internal note between agents. | Incremental, Full refresh | created\_at | — | | `group_memberships` | The assignment of an agent to a group. | Full refresh | — | — | | `organization_memberships` | The assignment of a user to an organization. | Full refresh | — | — | | `macros` | A predefined set of actions an agent can apply to a ticket in one click. | Full refresh | — | — | | `views` | A saved collection of tickets defined by a set of conditions. | Full refresh | — | — | | `triggers` | A business rule that runs immediately after a ticket is created or updated. | Full refresh | — | — | | `automations` | A time-based business rule that runs hourly against tickets matching its conditions. | Full refresh | — | — | | `custom_roles` | A custom agent role and the permissions granted to the team members assigned to it. | Full refresh | — | — | | `user_fields` | A custom field that appears on user profiles. | Full refresh | — | — | | `organization_fields` | A custom field that appears on organizations. | Full refresh | — | — | | `ticket_forms` | A configurable set of ticket fields presented to agents and end users. | Full refresh | — | — | | `custom_statuses` | A custom ticket status and the system status category it belongs to. | Full refresh | — | — | | `tags` | A tag in use on the account, with how many times it has been applied. | Full refresh | — | — | | `custom_objects` | A custom object type defined on the account, describing records outside the standard Zendesk objects. | Full refresh | — | — | | `audit_logs` | An account-level record of a configuration or access change, and who made it. | Full refresh | — | — | | `activities` | An entry in the agent activity stream, such as a ticket assignment or comment. | Incremental, Full refresh | created\_at | — | | `requests` | A ticket as the end user who submitted it sees it, with only end-user-visible fields. | Full refresh | — | — | | `suspended_tickets` | An inbound message held for review instead of becoming a ticket, with the reason it was suspended. | Full refresh | — | — | | `deleted_tickets` | A ticket that has been deleted and is recoverable from the trash. | Full refresh | — | — | | `saved_searches` | A search query an agent saved for reuse. | Full refresh | — | — | | `queues` | An omnichannel routing queue and the conditions that route work into it. | Full refresh | — | — | | `brand_agents` | The membership of an agent in a brand. | Full refresh | — | — | ## Troubleshooting If your sync is failing or data looks wrong, see the [Data warehouse troubleshooting guide](https://posthog.com/docs/data-warehouse/troubleshooting.md). If that doesn't help, [contact support](https://us.posthog.com/#panel=support%3Asupport%3Adata_warehouse%3A%3Atrue) – we're happy to help.