Zendesk
Create, update, and search tickets, and add comments in Zendesk.
On this page
Connect
Auth type: API key (secret_text). Paste the API key (or token) from the provider's settings into the connect dialog. It is encrypted at rest and only decrypted on the server when an action runs.
- In the editor: Backend panel, Integrations tab, then Connect. This connects it for the project.
- For every project in a workspace: Workspace settings, Integrations.
- Owners and admins choose which integrations members may connect in the admin panel (Integrations tab), and can attach their own OAuth app there.
Call it from a workflow
Pass the action name and its input. The call resolves with { success, output, error? }; a missing connection resolves with success false and the reason. See ctx.integrations.invoke and ctx.integrations.call.
// .workflow.js (native ctx)
export async function run(ctx) {
const res = await ctx.integrations.invoke("zendesk", "create-ticket", {
"organization_id": "<organization_id>"
});
if (!res.success) throw new Error(res.error);
ctx.log.info("Zendesk answered", { output: res.output });
}// defineWorkflow module (@app/sdk ctx)
import { defineWorkflow } from "@app/sdk";
export default defineWorkflow({
id: "zendesk-create-ticket",
name: "Zendesk: Create Ticket",
description: "Calls Zendesk when a row is created.",
trigger: { type: "entity_event", entity: "tickets", event: "created" },
async run(ctx, event) {
const res = await ctx.integrations.call("zendesk", {
"action": "create-ticket",
"organization_id": "<organization_id>"
}) as { success: boolean; error?: string };
if (!res.success) throw new Error(res.error);
},
});curl -X POST "$APP_ORIGIN/__appbricx/connector-proxy/zendesk/create-ticket" \
-H "Authorization: Bearer $APP_KEY" \
-H "content-type: application/json" \
-d '{"props":{"organization_id":"<organization_id>"}}'Actions
create-ticketin catalog
Create Ticket. Create a new ticket in Zendesk.
| Input | Type | Description |
|---|---|---|
subjectoptional | text | The subject of the ticket (optional - will use first comment text if not provided) |
comment_bodyoptional | long text | The comment body (text). Use this for plain text comments. |
comment_html_bodyoptional | long text | The comment body (HTML). Use this for HTML formatted comments. If provided, this takes precedence over Comment Body. |
requester_emailoptional | text | Email address of the ticket requester. If not provided, the authenticated user will be the requester. |
requester_nameoptional | text | Name of the ticket requester (used when creating a new user). |
assignee_emailoptional | text | Email address of the agent to assign the ticket to. |
priorityoptional | one of "low" | "normal" | "high" | "urgent" | The priority of the ticket. |
typeoptional | one of "problem" | "incident" | "question" | "task" | The type of ticket. |
statusoptional | one of "new" | "open" | "pending" | "hold" | "solved" | "closed" | The status of the ticket. |
tagsoptional | array | Array of tags to apply to the ticket. |
organization_idrequired | id (picked from your account) | Select the organization to work with |
group_idoptional | id (picked from your account) | Select the group to assign |
external_idoptional | text | An external ID for the ticket (useful for integrations). |
collaborator_emailsoptional | array | Array of email addresses to add as collaborators. |
follower_emailsoptional | array | Array of email addresses to add as followers. |
due_atoptional | date-time (ISO) | The date and time when the ticket is due. |
custom_fieldsoptional | object (depends on other props) | Custom ticket field values |
comment_publicoptional | boolean | Whether the comment is public (visible to the requester). Defaults to true. |
brand_idoptional | id (picked from your account) | Select the brand to work with |
forum_topic_idoptional | number | The ID of the forum topic associated with the ticket. |
find-ticketsin catalog
Find Ticket(s). Search tickets by ID, field, or content.
| Input | Type | Description |
|---|---|---|
search_typerequired | one of "id" | "status" | "priority" | "type" | "tag" | "requester" | "assignee" | "content" | "custom" | Choose how to search for tickets |
timeFilteroptional | array | Date Time Filter |
ticket_idoptional | text | The ID of the ticket to find |
statusoptional | one of "new" | "open" | "pending" | "hold" | "solved" | "closed" | Search tickets by status |
priorityoptional | one of "low" | "normal" | "high" | "urgent" | Search tickets by priority |
ticket_typeoptional | one of "problem" | "incident" | "question" | "task" | Search tickets by type |
tagoptional | text | Search tickets containing this tag |
requester_emailoptional | text | Search tickets by requester email address |
assignee_emailoptional | text | Search tickets by assignee email address |
contentoptional | text | Search in ticket subject and content |
custom_queryoptional | long text | Custom search query using Zendesk search syntax (e.g., "type:ticket status:open priority:high") |
sort_byoptional | one of "relevance" | "created_at" | "updated_at" | "priority" | "status" | "ticket_type" | How to sort the results |
sort_orderoptional | one of "desc" | "asc" | Sort order for results |
add-comment-to-ticket
Add Comment to Ticket. Append a public/private comment to a ticket.
| Input | Type | Description |
|---|---|---|
ticket_idrequired | id (picked from your account) | Select the ticket to work with |
comment_bodyoptional | long text | The comment text content |
comment_html_bodyoptional | long text | HTML formatted comment (takes precedence over text) |
publicoptional | boolean | Make comment visible to requester (default: true) |
author_emailoptional | text | Email of comment author (defaults to authenticated user) |
uploadsoptional | array | Upload tokens for file attachments |
via_followup_source_idoptional | number | Original ticket ID if this is from a follow-up |
add-tag-to-ticket
Add Tag to Ticket. Apply one or more tags to a ticket.
| Input | Type | Description |
|---|---|---|
ticket_idrequired | id (picked from your account) | Select the ticket to work with |
tagsrequired | array | Tags to add to the ticket (adds to existing tags) |
safe_updateoptional | boolean | Prevent tag loss from concurrent updates |
updated_stampoptional | text | Ticket timestamp from updated_at field for collision prevention |
create-organization
Create Organization. Create a new organization record.
| Input | Type | Description |
|---|---|---|
namerequired | text | Unique name for the organization |
detailsoptional | long text | Additional details about the organization |
notesoptional | long text | Internal notes about the organization |
external_idoptional | text | External ID for integration purposes |
group_idoptional | id (picked from your account) | Select the group to assign |
domain_namesoptional | array | Domain names associated with the organization |
tagsoptional | array | Tags to apply to the organization |
organization_fieldsoptional | object (depends on other props) | Custom organization field values |
shared_ticketsoptional | boolean | Allow users to see each other's tickets |
shared_commentsoptional | boolean | Allow users to see each other's comments |
create-user
Create User. Add a new user to the Zendesk instance.
| Input | Type | Description |
|---|---|---|
namerequired | text | The name of the user |
emailoptional | text | The primary email address of the user |
roleoptional | one of "end-user" | "agent" | "admin" | The role of the user. Defaults to "end-user" if not specified. |
custom_role_idoptional | id (picked from your account) | Select the custom role for the agent |
organization_idrequired | id (picked from your account) | Select the organization to work with |
organization_nameoptional | text | Create and associate user with a new organization by name (alternative to Organization ID) |
phoneoptional | text | The phone number of the user |
aliasoptional | text | An alias displayed to end users |
detailsoptional | long text | Additional details about the user |
notesoptional | long text | Internal notes about the user |
external_idoptional | text | A unique external ID for the user (useful for integrations) |
time_zoneoptional | text | The time zone of the user (e.g., "America/New_York") |
localeoptional | text | The locale of the user (e.g., "en-US") |
verifiedoptional | boolean | Whether the user is verified |
activeoptional | boolean | Whether the user is active. Defaults to true. |
sharedoptional | boolean | Whether the user is shared from a different Zendesk Support instance |
shared_agentoptional | boolean | Whether the user is a shared agent from a different Zendesk Support instance |
moderatoroptional | boolean | Whether the user has forum moderation capabilities |
suspendedoptional | boolean | Whether the user is suspended |
restricted_agentoptional | boolean | Whether the agent has restrictions on what tickets they can access |
custom_api_call
Custom API Call. Make a custom API call to a specific endpoint
| Input | Type | Description |
|---|---|---|
urlrequired | object (depends on other props) | url |
methodrequired | one of "GET" | "POST" | "PATCH" | "PUT" | "DELETE" | "HEAD" | Method |
headersrequired | object | Authorization headers are injected automatically from your connection. |
queryParamsrequired | object | Query Parameters |
body_typeoptional | one of "none" | "json" | "form_data" | "raw" | Body Type |
bodyoptional | object (depends on other props) | Body |
response_is_binaryoptional | boolean | Enable for files like PDFs, images, etc. |
failsafeoptional | boolean | No Error on Failure |
timeoutoptional | number | Timeout (in seconds) |
followRedirectsoptional | boolean | Follow redirects |
delete-user
Delete User. Remove a user and associated records from the account.
| Input | Type | Description |
|---|---|---|
user_idrequired | id (picked from your account) | Select the user to work with |
confirmationrequired | boolean | I understand that deleted users are not recoverable and this action cannot be undone. |
find-organization
Find Organization(s). Search organizations by name, domain, external ID, or other criteria.
| Input | Type | Description |
|---|---|---|
search_typerequired | one of "name" | "domain" | "external_id" | "tag" | "details" | "custom" | Choose how to search for organizations |
nameoptional | text | The name of the organization to search for |
domainoptional | text | Search organizations by domain name |
external_idoptional | text | Search organizations by external ID |
tagoptional | text | Search organizations containing this tag |
detailsoptional | text | Search in organization details/notes |
custom_queryoptional | long text | Custom search query using Zendesk search syntax (e.g., "type:organization domain:example.com") |
sort_byoptional | one of "relevance" | "created_at" | "updated_at" | How to sort the results |
sort_orderoptional | one of "desc" | "asc" | Sort order for results |
find-user
Find User(s). Search users by email, name, role, or other criteria.
| Input | Type | Description |
|---|---|---|
search_typerequired | one of "email" | "name" | "role" | "organization" | "tag" | "external_id" | "custom" | Choose how to search for users |
emailoptional | text | The email address of the user to search for |
nameoptional | text | The name of the user to search for |
roleoptional | one of "end-user" | "agent" | "admin" | Search users by role |
organizationoptional | text | Search users by organization name |
tagoptional | text | Search users containing this tag |
external_idoptional | text | Search users by external ID |
custom_queryoptional | long text | Custom search query using Zendesk search syntax (e.g., "type:user role:agent") |
sort_byoptional | one of "relevance" | "created_at" | "updated_at" | How to sort the results |
sort_orderoptional | one of "desc" | "asc" | Sort order for results |
update-organization
Update Organization. Update existing organization fields.
| Input | Type | Description |
|---|---|---|
organization_idrequired | id (picked from your account) | Select the organization to work with |
nameoptional | text | New name for the organization (must be unique) |
detailsoptional | long text | Additional details about the organization |
notesoptional | long text | Internal notes about the organization |
external_idoptional | text | External ID for integration purposes |
group_idoptional | id (picked from your account) | Select the group to assign |
domain_namesoptional | array | Domain names for the organization (replaces all existing) |
tagsoptional | array | Tags for the organization (replaces all existing) |
organization_fieldsoptional | object (depends on other props) | Custom organization field values |
shared_ticketsoptional | boolean | Allow users to see each other's tickets |
shared_commentsoptional | boolean | Allow users to see each other's comments |
update-ticket
Update Ticket. Modify ticket fields or status via API call.
| Input | Type | Description |
|---|---|---|
ticket_idrequired | id (picked from your account) | Select the ticket to work with |
subjectoptional | text | Update the subject of the ticket |
comment_bodyoptional | long text | Add a comment to the ticket (plain text) |
comment_html_bodyoptional | long text | Add a comment to the ticket (HTML). If provided, this takes precedence over Comment Body. |
comment_publicoptional | boolean | Whether the comment is public (visible to the requester). Defaults to true. |
assignee_emailoptional | text | Email address of the agent to assign the ticket to |
priorityoptional | one of "low" | "normal" | "high" | "urgent" | Update the priority of the ticket |
typeoptional | one of "problem" | "incident" | "question" | "task" | Update the type of ticket |
statusoptional | one of "new" | "open" | "pending" | "hold" | "solved" | "closed" | Update the status of the ticket |
tagsoptional | array | Replace all tags with this array. Use "Add Tag to Ticket" action to add tags without replacing existing ones. |
organization_idrequired | id (picked from your account) | Select the organization to work with |
group_idoptional | id (picked from your account) | Select the group to assign |
external_idoptional | text | Update the external ID for the ticket |
due_atoptional | date-time (ISO) | Update the date and time when the ticket is due |
custom_fieldsoptional | object (depends on other props) | Update custom ticket field values |
custom_status_idoptional | number | Set a custom status ID for the ticket |
forum_topic_idoptional | number | Update the forum topic associated with the ticket |
collaborator_emailsoptional | array | Replace collaborators with this array of email addresses |
follower_emailsoptional | array | Replace followers with this array of email addresses |
requester_emailoptional | text | Update the requester of the ticket |
update-user
Update User. Update existing user fields.
| Input | Type | Description |
|---|---|---|
user_idrequired | text | The ID of the user to update. |
nameoptional | text | New name for the user. |
emailoptional | text | New email address for the user. |
phoneoptional | text | New phone number for the user. |
tagsoptional | array | Tags for the user. This replaces all existing tags. |
user_fieldsoptional | object (depends on other props) | Custom user field values. |
Details
- Id
zendesk- Category
- Customer support
- Tags
- helpdesk, tickets, support, customer-service
- Package
@activepieces/piece-zendesk@0.2.6- Tier
- Built in