Ticket routing is the first decision in every support workflow. In Dock, that decision is drafted by an agent, attributed to a named identity, and approved by a support-team owner before it lands. The agent reads the inbound ticket from Zendesk, Intercom, or Freshdesk, pulls customer signals, proposes a queue and assignee, and waits. Nothing reroutes until a human signs off.
Zendesk, Intercom, and Freshdesk stay the system of record for the raw data. Dock is the system of record for what the AGENT INTERPRETS. Each Dock row carries a pointer back to the platform record, agent identity, decision, reviewer, and timestamp. The agent re-fetches platform data via fresh API reads when it needs current state.
The routing-decision table
One Dock table holds the agent's drafts. The support-team owner column is the approver, not a label.
| Ticket | Customer tier | Agent draft | Proposed queue | Proposed owner | Reviewer | Status |
|---|---|---|---|---|---|---|
| ZD-48211 (billing error) | Enterprise | Refund-eligible, needs Tier 2 billing | Billing-T2 | priya.r | morgan.lee | Approved |
| INT-9032 (login loop) | SMB | Likely SSO regression, route to auth | Auth-T1 | dan.k | morgan.lee | Approved |
| FD-1177 (feature ask) | Free | Not a ticket, convert to product feedback | Feedback-intake | (n/a) | morgan.lee | Rejected, kept in queue |
The agent identity (triage-bot@dock) is on every row. The reviewer is a human lead. Rejected drafts stay visible so the team can see what the agent guessed wrong.
The workflow
A ticket arrives in Zendesk. A webhook posts the ticket ID to Dock. The agent fetches the ticket body and customer record through the API, pulls the account tier, recent history, and any active incident flags. It drafts a routing decision with queue, owner, reason, and confidence. The draft writes to the table above with status Pending.
Morgan, the support-team owner on shift, sees the pending row. She reads the agent's reason, checks the linked ticket, and clicks Approve. Dock calls the Zendesk API and applies the assignment. The row flips to Approved and the timestamp locks. If Morgan rejects, the ticket stays in the general queue. Either way, the decision is attributed: agent drafted, human owned.
Why this matters
Routing used to vanish into macros and trigger chains. When something went wrong, nobody could reconstruct who made the call. Dock keeps the draft, the reasoning, the approver, and the platform pointer in one row. Audit becomes a query. Training the next version of the agent becomes a filter on rejected rows.
Zendesk's 2026 CX Trends report finds 95% of consumers expect an explanation from AI-made decisions, and only 37% of CX leaders provide it today. Forrester argues agentic customer service depends on structured knowledge and operational readiness, not just model quality. The routing table is where both land: reasoning logged, structure enforced, human on the hook.
This is the routing layer of the broader pattern in Dock for customer support and the playbook in how to run customer support with AI. The attribution model comes from agent audit and compliance and agent identity. For the upstream triage step that feeds this table, see AI ticket triage. For why a named agent, not a service account, owns the draft, see agent identity again.
Spin up the routing-decision table in your Dock workspace and point your Zendesk, Intercom, or Freshdesk webhook at it.
FAQ
Does the agent ever route without human approval? No. The agent drafts; an owner approves. The platform API call only fires after approval.
What if the platform record changes after the draft is written? The agent re-fetches the ticket and customer record at approval time. The reviewer sees any delta before signing off.
How does this differ from native Zendesk triggers or Intercom rules? Triggers fire on conditions. Dock attributes the decision to a named agent and a named reviewer, with reasoning stored.
Can the same workflow run across all three platforms at once? Yes. Each row points to its source platform record. The agent identity and schema are shared across queues.