Skip to content
easeweb
Search topics

Help chatbots with no way to reach a person

A shop's help chat is a bot that knows only a few topics, and nothing in it or elsewhere on the site leads to a person when a question falls outside them.

Best practice
No WCAG criterion requires it
Related WCAG 2.2
SC 3.2.6A· new in 2.2
Required by
Not required by Section 508 or EN 301 549
Broken const fallback = 'Sorry, I didn’t get that. Try a topic below.';
The accessibility problem illustrated: Cognitive:Can I ask a person?
01

The problem

People whose question the bot doesn't recognise can't get help, because it never offers them a person.

02

Try it

Your new sofa came with a leg missing. Ask the help chat to get one sent.

Send the message as written, or in your own words, and try the topics. Then look for a way to ask a person.

Broken Can you fix this?

BrokenA chatbot that only lists its topics

Help

Ask Birchwood

Hi! I can help with tracking, returns and delivery times.

A recreated demo. The broken version is intentionally inaccessible.

03

The fix

Offer a way to reach a person in the chat itself, from the first message.

  1. 1Show a way to reach a person in the chat from the start, not only after the bot has failed.
  2. 2When the bot doesn't understand, its reply names the way to a person.
  3. 3Every route to a person reaches staff, says when they reply, and never opens the bot again.
Before A chatbot that only lists its topics
<section class="chat" aria-labelledby="chat-title">  <h2 id="chat-title">Ask Birchwood</h2>  <div class="chat-messages" role="log" aria-label="Messages">    <p>Hi! I can help with tracking, returns and delivery times.</p>  </div>  <div class="chat-topics">    <button type="button">Track my order</button>    <button type="button">Returns</button>    <button type="button">Delivery times</button>  </div>  <form class="chat-form">    <label for="chat-message" class="visually-hidden">Message</label>    <input id="chat-message" autocomplete="off">    <button>Send</button>  </form></section>
After

A Talk to a person button in the chat

<section class="chat" aria-labelledby="chat-title">  <h2 id="chat-title">Ask Birchwood</h2>  <div class="chat-messages" role="log" aria-label="Messages">    <p>Hi! I can help with tracking, returns and delivery times.</p>  </div>  <div class="chat-topics">    <button type="button">Track my order</button>    <button type="button">Returns</button>    <button type="button">Delivery times</button>  </div>  <button type="button" class="chat-person" aria-expanded="false" aria-controls="person-form">Talk to a person</button>  <form id="person-form" class="person-form" hidden>    <p>Someone on our team will reply by email within one working day. This chat is sent with your message.</p>    <label for="person-message">What do you need help with?</label>    <textarea id="person-message" name="message"></textarea>    <label for="person-email">Your email</label>    <input id="person-email" name="email" type="email" autocomplete="email">    <button>Send to our team</button>    <p class="person-sent" role="status"></p>  </form>  <form class="chat-form">    <label for="chat-message" class="visually-hidden">Message</label>    <input id="chat-message" autocomplete="off">    <button>Send</button>  </form></section>

04

Verify the fix

5 checks, no mouse.

Test with: Keyboard, Screen reader

0 of 5 checked

Record the OS, browser and assistive-technology versions, the build, the date, and the actual result of each step. Repeat after any change to the bot's topics, the widget or the support team's hours.

How screen readers handle role="status" and aria-expanded

Limits

This is a starting pattern, not a guarantee for every site. A way to reach a person helps only as far as the people behind it do: a reply that takes a week, or a team that can't change an order, fails the same customers later. This guide is about whether a person can be reached, not about how the bot itself is built; test the whole route, from the first question to the reply, with the people your customers include.

This is a recreated teaching example, not a finding about a named client. The code is a starting pattern: test it in your own product. No completed assistive-technology test is claimed here.

EaseWeb service

Fixed it? Keep it from coming back.

I turn guides like this one into rules your coding agents follow and checks your CI runs. Then I retest by hand with a keyboard and screen readers, periodically.

See the service