> ## 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, so only `newer than ( > )` 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:

* **Last successful run.** Track records since the last successful run of this pipeline. Selecting this option auto-fills `incremental_load_date` with the `$_PACKAGE_LAST_SUCCESSFUL_JOB_SUBMISSION_TIMESTAMP` system variable, so each scheduled run picks up only what changed since the previous run finished. Recommended for scheduled pipelines.
* **Fixed Date.** Pick a specific calendar date. Use this for a one-time historical backfill.
* **Variable.** Use a custom package variable. Select this when you need to drive the start date from a value other than the last successful run timestamp.

<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.
