Human Handoff

AI-to-Human Handoff That Knows When to Escalate

Describe when your AI agent should hand over, in plain English. It asks the customer first, collects how they'd like to be reached, and creates a handoff request with a conversation summary, escalation reason, and contact details, so your team follows up already knowing the story.

Included with every Robofy AI agent. No add-on required

What Is AI-to-Human Handoff?

AI-to-human handoff is the point where an AI agent recognises that a conversation needs a person and escalates it, instead of continuing to answer indefinitely. It's also described as chatbot-to-human handoff, or simply human escalation.

In Robofy you describe that moment in plain English rather than wiring up keyword rules. Your agent watches for it during conversations, and when it matches, it asks the customer whether they'd like human help. If they agree, they choose one of the contact options you've enabled, and Robofy creates a handoff request carrying the reason, a conversation summary, any knowledge-base gap, and their contact details. Your team picks it up from the shared Handoff Requests queue.

See It Work

See Human Handoff in Robofy

The actual screens: how you configure it, what the customer sees, and where your team picks it up.

agents.robofy.ai/settings/handoff
Human handoff
"the user explicitly asks to speak with a human, or the same issue isn't resolved after a few replies"
Consent-first. The AI always asks before connecting.
agents.robofy.ai/settings/handoff
Phone
WhatsApp
Email
Calendar
Custom
Chat widget preview
SupportOnline
My order #12452 still hasn't arrived.
Tracking shows 8 days in transit. I can keep looking, or connect you with someone on the team.
I've already asked twice. I just want a person.
Want me to connect you with our team? I'll pass along everything we've covered so far.
Yes, pleaseNo thanks
Chat widget preview
SupportOnline
Yes, please
Sure. How should we reach you? I'll only ask for the one field that matches.
Priya Shah
WhatsApp ▾
+91 XXXXX XXXXX
agents.robofy.ai/ai-agent/handoff-requests
CustomerMethodStatus
Priya ShahWhatsAppOpen
Marco D.EmailNotified
Wei LinPhoneClosed
Sam O.WhatsAppOpen
Each request carries the reason, a written summary, and whether it was a knowledge gap.

The handoff setting

One toggle and a plain-English condition box, set per agent.

Recreated from the real settings and dashboard screens. A live screen recording is next on the list.

How It Works

What Happens in One Conversation

Four moments in a single chat, from the customer's side of the screen.

It recognises the moment

Partway through a chat, the AI notices the situation you described. Nothing is shown to the customer yet and no record exists.

    Why It Matters

    Why AI-to-Human Handoff Improves Customer Support

    The day-to-day differences your team and your customers actually feel.

    Customers stop repeating themselves

    Nobody has to re-explain their problem to the second person they speak to. What they already said travels with them.

    Your team opens it already briefed

    No scrolling back through a chat log to work out what happened before anyone can reply.

    You find out what your docs are missing

    The questions your knowledge base couldn't answer surface as a pattern, so gaps get closed instead of repeating.

    Fewer conversations dead-end

    Instead of "I can't help with that," the customer leaves with a person lined up or a direct way to reach one.

    Your queue reflects real demand

    No phantom requests to triage. Every row is someone who actually wanted a person.

    In Practice

    Set Human Handoff Triggers in Plain English

    You write the condition yourself; none of these are hard-coded triggers. Here are four situations a typical one covers, and what the customer sees in each.

    Flagged as a knowledge gap

    A question outside your docs

    Someone asks something your knowledge base was never given an answer for. Rather than guessing or stalling, the AI says so plainly and offers to bring in someone who will know.

    SupportOnline
    Do you restock the limited-edition tote?
    That's not in my docs. Want me to connect you with the team?
    Yes, please
    Same issue, still open

    Still unresolved after a few replies

    The same problem keeps coming back around without moving forward. Instead of another pass at the answer that already didn't land, the AI reads the loop and offers a way out of it.

    SupportOnline
    Still waiting on order #12452.
    I've checked tracking again. It's been 8 days in transit.
    I've already asked twice.
    Want me to bring in a person so this doesn't loop?
    Honored immediately

    "Let me talk to a person"

    Sometimes the customer just says it outright. There's no persuasion attempt and no round of qualifying questions first: the request is taken at face value.

    SupportOnline
    Let me talk to a person.
    Of course. Let me take your details so the team can reach you, along with everything we've covered.
    Connect me
    Outside what the AI can complete

    An account or pricing request it can't complete

    Refunds, contract terms, anything needing an account change or a commercial decision. The AI is upfront that it can't do it from here rather than half-attempting it.

    SupportOnline
    Can you process a refund on order #12452?
    I can't complete that from here. I'll pass it to the team with a summary.
    Yes, please
    In the Product

    What You Set, and What You See

    The five screens behind a handoff: the one you configure, the ones your customer meets, and the two your team works in.

    Screen 01

    Turning it on

    One switch per agent, and a plain text box underneath it. Whatever you write in that box is the entire rule: no builder to click through, no keyword list to keep current. A default is filled in for you, and you can rewrite it in your own words whenever you like.

    Screen 02

    Checking it before it goes live

    The settings page previews the widget next to your configuration, so you can read the offer exactly as a customer will receive it before anyone actually does. Replay it as often as you need while you decide whether the condition is set the way you want.

    Screen 03

    The form you don't have to build

    It assembles itself from the channels you switched on. Pick Email and a single email field appears; pick WhatsApp and it asks for a number instead. The name stays optional, and there's nothing here for you to lay out or write validation for.

    Screen 04

    Where requests arrive

    The Handoff requests tab, sitting next to Settings. Everything lands in one shared list with counts by status, so nobody is waiting to be assigned before they can pick something up. Search it by name or by the reason the AI recorded.

    Screen 05

    What's on the record

    Open a request and it's all there: who it was, the reason, a short summary of the conversation, whether the knowledge base came up short, and the contact detail they picked. All of it written before you opened the row.

    On the Record

    What Your Team Receives

    Every handoff request arrives with the context your team needs, written before anyone opens it.

    • Why it was escalated — a short reason in the AI's words.
    • A conversation summary — what happened, not a full transcript.
    • Whether it was a knowledge gap — so you know if your docs were the cause.
    • The customer's name — if they chose to give one.
    • Their chosen contact method — email, phone, or WhatsApp.
    • The matching contact detail — the one field for that method.

    For developers, that arrives as:

    {
      "handoff_reason": "Asked about a refund on order #12452",
      "session_summary": "Customer ordered on May 3, item arrived damaged...",
      "is_knowledge_gap": false,
      "contact_method": "WhatsApp",
      "customer_name": "Priya Shah",
      "customer_phone": "+91XXXXXXXXXX"
    }
    Webhooks

    Get the same context on your own server

    The request is always recorded in your queue first. Add an HTTPS endpoint under the agent’s Webhooks settings and subscribe it to Human handoff. Once the request exists, Robofy delivers it from our backend, so it can open a ticket, post into Slack, or create the CRM row without anyone copying it across.

    Three events

    Subscribe to session end, human handoff, and lead capture. Handoff is sent as soon as the request is recorded, with no timer to configure.

    Signed and yours

    Delivery is to your own HTTPS endpoint, with an optional secret for signature verification and a timeout you set in seconds.

    More than one

    An agent can have several webhooks, each named, each independently switched on or off, so staging and production never share a target.

    Delivery is server to serverThe AI never calls your endpoint and is never given it. Robofy notifies your endpoint afterwards, outside the conversation. That is the opposite direction from function tool calling, where the agent calls your API mid-chat and waits for the reply.
    The queue still keeps the recordThe queue and the webhook are not either-or. The handoff request is still recorded in Handoff requests for your team to work from, whether or not a webhook is listening.
    Reaching Your Team

    How Customers Can Reach Your Team

    You choose which contact options the agent is allowed to offer. It shows only the ones you have filled in, and showing them never creates a handoff request on its own.

    Phone

    Let customers call your team. The agent shows the number as a tap-to-call action.

    +1 (XXX) XXX-XXXX

    WhatsApp

    Let customers message your team on WhatsApp. Opens a chat with your business number already selected.

    Message us on WhatsApp

    Email

    Let customers email your team, opened straight from the conversation.

    support@northwind.example

    Calendar

    Let customers book a time with your team by linking your scheduling page.

    Book a time

    Custom instructions

    For anything that is not a number or a link, write the instruction yourself and the agent passes it on in your words.

    Agent saysMessage @acmesupport on Slack and a teammate will join within a few minutes.
    They accept a handoff

    The agent asks how they would like to be reached and collects that one field: email, phone, or WhatsApp. A request is created for your team.

    They reach you directly

    The options above are the reverse: ways your team invites a customer to reach out. A customer who declines the handoff still sees them, and no request is created.

    Trust & Control

    Human Handoff Without Surprise Escalations

    Always

    • Confirms in its own words, without inventing a ticket number or a response time.
    • Leaves no record behind if the customer decides against it.
    • Passes on what the conversation contained and the detail they chose to give, nothing more.

    Never

    • Escalates without an explicit yes from the customer.
    • Keeps pushing the offer after someone has declined it.
    • Names a specific teammate who'll follow up. It goes to your shared Handoff Requests queue, not an individual.
    FAQ

    Frequently Asked Questions

    Real questions about how handoff behaves in practice.

    How does the AI decide when to hand off to a person?

    You write the condition in plain English, for example, "the customer asks for a human, or the same issue isn't resolved after a few replies." The AI evaluates that condition itself in every conversation, so you're not stuck picking rigid keywords to trigger on.

    Will it ever escalate without telling the customer?

    No. The AI always offers first and only creates a handoff request if they say yes. Either way it shares your direct contact options and carries on helping in the chat. Declining simply means no request is created; showing those contact options on its own never creates one.

    What does my team see when a conversation is escalated?

    A short written summary of the conversation, the reason it was escalated, whether it happened because your knowledge base didn't cover the question, and however the customer chose to be reached, all on the record in your Handoff Requests queue, not a raw transcript to dig through.

    Does it route to a specific teammate?

    Not by a fixed rule. Every escalation creates a request in a shared Handoff Requests queue (Open, Notified, Closed) for your team to work from, and the customer is shown whichever contact options you've configured: phone, WhatsApp, email, a booking link, or your own custom instructions.

    When should an AI agent escalate to a human?

    Most teams escalate on three kinds of moment: the customer explicitly asks for a person, the same issue is still unresolved after a few replies, or the question falls outside what the knowledge base covers. Requests needing an account change or a commercial decision, like refunds or pricing, are a common fourth. You decide which of these apply by writing the condition yourself, so it can be as narrow or as broad as your team can staff.

    Can a customer ask to speak to a human at any time?

    Yes, provided your condition allows for it, and the default one does. An explicit request is taken at face value: the AI doesn't try to talk them out of it or run them through qualifying questions first. It offers to take their details straight away.

    Does human handoff mean a live agent takes over the same chat?

    No, and that's deliberate. The AI stays in the conversation and keeps helping. What it creates is a handoff request holding the reason, a summary, and the contact detail the customer picked, so your team follows up on that channel, at a point where they can actually give the question proper attention, rather than the customer waiting in a chat window for someone to become free.

    What contact options can customers choose?

    When the AI collects a way to reach someone, it asks for email, phone, or WhatsApp, and only the one field matching their choice. Separately, you can configure the contact options your agent is allowed to show: phone, WhatsApp, email, a calendar or booking link, or your own custom instructions. Showing those never creates a handoff request on its own.

    Can I configure different handoff rules for different AI agents?

    Yes. Both the on/off switch and the condition itself are per-agent settings, so a sales agent and a support agent can escalate on completely different terms, or one can have handoff turned off entirely. The contact options each agent is allowed to show are configured per agent too.

    Give Your AI a Better Way to Step Aside

    Define when human help is needed once, and give your team every escalation with the context already attached.

    Start Free