> ## Documentation Index
> Fetch the complete documentation index at: https://www.integrate.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# ETL: Zendesk Source

> Configure the Zendesk source component in Integrate.io ETL to read tickets, users, organizations, and other Zendesk objects into your pipeline.

Use the Zendesk source component to read data from your Zendesk Support account — including tickets, users, organizations, ticket events, and configuration objects — into your [Integrate.io](http://integrate.io/) ETL pipeline.

## Connection

Select an existing Zendesk connection or create a new one. A Zendesk connection authenticates with your Zendesk subdomain over OAuth.

## Source Properties

The source component is configured in Step 02 of the component editor.

### Source Table (Object)

Select the Zendesk object to read data from. The connector exposes 21 objects:

| Object                    | Endpoint                                   | Incremental Load       |
| ------------------------- | ------------------------------------------ | ---------------------- |
| tickets                   | `/api/v2/tickets`                          | Supported (after-only) |
| users                     | `/api/v2/users`                            | Supported (after-only) |
| organizations             | `/api/v2/organizations`                    | Supported (after-only) |
| ticket\_events            | `/api/v2/incremental/ticket_events`        | Supported (after-only) |
| ticket\_metric\_events    | `/api/v2/incremental/ticket_metric_events` | Supported (after-only) |
| groups                    | `/api/v2/groups`                           | Not supported          |
| brands                    | `/api/v2/brands`                           | Not supported          |
| ticket\_fields            | `/api/v2/ticket_fields`                    | Not supported          |
| ticket\_forms             | `/api/v2/ticket_forms`                     | Not supported          |
| ticket\_metrics           | `/api/v2/ticket_metrics`                   | Not supported          |
| ticket\_activities        | `/api/v2/activities`                       | Not supported          |
| satisfaction\_ratings     | `/api/v2/satisfaction_ratings`             | Not supported          |
| tags                      | `/api/v2/tags`                             | Not supported          |
| user\_fields              | `/api/v2/user_fields`                      | Not supported          |
| organization\_fields      | `/api/v2/organization_fields`              | Not supported          |
| organization\_memberships | `/api/v2/organization_memberships`         | Not supported          |
| group\_memberships        | `/api/v2/group_memberships`                | Not supported          |
| macros                    | `/api/v2/macros`                           | Not supported          |
| automations               | `/api/v2/automations`                      | Not supported          |
| triggers                  | `/api/v2/triggers`                         | Not supported          |
| schedules                 | `/api/v2/business_hours/schedules`         | Not supported          |

<Tip>Click the **Refresh** button next to the dropdown to reload the list of available objects.</Tip>

<Note>`ticket_events` and `ticket_metric_events` are only available through Zendesk's incremental export endpoints. In Full Load mode they fetch the full history from epoch `0`.</Note>

### Load Type

Select how records are loaded on each pipeline run:

* **Full Load.** Fetches all records for the selected object on every run.
* **Incremental Load.** Fetches only records updated after a reference date. Use this for scheduled pipelines to avoid re-processing historical data.

Incremental Load is available for `tickets`, `users`, `organizations`, `ticket_events`, and `ticket_metric_events`. For other objects the UI shows **Incremental Load not supported** — Zendesk's REST endpoints for those objects don't accept a date filter.

### Incremental Load Settings

When **Incremental Load** is selected, the following options appear:

**Sync date field.** The date field used to filter records. The default per object:

| Object                 | Sync date field |
| ---------------------- | --------------- |
| tickets                | `updated_at`    |
| users                  | `updated_at`    |
| organizations          | `updated_at`    |
| ticket\_events         | `created_at`    |
| ticket\_metric\_events | `time`          |

**Load records.** Zendesk's incremental export API is **after-only** — the `start_time` query param has no `end_time` equivalent. Only `newer than` / `on or after` is available for Zendesk objects. The `older than` option is hidden in the Load Type dropdown.

**Reference date.** Choose the source of the date value:

* **Fixed Date.** Pick a specific calendar date.
* **Variable.** Use a system or custom variable. The recommended value for scheduled pipelines is `$package_last_successful_job_submission_timestamp`, which advances the start date after each successful run.

<Warning>Timestamps are sent to Zendesk as Unix seconds via the `start_time` query parameter. The connector handles the conversion internally — you pick a date or variable, not a Unix timestamp.</Warning>

### How Incremental Load Works per Object

* **tickets.** The connector appends `?start_time=<unix_seconds>` to `/api/v2/tickets`. No endpoint change.
* **users, organizations, ticket\_events, ticket\_metric\_events.** Zendesk doesn't accept a date filter on the regular list endpoints, so the connector swaps to `/api/v2/incremental/<object>/cursor.json` at job runtime. Pagination switches to Zendesk's cursor-based export format (`after_url` + `end_of_stream`). Schema detection still uses the regular endpoint — fields are identical between the two endpoints.

## Source Schema

After configuring the source properties, the **Schema** section (Step 03) displays the available fields with their detected data types. Use the field selector to choose which columns to include in your pipeline. You can rename fields with aliases and change data types as needed.

Nested JSON objects in Zendesk responses are flattened into individual columns with underscore-separated names.
