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

> Node: Zendesk Trigger (`zendesk_trigger`) · Webhook trigger · v1
> Category: Communication · Credentials: Zendesk (`zendeskApi`)
> Updated: 2026-08-16

# Zendesk Trigger

> Triggers on Zendesk Support ticket events based on configurable conditions

## Overview

Receives webhook notifications from Zendesk Support when ticket conditions are met. Zendesk triggers are condition-based: you define conditions on ticket fields (status, priority, type, group, assignee) using operators (is, is_not, changed, not_changed, greater_than, less_than, etc.) with AND/OR logic. When conditions match, Zendesk sends a POST with the configured ticket fields as a JSON payload. The webhook payload is customizable -- by default only ticket.id is included, but you can select from 40+ placeholder fields covering ticket, requester, assignee, organization, current user, and satisfaction data. Supports HMAC-SHA256 signature verification via X-Zendesk-Webhook-Signature header. Useful for automating ticket routing, escalation, SLA monitoring, customer notifications, CRM sync, and support analytics workflows.

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

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

## Node Type

**Trigger** — webhook (receives incoming HTTP callbacks)

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | None (trigger node) |
| Output | `Output` |

## Credentials

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

### Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Authentication | `options` | No | `apiToken` | Authentication method to use for Zendesk API calls. |
| | | | | Options: `apiToken` |
| Service | `options` | Yes | `support` | The Zendesk service to receive events from. |
| | | | | Options: `support` |
| Conditions | `fixedCollection` | No | `{}` | The conditions that must be met for the trigger to fire. Use "All" for AND logic and "Any" for OR logic. Each condition is added under the `all` key or the `any` key, and both groups can be used together. _(shown when Service is `support`)_ |
| — Resource | `options` | No | `ticket` | The Zendesk resource the condition applies to. |
| | | | | Options: `ticket` |
| — Field | `options` | No | `status` | The ticket field to evaluate. _(shown when Resource is `ticket`)_ |
| | | | | Options: `assignee`, `group`, `priority`, `status`, `type` |
| — Operation | `options` | No | `is` | The comparison operation for the condition. |
| | | | | Options: `changed`, `value_previous` (changed from), `value` (changed to), `greater_than`, `is`, `is_not`, `less_than`, `not_changed`, `not_value_previous` (not changed from), `not_value` (not changed to) |
| — Value | `string` | No | — | The value to compare against. For status: new, open, pending, solved, closed. For priority: low, normal, high, urgent. For type: question, incident, problem, task. For group/assignee: enter the ID. |
| Options | `collection` | No | `{}` | Additional options for the trigger. _(shown when Service is `support`)_ |
| — Fields | `multiOptions` | No | `[]` | Which ticket data fields to include in the webhook payload. If none selected, only ticket.id is sent. |
| | | | | Options: `ticket.title`, `ticket.description`, `ticket.url`, `ticket.id`, `ticket.external_id`, `ticket.via`, `ticket.status`, `ticket.priority`, `ticket.ticket_type`, `ticket.group.name`, `ticket.brand.name`, `ticket.due_date`, `ticket.account`, `ticket.assignee.email`, `ticket.assignee.name`, `ticket.assignee.first_name`, `ticket.assignee.last_name`, `ticket.requester.name`, `ticket.requester.first_name`, `ticket.requester.last_name`, `ticket.requester.email`, `ticket.requester.language`, `ticket.requester.phone`, `ticket.requester.external_id`, `ticket.requester.requester_field`, `ticket.requester.details`, `ticket.organization.name`, `ticket.organization.external_id`, `ticket.organization.details`, `ticket.organization.notes`, `ticket.ccs`, `ticket.cc_names`, `ticket.tags`, `ticket.current_holiday_name`, `current_user.name`, `current_user.first_name`, `current_user.email`, `current_user.organization.name`, `current_user.organization.details`, `current_user.organization.notes`, `current_user.language`, `current_user.external_id`, `current_user.notes`, `satisfaction.current_rating`, `satisfaction.current_comment` |

## Output Data

Each accepted notification produces one output item. Zendesk sends the placeholder fields you selected under **Fields** as plain key-value pairs, so the item carries one key per selected field — for example `ticket.id`, `ticket.status`, `ticket.requester.email`. With no fields selected, only `ticket.id` arrives.

These fields are added on top:

- `_trigger` — always `zendesk_webhook`
- `_timestamp` — ISO 8601 timestamp of when the notification was received
- `_webhookEvent` — always `ticket_condition_met`

Because the field keys contain dots, address them with bracket notation downstream, e.g. `{{ $json["ticket.requester.email"] }}`.

## Usage Examples

- Start a workflow when a Zendesk ticket status changes to solved
- Trigger an escalation when a ticket priority is set to urgent
- Notify a Slack channel when a new ticket is assigned to a specific group
- Sync ticket updates to a CRM when the assignee changes
- Send a follow-up email when a ticket is closed

## Example Configuration

The simplest configuration — fires on every ticket event, sending only `ticket.id`:

```json
{
  "type": "zendesk_trigger",
  "parameters": {
    "service": "support"
  }
}
```

A single condition on ticket status:

```json
{
  "id": "zendesk-trigger",
  "type": "zendesk_trigger",
  "typeVersion": 1,
  "position": [0, 0],
  "parameters": {
    "service": "support",
    "authentication": "apiToken",
    "conditions": {
      "all": [
        {
          "resource": "ticket",
          "field": "status",
          "operation": "is",
          "value": "open"
        }
      ]
    }
  }
}
```

Multiple AND conditions, with a custom payload:

```json
{
  "id": "zendesk-trigger",
  "type": "zendesk_trigger",
  "typeVersion": 1,
  "position": [0, 0],
  "parameters": {
    "service": "support",
    "authentication": "apiToken",
    "conditions": {
      "all": [
        {
          "resource": "ticket",
          "field": "status",
          "operation": "is",
          "value": "new"
        },
        {
          "resource": "ticket",
          "field": "priority",
          "operation": "is",
          "value": "urgent"
        }
      ]
    },
    "options": {
      "fields": ["ticket.id", "ticket.title", "ticket.description"]
    }
  }
}
```

OR logic — fire when the priority is either urgent or high:

```json
{
  "id": "zendesk-trigger",
  "type": "zendesk_trigger",
  "typeVersion": 1,
  "position": [0, 0],
  "parameters": {
    "service": "support",
    "authentication": "apiToken",
    "conditions": {
      "any": [
        {
          "resource": "ticket",
          "field": "priority",
          "operation": "is",
          "value": "urgent"
        },
        {
          "resource": "ticket",
          "field": "priority",
          "operation": "is",
          "value": "high"
        }
      ]
    }
  }
}
```

AND and OR combined — new tickets that are urgent or high priority:

```json
{
  "id": "zendesk-trigger",
  "type": "zendesk_trigger",
  "typeVersion": 1,
  "position": [0, 0],
  "parameters": {
    "service": "support",
    "authentication": "apiToken",
    "conditions": {
      "all": [
        {
          "resource": "ticket",
          "field": "status",
          "operation": "is",
          "value": "new"
        }
      ],
      "any": [
        {
          "resource": "ticket",
          "field": "priority",
          "operation": "is",
          "value": "urgent"
        },
        {
          "resource": "ticket",
          "field": "priority",
          "operation": "is",
          "value": "high"
        }
      ]
    },
    "options": {
      "fields": [
        "ticket.id",
        "ticket.title",
        "ticket.requester.email",
        "ticket.assignee.email"
      ]
    }
  }
}
```

### Trigger Behavior

- **Activation:** When the workflow is activated, a webhook endpoint is registered with the service.
- **Deactivation:** The webhook is automatically unregistered when the workflow is deactivated.
- **Payload:** The incoming webhook payload is parsed and output as workflow items.
- **Verification:** Supports signature verification where applicable.

## Tips

Entry point that fires when Zendesk sends a webhook for ticket events matching your configured conditions. Set up conditions using ALL (AND) and ANY (OR) logic on ticket fields like status, priority, type, group, and assignee. Choose which ticket data fields to include in the payload (title, description, requester info, assignee info, etc.). Supports HMAC-SHA256 signature verification for secure webhook delivery.

### Important Notes

- The `conditions` parameter groups its entries under the `all` and/or `any` keys; `all` is AND logic and `any` is OR logic
- The `options` parameter is a flat object — put `fields` directly inside it
- Both `conditions` and `options` are only available when `service` is set to `"support"`
- Authentication is `"apiToken"`; OAuth2 is not currently supported
- The `fields` array controls which ticket fields are included in webhook payloads; values must be chosen from the 45 supported field options listed above (e.g., `"ticket.id"`, `"ticket.title"`, `"ticket.requester.email"`)