Skip to content
Try Free →

The ticketing_router skill

Last updated: · 4 min read

What the skill does

Some chat conversations need async follow-up. Customer asks for a refund, bot can't process it, human will reply by email in 4 hours. The clean handoff is a ticket in your help-desk system, not a Slack ping that gets lost.

ticketing_router creates that ticket. When the bot decides escalation is needed (low confidence, mutating action requested, explicit "open a ticket" request), this skill:

  1. Picks the right queue based on intent.
  2. Creates the ticket in Zendesk with conversation context attached.
  3. Confirms to the customer: "I've opened ticket #1234. We'll reply within 4 hours."

The skill is on Starter and above. Requires the Zendesk integration configured. Starter+

How routing works

Each ticket needs a team queue. The skill picks one based on conversation intent:

  • billing routes to your billing team's queue (Zendesk group/group_id).
  • technical routes to engineering or technical support.
  • returns routes to logistics or returns ops.
  • sales routes to sales (often a separate queue or a different help-desk product entirely).
  • other routes to a default queue you configure.

Intent is detected per-conversation from the message content. Configure mappings under AI Agents > Skills > ticketing_router > Intent Mapping.

Setup

Five steps end-to-end.

  1. Connect Zendesk first. Follow the Zendesk integration setup.
  2. Enable ticketing_router. AI Agents > Skills > ticketing_router > Enable.
  3. Map intents to Zendesk groups. For each intent (billing, technical, etc.), pick the Zendesk group ID it should route to. AskVault auto-fills the list from your Zendesk groups.
  4. Configure trigger conditions. Default triggers: low-confidence chain (2+ turns), customer says "open a ticket", or escalate_to_human fires without an available agent.
  5. Customize the customer-facing confirmation message. Default: "I've opened ticket #X. We'll reply within Y hours."

Test by triggering escalation manually: type "I want to file a complaint" in your widget. The bot should create a ticket and respond with the ticket number.

What goes into the ticket

Each created ticket includes:

  • Subject. Auto-generated from the conversation's main intent.
  • Requester email. From the customer (captured via collect_lead or identity verification).
  • Body. The full conversation transcript, formatted for readability.
  • Tags. AskVault-specific tags like askvault, intent (billing, technical), source channel (widget, whatsapp), and any custom tags you've configured.
  • Priority. Determined by conversation context. Default normal; bumps to urgent if sentiment_router flagged the conversation as angry.
  • Group assignment. The Zendesk group from the intent mapping.

The ticket's first reply (an agent's response from Zendesk) can flow back to the customer in their original chat channel if you've configured the reverse-route. By default the reply goes via Zendesk's standard email.

Reverse-routing the agent reply

For continuity, you can route the agent's Zendesk reply back to the customer through the original chat channel:

  1. In Zendesk, configure a trigger: "When ticket is updated with public reply".
  2. The trigger calls AskVault's webhook URL (visible under Integrations > Zendesk > Reverse Route).
  3. AskVault routes the reply to the customer in the chat channel they originally used (widget, WhatsApp, etc.).

For most teams, default email reply from Zendesk is fine. Reverse-routing is useful for high-volume support where customers expect chat-native responses.

SLA integration

Tickets created by AskVault inherit your Zendesk SLA policies. If your "Billing" group has a 4-hour first-response SLA, AskVault-created billing tickets get the same SLA timer.

The customer-facing confirmation message can reference the SLA. Default uses a static "We'll reply within 4 hours"; advanced configuration pulls the actual SLA target from Zendesk dynamically.

Limits

  • Plan availability. Starter and above.
  • Zendesk API rate limits. 700 requests per minute. AskVault stays well under this.
  • Other help desks. Native support for Zendesk. For Freshdesk, Help Scout, or Salesforce Service Cloud, use the custom_webhook skill and Zapier or your own backend.

Common pitfalls

Ticket created in wrong group. Intent detection misclassified the conversation. Refine intent keywords under Skills > ticketing_router > Intent Keywords.

Customer email missing on ticket. collect_lead didn't run first or didn't capture the email. Set ticketing_router to require email capture before creating the ticket. Configure under Skills > ticketing_router > Pre-conditions.

Tickets pile up unattended. Zendesk's notification setup isn't firing. Check Zendesk's email and Slack notifications. Reverse-routing to chat doesn't replace your team's primary inbox.

Duplicate tickets. Customer mentioned "ticket" twice in the conversation and the skill fired twice. Default dedup checks for an open ticket from the same email within the last hour; enable under Skills > ticketing_router > Deduplicate.

FAQ

Can I route to Freshdesk or Help Scout?

Not natively today. Use the custom_webhook skill to call those products' APIs. Native Freshdesk support is on the roadmap.

Does the customer see the ticket number?

Yes by default. Configurable under Skills > ticketing_router > Confirmation Message.

Can I attach files to the ticket?

If the conversation includes uploaded files (widget supports file attachments), they attach to the ticket as Zendesk attachments. WhatsApp media attaches similarly.

Does this work with Zendesk's chat product?

Zendesk Chat (now part of Zendesk Suite) creates conversations not tickets. ticketing_router creates tickets specifically. To use Zendesk Chat alongside AskVault, see the standalone Zendesk integration setup for the conversation-routing pattern.

How fast is ticket creation?

About 800 ms to 2 seconds end-to-end. The customer sees the bot "typing" briefly, then the confirmation with the ticket number.

Was this page helpful?