Skip to main content

Connect Zendesk with ShedBoxAI

Pull support data from Zendesk and build customer service analytics pipelines.

Quick Start

data_sources:
tickets:
type: rest
url: "https://${ZENDESK_SUBDOMAIN}.zendesk.com/api/v2/tickets.json"
headers:
Authorization: "Basic ${ZENDESK_AUTH}"
response_path: "tickets"

output:
type: file
path: "tickets.json"
format: json

Authentication

# Base64 encode email:token
export ZENDESK_AUTH=$(echo -n "email@example.com/token:your-api-token" | base64)
export ZENDESK_SUBDOMAIN="your-subdomain"

Common Pipelines

Ticket Volume by Status

data_sources:
tickets:
type: rest
url: "https://${ZENDESK_SUBDOMAIN}.zendesk.com/api/v2/tickets.json"
headers:
Authorization: "Basic ${ZENDESK_AUTH}"
response_path: "tickets"

processing:
advanced_operations:
tickets_by_status:
source: "tickets"
group_by: "status"
aggregate:
ticket_count: "COUNT(*)"
sort: "-ticket_count"

output:
type: file
path: "ticket_status_report.json"
format: json

Priority Analysis

data_sources:
tickets:
type: rest
url: "https://${ZENDESK_SUBDOMAIN}.zendesk.com/api/v2/tickets.json"
headers:
Authorization: "Basic ${ZENDESK_AUTH}"
response_path: "tickets"

processing:
contextual_filtering:
tickets:
- field: "status"
condition: "open"
new_name: "open_tickets"

advanced_operations:
open_by_priority:
source: "open_tickets"
group_by: "priority"
aggregate:
count: "COUNT(*)"
sort: "-count"

output:
type: file
path: "priority_analysis.json"
format: json

Support Insights with AI

data_sources:
tickets:
type: rest
url: "https://${ZENDESK_SUBDOMAIN}.zendesk.com/api/v2/tickets.json"
headers:
Authorization: "Basic ${ZENDESK_AUTH}"
options:
params:
per_page: 50
response_path: "tickets"

ai_interface:
model:
type: rest
url: "https://api.anthropic.com/v1/messages"
method: POST
headers:
x-api-key: "${ANTHROPIC_API_KEY}"
Content-Type: "application/json"
options:
model: "claude-sonnet-4-20250514"

prompts:
analyze:
system: "You are a customer support analyst."
user_template: |
Analyze these support tickets and identify common issues:

{% for ticket in tickets %}
- {{ ticket.subject }} ({{ ticket.status }}, {{ ticket.priority }})
{% endfor %}

Provide trends and improvement recommendations.

output:
type: file
path: "support_insights.md"
format: json