by lysonober · v0.0.1
Zendesk ticketing integration for Dify workflows. Create, query, and manage support tickets.
This community listing does not yet include every recommended support, privacy, pricing, and permission disclosure. Review the available package permissions before installing.
Available inside your emploidai workspace after installation.
Available inside your emploidai workspace after installation.
A support system is essentially a to-do list. Each ticket represents a problem that a user encountered at some point, waiting to be seen, responded to, and resolved. Zendesk is one of the standard answers in this space, valued not for its interface aesthetics but for its battle-tested ticket lifecycle management logic.
This plugin does one thing: it brings Zendesk's ticket management capabilities into Dify workflows. Your AI Agent can create tickets, check status, add notes, and update progress. In other words, it gives your Agent the ability to "remember problems" and "follow up on them."
Before enabling this plugin in Dify, you'll need three things:
| Credential | Description | Example |
|---|---|---|
| Subdomain | Your Zendesk subdomain | If your URL is https://acme.zendesk.com, enter acme |
| An Agent or Admin account email | support@acme.com | |
| API Token | Zendesk API token | Generate from Admin Center > Apps and integrations > Zendesk API > Settings |
These credentials are used for Basic Authentication in the format {email}/token:{api_token}. All tools share the same credentials.
| Tool | Function | Typical Use Case |
|---|---|---|
| Create Ticket | Create a new ticket | User submits issue, automated error reporting |
| Get Ticket | Retrieve single ticket details | Check ticket status, get conversation history |
| List Tickets | List multiple tickets | View pending queue, filter by status |
| Update Ticket | Update ticket properties | Change priority, update status, reassign |
| Add Comment | Add comment to ticket | Reply to customer, add internal notes |
| List Views | List all Views | Find View IDs for filtering tickets |
| List Groups | List all Groups | Find Group IDs for ticket assignment |
Creates a new ticket that will appear in the Zendesk Agent dashboard, ready for processing.
| Parameter | Type | Required | Description |
|---|---|---|---|
subject | string | ✓ | Ticket title, brief summary of the issue |
description | string | ✓ | Issue details, becomes the first comment on the ticket |
priority | select | Priority: low / normal (default) / high / urgent | |
type | select | Type: question / incident / problem / task | |
group_id | number | Assign to a Group, determines which Views the ticket appears in | |
tags | string | Tags, comma-separated, e.g., forum_bot,billing | |
requester_email | string | Email of the person reporting the issue | |
requester_name | string | Name of the person reporting the issue |
Input:
{
"subject": "Cannot login to dashboard",
"description": "User reports seeing 'Invalid credentials' error after password reset. Browser: Chrome 120.",
"priority": "high",
"group_id": 12345678,
"tags": "login,password",
"requester_email": "john@example.com"
}
Output (JSON):
{
"ticket_id": 42,
"ticket_url": "https://acme.zendesk.com/agent/tickets/42",
"status": "new",
"priority": "high",
"subject": "Cannot login to dashboard",
"created_at": "2024-01-15T10:30:00Z"
}
Output (Text):
ticket_id: 42
Zendesk Views automatically filter tickets based on conditions. If you want a new ticket to appear in a specific View, the ticket's properties must match that View's filter conditions.
For example, suppose your company has a View called "Community Tickets" with the condition "Group is forum_bot." To make a ticket appear in this View, you need to set the group_id when creating it:
group_id when calling Create TicketRetrieves complete information for a single ticket.
| Parameter | Type | Required | Description |
|---|---|---|---|
ticket_id | number | ✓ | The ticket ID |
Input:
{
"ticket_id": 42
}
Output (JSON):
{
"id": 42,
"subject": "Cannot login to dashboard",
"description": "User reports seeing 'Invalid credentials' error...",
"status": "open",
"priority": "high",
"type": "incident",
"requester_id": 123456,
"assignee_id": 789012,
"group_id": 12345678,
"tags": ["login", "password"],
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T11:00:00Z"
}
Lists tickets with optional filtering by status or View.
| Parameter | Type | Required | Description |
|---|---|---|---|
view_id | number | Filter by View, takes priority over status | |
status | select | Filter by status: new / open / pending / hold / solved / closed | |
sort_by | select | Sort field: created_at (default) / updated_at / priority / status | |
sort_order | select | Sort direction: asc / desc (default) | |
per_page | number | Number of results, 1 to 100, default 25 |
Filter by status:
{
"status": "open",
"sort_by": "updated_at",
"per_page": 10
}
Filter by View:
{
"view_id": 360001234567,
"per_page": 50
}
Output (JSON):
{
"count": 3,
"tickets": [
{
"id": 42,
"subject": "Cannot login to dashboard",
"status": "open",
"priority": "high",
"created_at": "2024-01-15T10:30:00Z"
},
{
"id": 41,
"subject": "Payment failed",
"status": "open",
"priority": "normal",
"created_at": "2024-01-15T09:00:00Z"
}
]
}
Updates ticket properties. You can modify status, priority, assignee, or tags.
| Parameter | Type | Required | Description |
|---|---|---|---|
ticket_id | number | ✓ | The ticket ID |
status | select | New status: open / pending / hold / solved | |
priority | select | New priority: low / normal / high / urgent | |
assignee_id | number | New assignee ID | |
tags | string | New tags (note: replaces all existing tags) |
Input:
{
"ticket_id": 42,
"status": "pending",
"priority": "normal"
}
Output (JSON):
{
"ticket_id": 42,
"status": "pending",
"priority": "normal",
"updated_at": "2024-01-15T14:00:00Z"
}
Adds a comment to a ticket. Can be a public reply visible to the customer or an internal note visible only to agents.
| Parameter | Type | Required | Description |
|---|---|---|---|
ticket_id | number | ✓ | The ticket ID |
body | string | ✓ | Comment content |
public | boolean | true (default) = public reply, false = internal note |
Public reply:
{
"ticket_id": 42,
"body": "Hi John, I've reset your password. Please try logging in again with the temporary password sent to your email.",
"public": true
}
Internal note:
{
"ticket_id": 42,
"body": "Checked auth logs, user account was locked due to 5 failed attempts. Unlocked manually.",
"public": false
}
Lists all available Views in Zendesk. Views are predefined ticket filters configured by administrators.
| Parameter | Type | Required | Description |
|---|---|---|---|
active_only | boolean | true (default) = only return active Views |
Output (JSON):
{
"count": 5,
"views": [
{
"id": 360001234567,
"title": "All unsolved tickets",
"active": true
},
{
"id": 360001234568,
"title": "Community Tickets",
"active": true
}
]
}
Lists all available Groups in Zendesk. Groups are used to organize agents and can be assigned to tickets.
None.
Output (JSON):
{
"count": 3,
"groups": [
{
"id": 12345678,
"name": "forum_bot"
},
{
"id": 12345679,
"name": "Support Team"
},
{
"id": 12345680,
"name": "Billing"
}
]
}
Each tool returns two messages:
ticket_id) for easy reference in subsequent nodesThis design means if you only need to pass the ticket ID to the next node, use the Text output. If you need to parse ticket details, use the JSON output.
.env.example to .env and configure the debug connection:INSTALL_METHOD=remote
REMOTE_INSTALL_URL=debug.dify.ai:5003
REMOTE_INSTALL_KEY=your-debug-key
python -m main
dify-plugin plugin package ./zendesk
For questions or support, please contact: lysonober@gmail.com