Workflow blocks
Zendesk
Work with Zendesk tickets, users, organizations, macros, custom objects, and conversations
zendesk — Work with Zendesk tickets, users, organizations, macros, custom objects, and conversations.
Where it appears
The Zendesk block lives in the Integrations group of the Workflow Builder. Connect the Zendesk integration before adding it.
Fields
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
resource | select | Yes | ticket | Which Zendesk resource to work with. Options: ticket, comment, user, organization, group, agent, tag, macro, custom-object, custom-object-record, conversation. |
operation | select | Yes | — | Which action to perform on the selected resource. |
ticketId | text (supports references) | Yes | — | Numeric Zendesk ticket ID. Use a literal number or <StepName.field> to reference an ID from a previous step. |
limit | number | No | 50 | Maximum number of comments to return, most recent first. Defaults to 50. |
subject | text (supports references) | Yes | — | Subject line for the new Zendesk ticket. Use literal text or <StepName.field> to reference a value from a previous step. |
description | text (multi-line, supports references) | Yes | — | Body of the new ticket, used as the first comment. Use literal text or <StepName.field> to reference a value from a previous step. |
actions | actions | No | — | Optional ticket fields to set when creating the ticket. Each action sets one property; requester, priority, type, and tags can each be added once. |
addComment | text (multi-line, supports references) | No | — | Markdown is rendered to Zendesk HTML: bold, lists (- ), blockquotes (> ), links ([label](url)). Single newlines preserved. |
isPublic | select | No | true | Whether the closing message is posted as a public reply visible to the customer or as an internal note visible to agents only. Options: true, false. |
priority | select | Yes | — | Priority level to apply. Urgent triggers SLA breach notifications; use it for customer-impacting issues requiring immediate attention. Options: low, normal, high, urgent. |
ticketType | select | Yes | — | Zendesk ticket type to apply. Incidents can be linked to a Problem; question and task are standalone classifications. Options: problem, incident, question, task. |
query | text (supports references) | Yes | — | Zendesk search query using the Search API syntax (e.g. status:open assignee:me). Use literal text or <StepName.field> to inject a value from a previous step. |
sortBy | select | No | — | Field used to sort the matching tickets. Options: created_at, updated_at, priority, status. |
sortOrder | select | No | — | Direction to sort results: ascending or descending by the selected sort field. Options: asc, desc. |
assigneeId | text (supports references) | No | — | Numeric Zendesk user ID of the agent to assign the ticket to. Use a literal ID or <StepName.field> from a previous step. |
groupId | text (supports references) | No | — | Numeric Zendesk group ID to route the ticket to. Use a literal ID or <StepName.field> from a previous step. |
comment | text (multi-line, supports references) | Yes | — | Markdown is rendered to Zendesk HTML: bold, lists (- ), blockquotes (> ), links ([label](url)). Single newlines preserved as line breaks. Avoid # headers — use bold instead. |
public | select | No | true | Whether the comment is sent as a public reply visible to the customer or as an internal note visible to agents only. Options: true, false. |
authorId | select | No | — | Pick a Zendesk agent/admin, choose Current User (assist workflows only), or reference an upstream variable. Leave blank to inherit the brand or organization default. |
userId | text (supports references) | Yes | — | Numeric Zendesk user ID to fetch. Use a literal number or <StepName.field> to reference an ID from a previous step (e.g. a ticket's requester_id). |
name | text (supports references) | Yes | — | Display name for the new Zendesk user. Use literal text or <StepName.field> to reference a value from a previous step. |
email | text (supports references) | Yes | — | Primary email address for the new user; used as the identity for matching. Accepts literal text or <StepName.field>. |
phone | text (supports references) | No | — | Optional phone number to attach to the user. Accepts literal text or <StepName.field>. |
role | select | No | — | Zendesk role for the new user. End users are customers; agents and admins are staff with access to the agent interface. Options: end-user, agent, admin. |
tags | text (supports references) | No | — | Optional comma-separated tags to apply to the new user. Accepts literal text or <StepName.field>. |
organizationId | text (supports references) | Yes | — | Numeric Zendesk organization ID to fetch. Use a literal number or <StepName.field> to reference an ID from a previous step (e.g. a user's organization_id). |
macroId | text (supports references) | Yes | — | Numeric Zendesk macro ID whose actions should be applied to the ticket. Use a literal ID or <StepName.field>. |
customObjectKey | text (supports references) | Yes | — | The key of the Zendesk custom object type to read from (e.g. home_delivery_order). Accepts literal text or <StepName.field>. |
recordId | text (supports references) | Yes | — | ID of the custom object record to fetch. Use a literal ID or <StepName.field> to reference an ID from a previous step. |
sort | text (supports references) | No | — | Optional sort field; prefix with - for descending order (e.g. -updated_at). Accepts literal text or <StepName.field>. |
pageSize | text (supports references) | No | — | Optional number of records to return per page. Accepts a literal number or <StepName.field>. |
externalId | text (supports references) | No | — | Optional external identifier to associate with the record for cross-system matching. Accepts literal text or <StepName.field>. |
customFields | code | No | — | JSON object of custom object field keys to values for the new record (e.g. { "field_key": "value" }). |
fieldId | text (supports references) | Yes | — | Numeric ID of the lookup-relationship ticket field to set. Use a literal ID or <StepName.field>. |
lookupValue | text (supports references) | Yes | — | Identifies the custom object record to link: a record ID, or name:VALUE / external_id:VALUE to match by name or external ID. Accepts literal text or <StepName.field>. |
conversationId | text (supports references) | Yes | — | Sunshine Conversations conversation ID to post the message to. Use a literal ID or <StepName.field> from a previous step. |
text | text (multi-line, supports references) | Yes | — | Business-authored message text delivered to the customer on the messaging channel. Use literal text or <StepName.field> to reference upstream content. |
metadata | code | No | — | Optional metadata to attach to the passControl event. |
Inputs and outputs
Inputs are the configurable fields above. The block produces these outputs:
Outputs
Reference an output downstream with <Zendesk.field>.
| Name | Type | Description |
|---|---|---|
success | boolean | Success status |
ticket | json | Zendesk ticket object (object — fields: id, subject, description, status, priority, type, tags, requester_id, assignee_id, group_id, custom_fields, created_at, updated_at) |
error | string | Error message if failed |
context | json | Complete ticket context (object — fields: ticket, conversation, customer, assignee, organization) |
comments | array | Comments array |
count | number | Number of comments |
tickets | array | Array of matching tickets |
user | json | User object |
organization | json | Organization object |
groups | array | Array of groups |
agents | array | Array of agents |
macros | array | Array of macros |
customObjects | array | List of custom object definitions |
record | json | Custom object record (object — fields: id, name, external_id, custom_object_key, custom_object_fields, created_at, updated_at) |
records | array | Matching custom object records |
message | json | Posted message object returned by the API |
conversation | json | Conversation object (object — fields: id, type, activeSwitchboardIntegration) |
Example
A minimal configuration for this block:
{
"type": "zendesk",
"config": {
"resource": "ticket",
"operation": "...",
"ticketId": "<PreviousStep.field>",
"limit": 50,
"subject": "<PreviousStep.field>",
"description": "<PreviousStep.field>",
"isPublic": "true",
"priority": "low",
"ticketType": "problem",
"query": "<PreviousStep.field>",
"comment": "<PreviousStep.field>",
"public": "true",
"userId": "<PreviousStep.field>",
"name": "<PreviousStep.field>",
"email": "<PreviousStep.field>",
"organizationId": "<PreviousStep.field>",
"macroId": "<PreviousStep.field>",
"customObjectKey": "<PreviousStep.field>",
"recordId": "<PreviousStep.field>",
"fieldId": "<PreviousStep.field>",
"lookupValue": "<PreviousStep.field>",
"conversationId": "<PreviousStep.field>",
"text": "<PreviousStep.field>"
}
}Limits and failure modes
- Requires a connected Zendesk integration. Calls fail if that integration is disconnected or its authorization has expired.
- Required fields (
resource,operation,ticketId,subject,description,priority,ticketType,query,comment,userId,name,email,organizationId,macroId,customObjectKey,recordId,fieldId,lookupValue,conversationId,text) must be set, or the block fails validation before it runs. - On failure the
erroroutput is populated; downstream blocks that reference other outputs may not receive values.