Activechat Essentials

E-commerce Chatbots

Advanced Chatbot Tools

Tracking code installation

Tracking page visits

Natural Language Chatbots

Intents and Entities

NLP contexts

Building Dialogflow agent and connecting to Activechat

Sending user input to NLP engine

Triggering bot skills by intents and events

Working with entities

Slot filling

Using contexts

NLP best practices 


Conversation elements

Designing great conversational experiences is hard. You have to consider thousands of things, and managing conversations takes a lot of efforts. Simple bots are easy, but very limited in what they can do. As soon as you start adding more functions, the flow of your bot can quickly become unmanageable.

So, before getting to actual bot development, let’s recap some best practices for conversational design. Some of those I’ve already outlined in a blog post on “Why most chatbots suck and how to build bots that bring value™” which I highly encourage you to check.

Our core concept is “LEGO for chatbots”. What we mean here is something as easy and versatile as LEGO, applied to a complex process of chatbot development,


To achieve this, we encourage you to split complex bots into so-called skills. Each skill is a series of bot actions that is intended to achieve certain goal. Here are some common examples of skills:

  • answer question from a FAQ
  • show restaurant menu
  • create appointment
  • show specific product from online shop
  • make an order
  • get a taxi
  • etc.. you get the idea.


Next, you build each skill from blocks that we provide in the platform. Examples of blocks are:

  • TEXT block to send message to user
  • LISTEN block to get user reply
  • DATA block to store some variables or attributes
  • TIMER block to delay or pause conversation
  • PRODUCT block to display an item from your online store
  • …and many more – we’ll get to these blocks very soon.


Skills are triggered by events, another core concept of our Visual Bot Builder, and almost anything can be an event in Activechat. Here are some examples of events:

  • user interacts with the bot for the first time (_START system event)
  • user send message to the bot (_DEFAULT system event)
  • order is updated in the online shop (_ORDER_UPDATED system event)
  • natural language intent is triggered in NLP engine like DialogFlow
  • user scans a QR code with specific ref= parameter

This mimics the natural conversation flow – when talking, people tend to react to various events happening in real time, and update their conversation accordingly. There are two blocks in Activechat to work with events – one is SEND (this is throwing an event) and another is CATCH (this one is listening to specific events and launches connected blocks when event is triggered). This allows you to send events when you need it – for example, to start one skill in the middle of another.

Please note that every skill in your bot should start with CATCH block – it is added automatically when you create new skill, and will be triggered by event with the same name.


And then come checkpoints. Checkpoints are great to track your funnels – both for individual skills and for bots. Checkpoints are also useful when you have one skill triggered in the middle of another. We’ll get back to checkpoints quite soon, in the “Natural language understanding” article.

Skills, blocks, events and checkpoints explained

In the example above you have a simple bot made of two skills. Skill ABC is triggered with “START” event – this is a system event which is being triggered every time a user starts communicating to your bot (presses “Get started” button in Facebook Messenger or runs Alexa skill for the first time, for example).

Next, block 1 in skill ABC us checking some conditions and gives control either to block 2 or block 3 (these can be TEXT block to send a message to your user). Immediately after these blocks checkpoints ABC.1 or ABC.2 are triggered (we’ll get back to these in a moment), and if the user was in block 3 branch, block 4 will do it’s job. At the end of this conversation brach there’s a SEND block to send “XYZ” event, and that’s all for that skill.

But once “XYZ” event was send from ABC skill, it will trigger CATCH block in skill XYZ, and this skill will start running, sending blocks 1 and 2 to the bot user and then triggering XYZ.1 checkpoint.

Why do you need checkpoints? Well, first of all it’s a great way to track your funnels – you can set checkpoints to a certain steps in your communication process and then see where the users are falling off. 


Checkpoint 1 can be “user starts communicating with the bot”, checkpoint 2 will be “user added some items to his shopping cart” and checkpoint 3 – “user made a checkout”.

But what’s even great about checkpoints is that they let you get back to the exact step in your complex skill A if another skill B was triggered before the end of A. Common example – skill A is for making restaurant reservations, and in the middle of it user says something like “What’s your schedule on Monday?” and that triggers completely different skill through NLP engine. We’ll be discussing this in more detail in the Natural Language part of our advanced manual.