Most website chatbot projects spend weeks on the model, the prompt and the knowledge base, then bolt on "talk to a human" in the last sprint. That's backwards. For a business site, the handoff is where leads are won or lost: the visitor who asks something the bot can't answer is usually the one with a real, specific need.

This is the handoff spec we start from when we build a chatbot for a client's website. It's stack-agnostic: it works whether the bot runs on OpenAI, Claude or Gemini, and whether the human side is Intercom, Zendesk, Slack, email or a plain CRM task.

1. Decide what triggers a handoff

Write the triggers down before you write any code. We use five:

  1. The visitor asks for a person. Phrases like "speak to someone", "human", "agent", "call me". Detect these with a simple classifier or a keyword list; don't leave it to the main model's mood.
  2. Low confidence. The retrieval step found nothing relevant above your threshold, or the model says it doesn't know. Log the score so you can tune the threshold later.
  3. Restricted topics. Refunds over a set amount, complaints, legal questions, medical or financial advice, anything about a specific account. These go straight to a person, with no attempt to answer.
  4. Buying signals. A quote request, a booking, a "how soon can you start?". The bot can collect details, but a person should follow up quickly.
  5. Loops. The same question rephrased three times, or three "that didn't help" replies in a row.

Make each trigger a named reason (USER_REQUEST, LOW_CONFIDENCE, RESTRICTED_TOPIC, BUYING_SIGNAL, LOOP). You'll need the reason later for routing and reporting.

2. Collect the minimum before you hand over

A handoff with no context makes the visitor repeat themselves. A handoff that demands ten form fields loses them. Ask for only what the person picking it up needs:

  • name
  • the best contact method (email or phone) and consent to be contacted
  • a one-line summary of the problem, which the bot can draft and the visitor can confirm

Store consent as a boolean with a timestamp and the wording shown. If you serve visitors in the UK or EU, this is the kind of record your privacy team will ask for.

3. Business hours change the promise, not the flow

The bot must never promise "someone will be with you shortly" at 2 a.m. on a Sunday. Keep the flow the same, but change the message:

{ "timezone": "America/Chicago", "hours": { "mon-fri": "09:00-18:00" }, "in_hours_message": "I'm passing this to the team now. Most replies arrive within 15 minutes.", "out_of_hours_message": "The team is offline right now. I've saved your question and they'll reply by email on the next working day." } 

If your team covers several markets (say Dallas and Toronto), keep one schedule per queue rather than one global schedule.

4. The handoff payload

This is the contract between the bot and whatever your team uses. Keep it boring and versioned:

{ "version": 1, "conversation_id": "c_8f2a...", "reason": "BUYING_SIGNAL", "summary": "Wants a WhatsApp chatbot for 3 clinics, asks about timeline", "visitor": { "name": "Jordan", "email": "jordan@example.com", "consent": { "given": true, "at": "2026-11-11T09:12:44Z", "text_id": "consent-v3" } }, "page_url": "https://example.com/pricing/", "utm": { "source": "google", "campaign": "brand" }, "transcript_url": "https://internal.example.com/conversations/c_8f2a", "retrieval": { "top_score": 0.41, "sources": ["/services/", "/faq/"] } } 

A few rules we follow:

  • Send a link to the transcript, not the whole transcript, when the destination is email or chat. It keeps personal data in one place and lets you apply access controls.
  • Include the page URL and UTM data. Sales teams care which page and campaign produced the conversation.
  • Include the retrieval score. When you review handoffs weekly, low scores show you which questions your content doesn't answer yet.

5. Route by reason

Reason Destination Target response
BUYING_SIGNAL CRM deal + sales channel alert same working hour
USER_REQUEST support inbox or live chat per your support SLA
RESTRICTED_TOPIC named owner (e.g. billing) same working day
LOW_CONFIDENCE support inbox, tagged for content review same working day
LOOP support inbox, tagged "bot failure" same working day

A webhook to an automation tool (n8n, Make or Zapier) is usually the simplest way to fan this out, because routing rules change more often than bot code.

6. Tell the visitor what happened

After the handoff, the bot should say exactly three things: that a person has the conversation, when they can expect a reply, and where the reply will arrive. Then stop answering new questions in that thread, or clearly mark further answers as automated, so the visitor isn't confused about who is talking.

7. Measure it

Track these weekly:

  • handoff rate by reason
  • time to first human reply, split by in-hours and out-of-hours
  • share of BUYING_SIGNAL handoffs that became a booked call or quote
  • top 20 LOW_CONFIDENCE questions, which become your next content updates

If the LOW_CONFIDENCE list keeps shrinking, the bot is getting better. If the BUYING_SIGNAL reply time keeps growing, the bot is working and your team isn't keeping up, which is a good problem but still a problem.

FAQ

Should the bot try once before handing off on a restricted topic?
No. For complaints, refunds and anything legal or account-specific, a fast handoff is better than a confident wrong answer.

Can the handoff happen inside the same chat window?
Yes, if your live-chat tool supports it. Many teams start with email and a CRM task, then add in-window live chat once volume justifies staffing it.

What confidence threshold should we use?
There's no universal number. Start conservative, log every score, and review 50 handoffs after the first two weeks to tune it.

Do we need consent before collecting an email address?
Ask for consent to contact the visitor and record it. The exact wording depends on where your visitors are; check it with whoever owns privacy in your business.

We design these flows as part of our AI chatbot development work for US businesses, from the handoff rules to the CRM routing.