<!-- BusyBot node reference — https://busybot.net/tools/zendesk/ -->

> Node: Zendesk (`zendesk`) · Action · v1
> Category: Communication · Credentials: Zendesk (`zendeskApi`)
> Updated: 2026-08-16

# Zendesk

> Manage Zendesk Support tickets, ticket fields, users, and organizations.

## Overview

Zendesk is a customer service platform. This tool provides full CRUD operations for tickets (including suspended tickets), ticket fields, users, and organizations. It supports search, filtering, pagination, custom fields, internal notes, and public replies. Authentication is via Zendesk API token using Basic Auth with email/token credentials.

**Category:** Communication  
**Tool Name:** `zendesk`  
**Version:** 1

**Appearance:** Icon: `si-zendesk` | Color: `#03363D`

## Node Type

**Action** — processes input items and produces output

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | `Input` |
| Output | `Output`, `Error` |

## Credentials

This tool requires **Zendesk** credentials.
See the [Credentials Guide](https://busybot.net/credentials/zendesk-api/) for setup instructions.

### Resources

| Resource | Value |
|----------|-------|
| Ticket | `ticket` |
| Ticket Field | `ticketField` |
| User | `user` |
| Organization | `organization` |

Tickets are the means through which your end users communicate with agents in Zendesk Support. Ticket Field manages system and custom ticket fields. User and Organization manage those records.

### Operations

| Operation | Value | Description |
|-----------|-------|-------------|
| Create | `create` | Create a ticket |
| Delete | `delete` | Delete a ticket |
| Get | `get` | Get a ticket |
| Get Many | `getAll` | Get many tickets |
| Recover | `recover` | Recover a suspended ticket |
| Update | `update` | Update a ticket |
| Get Organizations | `getOrganizations` | Get a user's organizations |
| Get Related Data | `getRelatedData` | Get data related to the user |
| Search | `search` | Search users |
| Count | `count` | Count organizations |

`recover` is Ticket-only. `search`, `getOrganizations` and the user form of `getRelatedData` are User-only. `count` and the organization form of `getRelatedData` are Organization-only. Ticket Field offers only `get` and `getAll`; User and Organization also offer `create`, `delete`, `get`, `getAll` and `update` against their own records.

### Parameters

`Organization: Count` takes no parameters of its own — see All Operations.

#### Ticket: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Description | `string` | Yes | — | The first comment on the ticket. Supports expressions like {{ $json.body }}. |
| JSON Parameters | `boolean` | No | `false` | Whether to provide additional fields as raw JSON. |
| Additional Fields | `collection` | No | `{}` | Structured fields to set on the new ticket. _(shown when JSON Parameters is `false`)_ |
| — Brand ID | `number` | No | `0` | Brand ID (for multi-brand Zendesk). Leave 0 to use default brand. |
| — Custom Fields | `fixedCollection` | No | `{}` | Values for custom ticket fields. |
| — — Field ID | `options` | No | — | Custom field ID. Find in Zendesk Admin > Manage > Ticket Fields. Loaded from your Zendesk instance. |
| — — Value | `string` | No | — | Custom field value. |
| — External ID | `string` | No | — | An ID you can use to link Zendesk Support tickets to local records. |
| — Group ID | `string` | No | — | The group this ticket is assigned to. Provide the group ID. Find in Zendesk Admin > People > Groups. |
| — Recipient | `string` | No | — | The original recipient email address of the ticket. |
| — Status | `options` | No | — | The state of the ticket. |
| | | | | Options: `closed`, `new`, `hold` (on-hold), `open`, `pending`, `solved` |
| — Subject | `string` | No | — | The value of the subject field for this ticket. |
| — Tags | `string` | No | — | Comma-separated list of tags applied to this ticket. |
| — Type | `options` | No | — | The type of this ticket. |
| | | | | Options: `question`, `incident`, `problem`, `task` |
| Additional Fields (JSON) | `json` | No | — | Raw JSON object of additional fields to set on the ticket. See https://developer.zendesk.com/rest_api/docs/support/tickets _(shown when JSON Parameters is `true`)_ |

#### Ticket: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Ticket ID | `string` | Yes | — | The ID of the ticket to update. Supports expressions. |
| JSON Parameters | `boolean` | No | `false` | Whether to provide update fields as raw JSON. |
| Update Fields | `collection` | No | `{}` | Structured fields to change on the ticket. _(shown when JSON Parameters is `false`)_ |
| — Assignee Email | `string` | No | — | The email address of the assignee. |
| — Brand ID | `number` | No | `0` | Brand ID (for multi-brand Zendesk). Leave 0 to use default brand. |
| — Custom Fields | `fixedCollection` | No | `{}` | Values for custom ticket fields. |
| — — Field ID | `options` | No | — | Custom field ID. Loaded from your Zendesk instance. |
| — — Value | `string` | No | — | Custom field value. |
| — External ID | `string` | No | — | An ID you can use to link Zendesk Support tickets to local records. |
| — Group ID | `string` | No | — | The group this ticket is assigned to. Provide the group ID. |
| — Internal Note | `string` | No | — | Internal ticket note (accepts HTML). Creates a private comment. |
| — Public Reply | `string` | No | — | Public ticket reply. Creates a public comment. |
| — Recipient | `string` | No | — | The original recipient email address of the ticket. |
| — Status | `options` | No | — | The state of the ticket. |
| | | | | Options: `closed`, `new`, `hold` (on-hold), `open`, `pending`, `solved` |
| — Subject | `string` | No | — | The value of the subject field for this ticket. |
| — Tags | `string` | No | — | Comma-separated list of tags applied to this ticket. |
| — Type | `options` | No | — | The type of this ticket. |
| | | | | Options: `question`, `incident`, `problem`, `task` |
| Update Fields (JSON) | `json` | No | — | Raw JSON object of fields to update on the ticket. _(shown when JSON Parameters is `true`)_ |

#### Ticket: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Ticket Type | `options` | Yes | `regular` | Whether to operate on regular or suspended tickets. |
| | | | | Options: `regular`, `suspended` |
| Ticket ID | `string` | Yes | — | The ID of the ticket to retrieve. Supports expressions. |

#### Ticket: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Ticket Type | `options` | Yes | `regular` | Whether to operate on regular or suspended tickets. |
| | | | | Options: `regular`, `suspended` |
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `100` | Max number of results to return. _(shown when Return All is `false`)_ |
| Options | `collection` | No | `{}` | Filtering and sorting for the ticket list. _(hidden when Ticket Type is `suspended`)_ |
| — Group | `string` | No | — | Filter by group name or ID. Only for regular tickets. |
| — Query | `string` | No | — | Zendesk search query syntax to filter tickets. Only for regular tickets. |
| — Sort By | `options` | No | `updated_at` | Sort results by this field. |
| | | | | Options: `created_at`, `priority`, `status`, `ticket_type`, `updated_at` |
| — Sort Order | `options` | No | `asc` | Sort direction. |
| | | | | Options: `asc`, `desc` |
| — Status | `options` | No | — | Filter tickets by status. Only for regular tickets. |
| | | | | Options: `closed`, `new`, `hold` (on-hold), `open`, `pending`, `solved` |

#### Ticket: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Ticket Type | `options` | Yes | `regular` | Whether to operate on regular or suspended tickets. |
| | | | | Options: `regular`, `suspended` |
| Ticket ID | `string` | Yes | — | The ID of the ticket to delete. Supports expressions. |

#### Ticket: Recover

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Suspended Ticket ID | `string` | Yes | — | The ID of the suspended ticket to recover. Supports expressions. |

#### Ticket Field: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Ticket Field ID | `string` | Yes | — | The ID of the ticket field to retrieve. Supports expressions. |

#### Ticket Field: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `100` | Max number of results to return. _(shown when Return All is `false`)_ |

#### User: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Name | `string` | Yes | — | The user's name. Supports expressions. |
| Additional Fields | `collection` | No | `{}` | Optional profile values for the new user. |
| — Alias | `string` | No | — | An alias displayed to end users. |
| — Custom Role ID | `number` | No | `0` | A custom role if the user is an agent on the Enterprise plan. |
| — Details | `string` | No | — | Any details you want to store about the user, such as an address. |
| — Email | `string` | No | — | The user's primary email address. |
| — External ID | `string` | No | — | A unique identifier from another system. |
| — Locale | `string` | No | — | The user's locale (e.g. en-us). Find available locales via Zendesk API: GET /api/v2/locales. |
| — Moderator | `boolean` | No | `false` | Whether the user has forum moderation capabilities. |
| — Notes | `string` | No | — | Any notes you want to store about the user. |
| — Only Private Comments | `boolean` | No | `false` | Whether the user can only create private comments. |
| — Organization ID | `string` | No | — | The ID of the user's organization. Find via Zendesk Admin > People > Organizations. |
| — Phone | `string` | No | — | The user's primary phone number. |
| — Report CSV | `boolean` | No | `false` | Whether the user can access the CSV report. |
| — Restricted Agent | `boolean` | No | `false` | Whether the agent has any restrictions. |
| — Role | `options` | No | — | The user's role. |
| | | | | Options: `end-user`, `agent`, `admin` |
| — Signature | `string` | No | — | The user's signature. Only agents and admins can have signatures. |
| — Suspended | `boolean` | No | `false` | Whether the agent is suspended. |
| — Tags | `string` | No | — | Comma-separated list of tags applied to this user. |
| — Ticket Restriction | `options` | No | — | Specifies which tickets the user has access to. |
| | | | | Options: `organization`, `groups`, `assigned`, `requested` |
| — Timezone | `string` | No | — | The user's time zone. |
| — User Fields | `fixedCollection` | No | `{}` | Values of custom fields in the user's profile. |
| — — Field Key | `options` | No | — | Custom user field key. Find in Zendesk Admin > Manage > User Fields. Loaded from your Zendesk instance. |
| — — Value | `string` | No | — | Value of the field. |
| — Verified | `boolean` | No | `false` | Whether the user's primary identity is verified. |

#### User: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| User ID | `string` | Yes | — | The ID of the user to update. Supports expressions. |
| Update Fields | `collection` | No | `{}` | Values to change on the user. |
| — Alias | `string` | No | — | An alias displayed to end users. |
| — Custom Role ID | `number` | No | `0` | A custom role if the user is an agent on the Enterprise plan. |
| — Details | `string` | No | — | Any details you want to store about the user. |
| — Email | `string` | No | — | The user's primary email address. |
| — External ID | `string` | No | — | A unique identifier from another system. |
| — Locale | `string` | No | — | The user's locale (e.g. en-us). |
| — Moderator | `boolean` | No | `false` | Whether the user has forum moderation capabilities. |
| — Name | `string` | No | — | The user's name. |
| — Notes | `string` | No | — | Any notes you want to store about the user. |
| — Only Private Comments | `boolean` | No | `false` | Whether the user can only create private comments. |
| — Organization ID | `string` | No | — | The ID of the user's organization. |
| — Phone | `string` | No | — | The user's primary phone number. |
| — Report CSV | `boolean` | No | `false` | Whether the user can access the CSV report. |
| — Restricted Agent | `boolean` | No | `false` | Whether the agent has any restrictions. |
| — Role | `options` | No | — | The user's role. |
| | | | | Options: `end-user`, `agent`, `admin` |
| — Signature | `string` | No | — | The user's signature. |
| — Suspended | `boolean` | No | `false` | Whether the agent is suspended. |
| — Tags | `string` | No | — | Comma-separated list of tags applied to this user. |
| — Ticket Restriction | `options` | No | — | Specifies which tickets the user has access to. |
| | | | | Options: `organization`, `groups`, `assigned`, `requested` |
| — Timezone | `string` | No | — | The user's time zone. |
| — User Fields | `fixedCollection` | No | `{}` | Values of custom fields in the user's profile. |
| — — Field Key | `options` | No | — | Custom user field key. Loaded from your Zendesk instance. |
| — — Value | `string` | No | — | Value of the field. |
| — Verified | `boolean` | No | `false` | Whether the user's primary identity is verified. |

#### User: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| User ID | `string` | Yes | — | The ID of the user to retrieve. Supports expressions. |

#### User: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `100` | Max number of results to return. _(shown when Return All is `false`)_ |
| Filters | `collection` | No | `{}` | Narrows the user list. |
| — Roles | `multiOptions` | No | `[]` | Filter users by role. |
| | | | | Options: `end-user`, `agent`, `admin` |

#### User: Search

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `100` | Max number of results to return. _(shown when Return All is `false`)_ |
| Filters | `collection` | No | `{}` | What to search for. |
| — Query | `string` | No | — | Search query string. |
| — External ID | `string` | No | — | Search by external ID. |

#### User: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| User ID | `string` | Yes | — | The ID of the user to delete. Supports expressions. |

#### User: Get Related Data

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| User ID | `string` | Yes | — | The ID of the user to get related data for. Supports expressions. |

#### User: Get Organizations

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| User ID | `string` | Yes | — | The ID of the user to get organizations for. Supports expressions. |

#### Organization: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Name | `string` | Yes | — | The name of the organization. Supports expressions. |
| Additional Fields | `collection` | No | `{}` | Optional values for the new organization. |
| — Details | `string` | No | — | Details about the organization, such as the address. |
| — Domain Names | `string` | No | — | Comma-separated domain names associated with this organization. |
| — Notes | `string` | No | — | Notes about the organization. |
| — Organization Fields | `fixedCollection` | No | `{}` | Values of custom fields in the organization's profile. |
| — — Field Key | `options` | No | — | Organization field key. Find in Zendesk Admin > Manage > Organization Fields. Loaded from your Zendesk instance. |
| — — Value | `string` | No | — | Value of the field. |
| — Tags | `string` | No | — | Comma-separated list of tags applied to this organization. |

#### Organization: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Organization ID | `string` | Yes | — | The ID of the organization to update. Supports expressions. |
| Update Fields | `collection` | No | `{}` | Values to change on the organization. |
| — Details | `string` | No | — | Details about the organization. |
| — Domain Names | `string` | No | — | Comma-separated domain names associated with this organization. |
| — Name | `string` | No | — | The name of the organization. |
| — Notes | `string` | No | — | Notes about the organization. |
| — Organization Fields | `fixedCollection` | No | `{}` | Values of custom fields in the organization's profile. |
| — — Field Key | `options` | No | — | Organization field key. Loaded from your Zendesk instance. |
| — — Value | `string` | No | — | Value of the field. |
| — Tags | `string` | No | — | Comma-separated list of tags applied to this organization. |

#### Organization: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Organization ID | `string` | Yes | — | The ID of the organization to retrieve. Supports expressions. |

#### Organization: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `100` | Max number of results to return. _(shown when Return All is `false`)_ |

#### Organization: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Organization ID | `string` | Yes | — | The ID of the organization to delete. Supports expressions. |

#### Organization: Get Related Data

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Organization ID | `string` | Yes | — | The ID of the organization to get related data for. Supports expressions. |

#### All Operations

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Max Concurrency | `number` | No | `10` | Maximum number of items to process concurrently. |

## Output Data

Zendesk wraps each record in a named envelope (`ticket`, `user`, `organization`, …). The node unwraps it, so the record's own fields land on the top level of the item JSON. Anything already on the item passes through, and binary data is forwarded unchanged.

| Operation | Output |
|-----------|--------|
| Ticket `create`, `get`, `update` | One item carrying the ticket. `get` on a suspended ticket falls back to the suspended-ticket record |
| Ticket `recover` | One item carrying the recovered ticket |
| Ticket `delete`, User `delete`, Organization `delete` | One item carrying `success: true` |
| Ticket `getAll`, Ticket Field `getAll`, User `getAll`, User `search`, Organization `getAll` | **Fans out** — one output item per record |
| Ticket Field `get` | One item carrying the ticket field |
| User `create`, `get`, `update` | One item carrying the user |
| User `getRelatedData` | One item carrying the `user_related` counts |
| User `getOrganizations` | **Fans out** — one item per organization the user belongs to |
| Organization `create`, `get`, `update` | One item carrying the organization |
| Organization `getRelatedData` | One item carrying the `organization_related` counts |
| Organization `count` | One item carrying the `count` object |

With **Return All** on, the node follows Zendesk's `next_page` links until the list is exhausted.

## Usage Examples

- Create a Zendesk support ticket
- Update ticket status to solved
- List all open tickets
- Create a new user in Zendesk
- Search users by email
- Create an organization
- Get organization related data
- Get all ticket fields

## Example Configuration

Create a ticket with a subject, status and custom field:

```json
{
  "type": "zendesk",
  "parameters": {
    "resource": "ticket",
    "operation": "create",
    "description": "Customer is experiencing login issues",
    "jsonParameters": false,
    "additionalFields": {
      "subject": "Login Problem - Urgent",
      "status": "open",
      "type": "problem",
      "tags": "login,urgent,customer-support",
      "customFieldsUi": {
        "customFieldsValues": [
          { "id": "12345", "value": "High Priority" }
        ]
      }
    }
  }
}
```

Solve a ticket with a public reply:

```json
{
  "type": "zendesk",
  "parameters": {
    "resource": "ticket",
    "operation": "update",
    "id": "67890",
    "jsonParameters": false,
    "updateFields": {
      "status": "solved",
      "publicReply": "Issue has been resolved. Please let us know if you experience any further problems.",
      "assigneeEmail": "agent@company.com"
    }
  }
}
```

Use raw JSON for a complex update:

```json
{
  "type": "zendesk",
  "parameters": {
    "resource": "ticket",
    "operation": "update",
    "id": "12345",
    "jsonParameters": true,
    "updateFieldsJson": "{\"status\":\"solved\",\"custom_fields\":[{\"id\":123,\"value\":\"resolved\"}],\"comment\":{\"body\":\"Ticket resolved via API\",\"public\":false}}"
  }
}
```

List open tickets, newest first:

```json
{
  "type": "zendesk",
  "parameters": {
    "resource": "ticket",
    "operation": "getAll",
    "ticketType": "regular",
    "returnAll": false,
    "limit": 50,
    "options": {
      "status": "open",
      "sortBy": "updated_at",
      "sortOrder": "desc",
      "query": "priority:high"
    }
  }
}
```

Create a user with a custom user field:

```json
{
  "type": "zendesk",
  "parameters": {
    "resource": "user",
    "operation": "create",
    "name": "John Doe",
    "additionalFields": {
      "email": "john.doe@example.com",
      "role": "end-user",
      "organization_id": "12345",
      "phone": "+1-555-0123",
      "time_zone": "America/New_York",
      "verified": true,
      "userFieldsUi": {
        "userFieldValues": [
          { "field": "department", "value": "Engineering" }
        ]
      }
    }
  }
}
```

Search users:

```json
{
  "type": "zendesk",
  "parameters": {
    "resource": "user",
    "operation": "search",
    "returnAll": false,
    "limit": 25,
    "filters": {
      "query": "role:agent status:active",
      "external_id": "EMP001"
    }
  }
}
```

Create an organization:

```json
{
  "type": "zendesk",
  "parameters": {
    "resource": "organization",
    "operation": "create",
    "name": "Acme Corporation",
    "additionalFields": {
      "domain_names": "acme.com,acme.org",
      "details": "Large enterprise customer",
      "notes": "VIP customer - priority support",
      "tags": "enterprise,vip,priority",
      "organizationFieldsUi": {
        "organizationFieldValues": [
          { "field": "industry", "value": "Technology" }
        ]
      }
    }
  }
}
```

Read an organization's related counts:

```json
{
  "type": "zendesk",
  "parameters": {
    "resource": "organization",
    "operation": "getRelatedData",
    "id": "98765"
  }
}
```

Fetch every pending ticket for downstream processing — this node emits one item per ticket:

```json
{
  "type": "zendesk",
  "parameters": {
    "resource": "ticket",
    "operation": "getAll",
    "ticketType": "regular",
    "returnAll": true,
    "options": {
      "status": "pending",
      "sortBy": "created_at",
      "sortOrder": "asc"
    }
  }
}
```

Update a ticket from the item flowing in:

```json
{
  "type": "zendesk",
  "parameters": {
    "resource": "ticket",
    "operation": "update",
    "id": "{{ $json.id }}",
    "jsonParameters": false,
    "updateFields": {
      "internalNote": "Automated triage note for {{ $json.subject }}"
    }
  }
}
```

### Error Handling

| Mode | Behavior |
|------|----------|
| **stop** | Halts workflow on first error |
| **continue** | Skips failed items, passes successful ones through |
| **errorPort** | Routes failed items to Error output port |

## Tips

Manage Zendesk Support tickets, ticket fields, users, and organizations via the Zendesk API. Use for customer service workflow automation.

### Record IDs

Every resource's record ID is written as `id` in a JSON config — Ticket ID, Suspended Ticket ID, User ID and Organization ID all map to the same `id` parameter. The exception is **Ticket Field ID**, which is written as `ticketFieldId`.

### JSON vs Structured Parameters

Turn **JSON Parameters** on for complex or dynamic ticket updates — raw JSON reaches parts of the ticket payload the structured fields do not, such as nested `comment` objects and arrays of `custom_fields`. Leave it off for everyday field-by-field edits.

### Error Handling Considerations

- Always validate ticket/user/organization IDs exist before update/delete operations
- Use the appropriate **Ticket Type** when working with suspended tickets — the Options collection is hidden for suspended tickets because those filters apply to regular tickets only
- Consider pagination with **Return All** off for large datasets
- Custom fields require proper field IDs from your Zendesk instance

### Rate Limits

When Zendesk answers 429 or 503, the node waits and retries up to three times, honouring the `Retry-After` header (seconds or HTTP-date) and capping the wait at 60 seconds; without a header it backs off 1s, 2s, then 4s.