Best Practices for Designing a Conversational Chatbot Experience

Best Practices for Designing a Conversational Chatbot Experience

Posted on March 13, 2018 0 Comments
Best Practices for Designing a Conversational Chatbot Experience_870x450

Designing a conversational experience requires a set of best practices that go beyond the natural language understanding and personality of your chatbot. You will need to account for unexpected scenarios, interruptions, ambiguities and other situations that are the norm when having a conversation in real life.

When we started creating NativeChat, a platform for building chatbots, we decided to follow an opinionated approach that leads chatbot developers through a set of best practices. Let’s take a look at what we deem important as best practices in designing state of the art conversational experiences.

Welcome Message

Welcome Message NativeChat (Sample)Your welcome message is designed to help your users understand that they will be talking to a chatbot, and it’s one of the most important messages.

Make it a Personality

Ensure that your chatbot doesn’t sound like a robot. Make it a personality with its own character that is aligned with the voice of your brand.

Avoid Setting a Gender

Using a neutral gender is the best option as it allows users to focus on the activity that they are doing instead of drawing too much attention to the character.

List What Your Bot Can Do

Your welcome message is the place to list all options that your bot can do so that users don’t spend time trying to engage in a conversation that your bot doesn’t support.

Every NativeChat chatbot requires a getting-started conversation that lists the most important conversations as quick-replies to the user.

Give Instructions on Starting Over

Ensure that your welcome message provides users with an ability to restart the conversation so that they don’t feel trapped.

There is a built-in restart command in every NativeChat chatbot. You can also change the restart keyword from the settings of your chatbot.

Make it Easy to Talk to a Human

It’s often necessary to hand off the conversation to a person. Ensure that this option is available for your users, and your chatbot stays silent while the operator and the user are continuing the conversation.

There are built-in stay-silent and silence-timeout settings for every chatbot in NativeChat that you can use to mute your chatbot until the operator resolves an issue with the user.


The majority of the platforms for building chatbots allow you to do some kind of intent training as part of their natural language understanding. However, intents are too granular and make it hard for you to design a meaningful conversation. That is why in NativeChat, we have broken the training into two:

  • Conversation training that will help your chatbot identify the correct conversation that needs to be started with the user
  • Entity training that will teach your bot to recognize Entities from a conversation with a user

Thus, imaging your chatbot as a set of conversations is a much simpler way to design your chatbot. Also, each conversation usually matches to an existing process your users are already doing either in a mobile app, website or through email.

Deal with Interruptions

The user might change his mind about an input he just entered, or he might want to completely change the topic of conversation. Ensure that your chatbot can deal with such interruptions, rather than pushing the user in a fixed decision tree that he needs to follow.

NativeChat evaluates the probability at each user message of whether the user is switching the topic of the conversation, or whether he is providing information about a previous step of the conversation, achieving truly intelligent conversation.

Provide Suggestions NativeChat (Sample)Provide Suggestions

The majority of the channels that support chatbots such as Facebook, Viber and Slack, provide some kind of a quick replies or options that can facilitate the user when making a decision. Ensure that you are using them to enrich the conversational experience.

NativeChat supports both static definition of quick replies entered manually, or dynamic definition retrieving the options from a web service.

Make Your Bot Versatile

When you talk to a person, it’s rare that he uses the same words and sentences to interact with you. Make sure that you make the conversation versatile by including multiple messages that the bot can choose from.

NativeChat allows the definition of multiple messages per each question that will be sent randomly.

Clear about Whats Understood NativeChat (Sample)Be Clear About What the Bot Understands

Using natural language understanding helps you understand what your users want to do, and also to extract entities from the conversation. However, it’s important that you keep the user informed of what the bot actually understood.

NativeChat provides the ability to set acknowledgments messages that will be used only when the bot identifies the entity without explicitly asking for it. For example, if the user starts the conversation with a message, and the bot identifies an entity (let’s say doctor), it will send the acknowledgment messages for the doctor entity to the user.

Deal with Ambiguities

There are cases where a bot can identify multiple values for a given entities. For example, imagine there is a chatbot for booking doctor appointments, and the user sends the following message “Is Dr. John Burke or Dr. Stan Smith a better doctor?”. Unless your bot has a conversation for comparing doctors, it will need to clarify for which doctor the user wants to book an appointment.

NativeChat supports an ambiguity setting for each step in a conversation. That way your chatbot will automatically present the user with quick replies to identify the correct user input.

Remind Your Users Before You Lose Context

There will be times when your users abandon a conversation. The next time the user engages with your chatbot, the practice is that you will begin the conversation with the user where it was left off, or you will have some expiration time for your conversation session.

But both approaches are not optimal. If the user returns in 2 weeks, he will never want to continue a 2 weeks old conversation. On the other hand, an expiration for your session with the user is a better option, but it’s tricky to guess the correct expiration length in minutes. That is why we recommend actually asking the user whether he wants to continue his session 30 minutes after his last message. This draws attention to your chatbot if the user got distracted, and keeps him in control.

Lack of Understanding

Regardless of how many conversations and entities you trained your chatbot to understand, there is always a chance that things will go wrong. There are several must-have scenarios that you need to support outside the regular conversations of your chatbot.

Handle technical issues

Building a smart chatbot that pulls dynamic data from web services is always exposed to the risk of а failing service call. Ensure that you have a good error handling on all dynamic services that will keep the user informed if things fall apart.

NativeChat supports a general-failure setting for each chatbot that will be used when it encounters experiences technical problems.

Be Clear When the Bot Doesn’t Understand

Until your chatbot gains enough training data, there will be scenarios where your chatbot won’t understand all of your intents. If you are using a standard message such as “I am not sure I understand what you said.” avoid sending it more than three consecutive times, and direct the user to an operator instead.

Ready to Try NativeChat?

If you want to create a chatbot that has all these built-in best practices, register in NativeChat portal for free and start your cognitive journey.

Build your first NativeChat bot


Hristo Borisov

Hristo was formerly responsible for bootstrapping and leading new products at Progress in markets that have strong potential (>$1 billion) and are growing with CAGR 30% and above. Hristo had been with Progress for more than 10 years and led Progress NativeChat, an artificial intelligence-driven platform for creating and deploying chatbots based on patent pending CognitiveFlow technology that can be trained with goals, examples and data from existing backend systems.


Comments are disabled in preview mode.

Sitefinity Training and Certification Now Available.

Let our experts teach you how to use Sitefinity's best-in-class features to deliver compelling digital experiences.

Learn More
Latest Stories
in Your Inbox

Subscribe to get all the news, info and tutorials you need to build better business apps and sites

Loading animation