Skip to main content

Zoho Desk

Creates a support ticket from a call, using a client-configurable template, with optional recording/transcript attachment and post-creation status tracking.

  • Direction: Outbound (Sprio → Zoho Desk)
  • Trigger: post_call, for completed or transferred calls, gated by a configurable run condition (by default: only when the call's extracted lead_intent is one of complaint, support_request, callback)

Connecting

Zoho Desk uses the same OAuth machinery as Zoho CRM (zoho_oauth credential type, same data-center handling), but as a separate connection with Desk-specific scopes: Desk.basic.READ, Desk.contacts.READ, Desk.tickets.ALL, Desk.settings.READ, Desk.search.READ. Connecting Zoho CRM does not automatically grant Desk access — connect each product independently from Integrations → Zoho Desk.

Ticket content

FieldSource
departmentIdConfigured per connection (required)
subjectTemplate, default {lead_intent} — {caller_mobile}
descriptionTemplate, default {issue_summary}
statusOpen
channelPhone
phoneCaller's number
priorityMapped from extracted lead_intent — default: complaint→High, support_request→High, callback→Low

Priority (and classification/assignee, if configured) use the same value-mapping mechanism: an extracted field's value is looked up in a mapping table you define, with a literal fallback if nothing matches.

Contact matching

Before creating a ticket, Sprio searches for an existing Zoho Desk contact by phone number (GET /api/v1/search/contacts?searchStr={mobile}) and reuses it if found, rather than creating a duplicate contact per call.

Tags

Tags are not sent as part of ticket creation — Zoho Desk rejects a tags field on create/update with a 422 ("extra parameter 'tags'") on some accounts. If you configure tags, Sprio applies them in a separate follow-up call (POST /api/v1/tickets/{id}/associateTag) after the ticket exists.

Templates

Subject and description templates use {key} placeholders, resolved against call fields, metadata, extracted fields, and the transcript — configurable per org from Integrations → Zoho Desk → Template, with sensible defaults if you don't customize them.

Attachments

Both are opt-in settings:

  • Call recording (attach_call_recording) — uploaded as a .wav file attachment on the ticket.
  • Full transcript (attach_full_transcript) — posted as an internal (non-public) comment on the ticket, not a file attachment.

Status tracking

Zoho Desk doesn't push ticket status changes to Sprio — there's no outbound webhook for this. Instead, Sprio schedules a one-time status poll roughly 15 minutes after ticket creation (GET /api/v1/tickets/{id}), merging the ticket's status, priority, assignee, and modified/closed timestamps back into the call's metadata. This is a single check, not ongoing polling — it won't reflect status changes made after that window.

Failure behavior

Follow-up actions (attachments, tagging, status refresh) fail soft by design — a failure in any of them never retroactively fails or removes the ticket that was already created.

Troubleshooting

SymptomLikely cause
Ticket created but tags missingExpected if tagging failed after creation — check integration activity for the follow-up call's result
No ticket for a call you expectedCheck the run condition — by default only complaint/support_request/callback intents create a ticket
Duplicate contacts appearingConfirm the caller's number matches exactly what's on the existing Desk contact — phone-based matching requires an exact match
Status shown on the call doesn't reflect a later changeThe status poll only runs once, ~15 minutes after creation — it does not track ongoing changes