6 Tips To Improve the User Experience of Your Customer Support Chatbot

Josh Zheng
IBM watsonx Assistant
8 min readSep 21, 2017

--

There are many customer support chatbots out there. Having seen quite a few of these, I believe many of them could be improved with a couple basic changes.

One of the major mistakes I see is the lack of attention to user experience. In this post, I’ll go over a few tips that’ll improve the user experience of your customer support chatbot. These tips will be presented using Watson Conversation, but don’t worry the ideas are easily translated to any framework or platform of your choosing.

Tip #1: Introduce your chatbot to first-time users

When a user comes across your chatbot for the first time, he or she will not know how to interact with it. This might be the first time this user has interacted with any chatbot. At this point, the worst thing you can do is to present the user with a blank screen.

One way to create a better user experience is to immediately introduce the user to what the chatbot can do and how to talk to it. A welcome message (something short, simple and motivating) is usually best followed by a helpful paragraph about the chatbot.

To create such a message with Watson Conversation, go to the Dialog tab and create a dialog node. The following screenshot shows an example of a dialog composed of many nodes.

Notice that the first node is the Start and Initiate Context node. This is what the user sees when he first launches your chatbot.

How does Watson Conversation know to launch this node at the very beginning, before any user inputs? If you look at the right side of the screenshot (a detailed view of the selected node), there is a if bot recognizes field. The if bot recognizes field is part of every node, and it sets the condition to which that node is triggered. When the value of that field is set to conversation_start, which is a service keyword, Watson Conversation knows to trigger this node and present the initial chatbot message at launch.

Note: You can now also use Welcome instead of conversation_start.

The response of this node is a JSON object. There, you can see that the service also initializes the context variables (which we’ll talk about later), along with the initial introductory text you’ve entered.

Tip #2: Add variations to your responses

Adding variations to your responses makes your chatbot seem more human, and thus more engaging. Of course, there are a lot of others ways to make your chatbot seem more human. For example, you can give your chatbot a full personality makeover like Poncho. But we’re not going to talk about that here since chatbot personality is a post on its own. Moreover, having a strong personality isn’t the right approach for most customer support chatbots.

One simple trick is to rotate through a set of different responses to the same question. Watson Conversation has to ability to send different responses to the same intent. If you look at the JSON object in the screenshot above, and you’ll see that output.text.values is an array, which means you can fill it with a list of possible responses. When you do that, one of the responses will be chosen at random. You can do this in the tooling UI, as seen in the screenshot below. This is a cool little feature that gives your chatbot an additional sense of randomness. After all, as humans, we rarely give the exact same response to a question twice in a row.

Here’s another example. The screenshot below shows a greeting node that is activated when the bot recognizes the#greetings intent. You’ll see that we’ve provided a list of possible greetings so that a user can be greeted differently at the beginning of different conversations.

Note: You don’t need response variation at every dialog node. It’s important to have response variations in nodes that your users commonly visit, such as greeting and thank you nodes. Informational nodes are typically only visited once per customer so response variations are not as necessary.

Tip #3: Make the main menu accessible anywhere

Of course this tip only applies if your chatbot has a main menu of available actions. However, most customer support chatbots should have this. The menu is usually presented at the beginning of a conversation. But as the conversation carries on, the user will most likely forget the list of possible actions. At this point, making the user scroll all the way back to the beginning makes for a terrible user experience. A better experience would be to make the main menu always accessible via some intuitive phrases. It also helps to regularly remind the user that this is possible.

One way to do this in Watson Conversation is to create an intent called #menu that captures messages such as: “Where do I go from here?,” “I need the menu,” and “Where is the main menu?” Then, when your chatbot recognizes the #menu intent, it can remind the user the set of available actions.

Two other related intents that should be present throughout your conversations are the #help and the #start_over intents. Make sure to include all of these intents, it’ll save your users a lot of time and frustration.

The #start_over intent is pretty self explanatory. Sometimes a user has gone down an incorrect path and realizes it’s simply easiest to start over. At this point, it’s useful to have an intent that registers messages such as “I want to start over” or “Let’s restart this conversation”.

The #help intent should lead your users to a help menu. Sometimes, your users get stuck in conversation loops or simply become lost completely. Having a #help intent is like having an emergency eject button that gets your users to safety. Better yet, your help menu should have an option to talk to a human support agent. This is important because your users are probably already a little frustrated by the time they’re asking for help. The option to talk to a human reminds them that they’re not alone, and their problem will be solved even if the chatbot didn’t work as intended.

Tip #4: Have context awareness

Having context awareness means your chatbot remembers important events and information about your users. This is important for user experience because a user should never have to provide a piece of information twice, or worse, get asked repeated questions.

Watson Conversation provides a context object that let’s you store any key-value pair as context variables. In the screenshot below, you will notice that there is a context object that stores all the context variables related to the user’s pizza order. The variables get updated as the user progresses through the ordering process. And once the chatbot recognizes the #reset intent, it will set all pizza parameters to null so the user can restart the order.

See my previous blog post for more information on how to use the context variable.

Note: Another way to acquire some context around your users is to integrate with a CRM or third-party database (

has a great post on adding persistence layer to Watson Conversation). If you’re on Facebook Messenger, you can pull information about your user from his profile. Remember, starting a conversation with even some basic knowledge of your users (name, job, location etc.) can make your chatbot seem more familiar and start your interaction off on the right foot.

Tip #5: Be able fix incorrect inputs

Your users will inevitably make mistakes while talking to your chatbot, often in the middle of a conversation. When that happens, the last thing you want is for the user to have to restart the conversation all over again.

Your chatbot should be able to handle this scenario. This means if the user ever sends the wrong message, he/she can reenter the correct response. In Watson Conversation, some of these situations can be solved with the new slots features.

Continuing with the pizza ordering scenario (screenshot below), each slot contains one piece of information we need from the user.

Now if the user accidentally entered “small” for the size of the pizza, she can simply say “actually I meant large” to fix the mistake. This is because when we’re at this node, Watson Conversation automatically checks all user inputs for the defined entities. And in this case, the @pizza_size entity includes the values small, medium, and large (see below). So when Watson Conversation sees the entity value large in the phrase “actually I meant large”, it updates the slot with the latest value (“large”).

Besides this neat little trick above, slots also drastically simplifies your conversation flow. So be sure to use it whenever you can!

Note: this trick will not work if entering the pizza size completes all slots and the dialog moves on to the next node.

Tip #6: Handle the “I do not understand” case

As users interact with your chatbot, you’ll encounter messages and intents that you’ve never seen before. This is normal. When this happens, the most important thing to do is to acknowledge the situation instead of not responding at all.

This is why it’s important to have a catch-all node in your dialog. In Watson Conversation, this means having a node that handles anything_else, which is another service keyword.

Of course this is not ideal but it is totally okay to inform the user that you do not understand the message. At this point you can either ask the user to rephrase the request or look to hand the conversation off to a human customer support agent. You can even have the chatbot thank the user for the new message and promise that an answer will be available for her next visit.

Just remember that after this happen, be sure to go back to your chat log and figure out what went wrong. You might find my previous post on improving your chatbot using chat logs helpful.

Conclusion

That’s all readers. Remember, it’s easy to get started with customer support chatbots but it take patience and hard work to build a truly successful one. Hopefully these tips get you a little closer.

I’ll leave you with this analogy from my colleague

. Building a chatbot is much like training a new hire — the new hire probably only knows a little on his first day, but through coaching and supervision he’ll eventually become a productive employee. It’s important for your users to see your chatbot as a human, but it’s equally important for you to do the same.

As always, if you have any questions, feel free to reach out at joshzheng@us.ibm.com, connect with me on LinkedIn, or follow me here on Medium or Twitter.

--

--

Josh Zheng
IBM watsonx Assistant

Head of DevRel @ Great Expectations. Previously DevRe Lead at Shopify and IBM Watson. Hates writing.