Chatbot to human handoff: how to escalate without losing the customer
By Roman Zakharenko · Facts checked
A chatbot to human handoff is the point where a bot stops handling a conversation and transfers it, with its history and any details it collected, to a human agent or queue. A good handoff fires at the right moment, carries the context so the customer doesn't repeat themselves, and still works when nobody is online. This guide covers the triggers, the context to pass, and how Zendesk, Freshdesk and Messenger implement it.
At a glance
- Zendesk says an AI agent may need to transfer a query to a human when it is complex, urgent or sensitive.
- Freshdesk AI Agents can transfer automatically when a customer uses trigger phrases you define, such as asking for an agent.
- In Dialogflow CX, if no intent meets the classification threshold, a no-match event fires instead of a match.
- On Messenger, the handover protocol decides which app owns a conversation thread; Meta has moved Instagram to Conversation Routing.
What a chatbot-to-human handoff is
A handoff, also called an escalation or transfer, moves ownership of a conversation from automation to a person. Depending on the channel, the result is a live chat assigned to an agent, a conversation waiting in a queue, or a ticket an agent picks up later. In Zendesk's AI agents, you build this with escalation blocks in the dialogue builder, which define how a query moves to a human when the AI agent can't resolve it.
Handoffs come in two shapes. In a synchronous handoff, the customer stays in the same live conversation and an agent joins. In an asynchronous handoff, a ticket is created so an agent can reply later, which is the usual fallback when nobody is available. Zendesk documents both, including a workflow for asynchronous ticket escalations that lets customers leave a message when your team is unavailable.
When the bot should hand off
| Trigger | What it looks like | How it's detected |
|---|---|---|
| Customer asks for a human | Agent, talk to a person, this isn't helping | Freshdesk AI Agents transfer automatically on trigger phrases you list, such as a request to talk to an agent |
| Low confidence or no match | The bot can't tell what the customer wants | Dialogflow CX fires a no-match event when no intent meets the classification threshold; use that fallback to offer a person |
| Sensitive or urgent topic | Complaints, failed payments, security, legal or safety issues | Zendesk lists complex, urgent or sensitive inquiries as reasons to transfer; Freshdesk's example trigger phrases include a report of a failed payment |
| Repeated failure | The customer rephrases the same question or the bot loops | Count fallback replies in the session and escalate after a set number |
| Business rule | VIP account, high order value, open incident | Look up customer data through an API before the bot answers and route those customers straight to a person |
Confidence is the trigger teams most often leave implicit. In Dialogflow CX, the highest-scoring intent is returned as a match only if its confidence score is greater than or equal to the classification threshold; otherwise a no-match event is invoked. Treat that event as a signal: ask one clarifying question, and hand off if it happens again.
Zendesk also advises offering escalation only when the AI agent can't guide the customer to self-service resources. That keeps agents for real problems, but don't hide the option. A customer who explicitly asks for a person should get one, or a clear answer about when they will.
Pass the context, not just the customer
A handoff that drops the conversation forces the customer to start over. Zendesk's legacy Transfer to agent step, for example, creates a ticket that includes the customer's conversation history, which the customer doesn't see, and can add tags to that ticket for routing. Freshdesk AI Agents can collect details such as a customer ID, reference number or order number before the transfer, when property collection is enabled in both the conversation behaviour and handover settings.
At a minimum, the agent should receive:
- The full transcript, including what the bot already suggested
- The reason for the handoff: customer request, no match, sensitive topic or business rule
- Identity details such as name, email or account ID, and whether they were verified
- Structured fields the bot collected, such as order number or product
- Tags or a category, so routing rules send the conversation to the right group
Set the customer's expectations in the same message: tell them a person is taking over and roughly when they'll hear back.
How Zendesk, Freshdesk and Messenger implement handoff
- Zendesk: escalation blocks in the AI agent dialogue builder decide where a conversation goes when the AI agent can't resolve it, for example forwarding it to an agent. An availability block can check business hours or agent availability before the escalation runs.
- Freshdesk: in the AI Agent's handover settings, you turn on Transfer conversation, list the trigger phrases that should cause an automatic transfer, and can have the AI Agent collect customer details first.
- Messenger: when more than one app handles a Facebook Page's messages, such as your bot and a live-chat inbox, Meta's handover protocol decides which app owns the thread. The messaging_handovers webhook reports pass thread control, take thread control, request thread control and app role events. A pass_thread_control event includes the previous and new owner app IDs plus a metadata string set in the API request, which is a handy place to put the handoff reason.
- Instagram: Meta's changelog says it no longer supports the handover protocol for Instagram and has migrated all businesses to Conversation Routing, which lets you define which partners control customer conversations at a particular time. Meta describes Conversation Routing as backwards compatible with most handover protocol APIs.
After-hours handling
A bot that promises a human when nobody is online is worse than no handoff at all. Check availability first, then choose a fallback:
- Zendesk: an availability block checks business hours or agent availability. In a synchronous channel such as messaging, Zendesk suggests escalating by email instead when it's outside agent working hours, and its asynchronous ticket escalation workflow lets customers leave a message for a human to follow up later.
- Freshdesk: the Transfer outside business hours option lets you pick a business-hours schedule, transfer the conversation to an agent or to a group, and write the message the customer sees.
- Any platform: create a ticket with the transcript, say when the team is back, and let the bot keep answering self-service questions in the meantime.
Test the out-of-hours path separately. It's the branch most likely to break unnoticed, because nobody on the team is online when it runs.
How TascaLab can help
TascaLab builds chat bots with handoff into your existing helpdesk or Slack: a Starter Chat Bot ($400) or a Standard Chat Bot ($575), connected through APIs, webhooks and Make or n8n. Every project includes basic documentation and 30 days of post-launch support with no hidden fees, and most setups take 1–3 weeks. A free 30-minute Health Check call is a good place to map your handoff triggers.
Frequently asked questions
When should a chatbot hand off to a human?
When the customer asks for a person, when the bot can't confidently match the request, and when the topic is complex, urgent or sensitive, which is how Zendesk describes queries that need a human agent.
How do I stop customers repeating themselves after a handoff?
Pass the transcript, the reason for the handoff and any details the bot collected into the ticket or chat. Zendesk's legacy transfer step adds the conversation history to the ticket, and Freshdesk AI Agents can collect details such as an order number before the transfer.
What is the Messenger handover protocol?
It's Meta's mechanism for deciding which app owns a Messenger conversation thread when several apps serve the same Page. Apps pass, take and request thread control, and the messaging_handovers webhook reports those events.
What happens if a customer asks for a human after hours?
Check availability before escalating. Zendesk and Freshdesk both let you handle out-of-hours handoffs differently, for example by creating a ticket for later follow-up and showing a message about when the team is available.
Want this set up for your team?
Book a free Health Check: a 30-minute call and a written report with 2–3 concrete recommendations, a fixed price and estimated running costs. No pitch.
Sources
- Zendesk Help Center — Configuring escalation strategies and flows for AI agents
- Zendesk Help Center — Workflow recipe: Configuring asynchronous ticket escalations for messaging AI agents
- Zendesk Help Center — Understanding the step types for AI agent answers (Legacy)
- Freshdesk Support — Configure handover settings for AI Agents
- Freshdesk Support — Configure conversation behaviour for AI agents
- Meta for Developers — messaging_handovers webhook event reference
- Meta for Developers — Messenger Platform changelog
- Google Cloud — Dialogflow CX intents