All articles
Playbooks7 min read

Designing the handoff to a human

The moment your bot gives up is the moment that decides how customers remember the whole interaction. Most teams treat it as an error path. It is a feature.

Two white speech bubbles passing a glowing blue baton of light between them

Every support bot hands off eventually. The interesting question is not whether, but how gracefully — and whether the customer experiences it as the system working or as the system failing.

Know when to fold

Four triggers cover almost everything worth escalating. Wire them explicitly rather than hoping the model notices.

  1. 1Weak retrieval. Nothing relevant came back above your similarity threshold. Do not let the model improvise over an empty context.
  2. 2Repeated failure. The visitor has rephrased the same question twice. The third attempt will not go better.
  3. 3Frustration signals. Profanity, all caps, "this is ridiculous", "let me talk to a person". Escalate immediately; do not attempt one more answer.
  4. 4Category rules. Anything touching billing disputes, account deletion, security, legal or safety goes to a human by policy, regardless of how confident the bot feels.

Hand over the context, not the transcript

The single biggest determinant of whether an escalation feels good is whether the customer has to repeat themselves. They should never have to.

A useful handoff payload is a summary, not a dump:

json
{
  "summary": "Customer cannot connect their Shopify store. Widget
              shows 'invalid token'. Already tried reinstalling.",
  "intent": "integration_failure",
  "attempted": [
    "Sent the Shopify reconnect guide — did not resolve",
    "Confirmed they are on the Pro plan"
  ],
  "sentiment": "frustrated",
  "unanswered": "Whether their token was rotated in the 4.2 release",
  "transcript_url": "https://app.example.com/sessions/9f2c"
}

An agent can read that in eight seconds and open with something that demonstrates they already know. The full transcript stays one click away for when they need it.

Say what is happening

The handoff message itself does a lot of work. Compare:

WeakStrong
I'm transferring you to support.I don't have a reliable answer on token rotation — I'm passing this to Priya on our integrations team with everything you've told me. She's usually back within an hour.
Please wait...You're third in the queue, about 6 minutes. You can close this window — the reply will land in your email.
Our agents are offline.Nobody is on until 9am UTC (about 7 hours). I've saved this conversation and someone will reply to hello@example.com first thing.

Specificity is the whole trick: name the reason, name the destination, name the timeframe.

Handle the after-hours case properly

Most handoffs happen when nobody is available, and this is where teams lose people. The fix is not to pretend someone is there. It is to make the wait feel handled: confirm the message was captured, state when a reply will come, and give the customer a way to add information while they wait.

Customers forgive a bot that cannot answer. They do not forgive a bot that pretends to be a person, or a queue that swallows their question without acknowledgement.

Close the loop back

The escalation is also the highest-quality training signal you will ever get: a real question, and a real human answer that resolved it. Route resolved escalations into a weekly review, turn the recurring ones into documentation, and the same question stops escalating next month.

A bot whose escalation topics are identical in January and December is not learning. That loop, not the model, is what improves over time.

  • UX
  • Escalation
  • Operations

Keep reading