Redefining Self-Service with Bots

In this walk-through, we’ll show you how to build a self-service bot using the simple but powerful code-free tools provided by Flow XO. You don’t need to be a developer or even have experience with bots to build an extremely efficient self-service bot.

You can install the flow used for this walk-through using the below link.

What is Flow XO?

Flow XO provides a wide range of bot and integration services that will allow you to easily build bots that can be as simple as getting business opening times, to being a robust highly functional, sophisticated and automated bot solution that can integrate with any of the 90+ pre-built integrations as well as REST API’s. Whether you’re an IT consultant or just someone who’s a bit tech savvy, you’ll be building bots in no time with us!

What are bots?

Bots are a way to provide automation via chat channels. They have many use cases but we will be focusing on bots used for self-service. We are going to walk-through building a bot which will used to track an order.

If you haven’t yet created a bot to use, you can follow our detailed instructions to create a bot for Telegram, Messenger and Slack.

What can this bot do?

The bot that we have built for this tutorial is a simple but highly functional bot that will allow customers to fetch information about the progress of their order. It has a layer of security that involves verifying the customers details before any information is provided making a secure and effective self-service bot.

How does it work?

We build a flow which contains the logical steps that are to be followed. In this walk-through those logical steps will verify the customer’s details, request the order status and provide those details to the customer via the supported chat apps (Telegram, Messenger, etc). The services that are used to add the logic to the flow are webhooks and bot messages/questions. None of these services require code/scripting.

Why use Bots?

Self-service bots could heavily reduce the need to speak to an adviser so your advisers to get on with more important tasks, while you keep your support running costs low.

An average support adviser working for a busy retail company can expect to handle 15–20 emails per hour for simple enquiries such as checking the status of an order and tracking a parcel.

How many an hour do you think a bot could do? You’ve probably got this huge number in your head but the answer would be all of them! There’s no bottleneck with a bot. It can handle as many tracking requests as you can throw at it.

To deal with 300 tracking requests in an hour, you’d need around 18 staff members answering emails but only one bot would be needed to do that! And Flow XO will give you a generous 2,500 interactions a month for $19. That’s the equivalent of just under 2 hours work for a member of staff.

Bots vs Website

The biggest question of all! “Why would my customers use a bot when my website already offers this?”

It’s a very good question and there are a number of great reasons. Let’s take a look at the top few, Data usage, stability, convenience, guidance and ease of use.

Data usage

Data usage has been hiking up in the recent years with everything going web based but mobile data is still expensive in comparison to alternative options. Thankfully, using bots via messaging apps keeps data usage to a minimum! Yes, you read that right. Messaging apps actually use very little of the users data making the bot a cost effective option. And lower data usage means faster speeds! Who wouldn’t want to save on data and get the content faster?

You’re probably thinking it won’t be that much lower. Well, let me give you a real insight into the difference. I use Telegram as my primary messaging app and for 7 hours and 34 minutes of active use, I used a small amount of 9.74 MB of data.

My browsing generally consists of using various websites to get account information (checking statements, see when payments are due, tracking orders etc) and of course, using Google because I can’t remember how to spell something. So nothing too much yet Chrome used a whopping 209 MB of data for a measly 3 hours.

In comparison, that is a huge amount of data to use website services! People will often choose one company over another just because one offers better online services. If you want to be that company offering better online services, then bots can help you get there!


One big drawback of using websites on your mobile is connection stability. Mobile connections drop out, especially when you’re travelling or in low coverage areas. How annoying is it when you’ve just sat there waiting for what seemed like ages, for the page to load only to lose your connection and have to start all over again?

Well here’s some great news! You don’t have to worry about that with bots. One of the great things about apps like Telegram and Messenger is that they are built to handle such things. If you lose your connection, you don’t have to start again. Messages you are trying to send will wait and messages sent to you are waiting for you to come online.

Convenience, Guidance and Ease of use

We all love convenience but for some people, they also like guidance and ease of use. Using websites can be a little daunting for people that don’t feel comfortable around technology. Especially, when it’s the first time using the website for self-service. What a hassle it can be! It’s no wonder there are still so many people that would rather pick up the phone and speak to someone.

Well, you don’t have any of these problems with bots! Bots make it a hassle free, convenient and easy to use service. A bot can guide your customer through the process from start to finish. It can ask for their order details and then get the order status or tracking information for them but best of all, they wouldn’t have to miss any of their favourite soap or take time out of their day to do it! It would be so quick and easy it would barely take any effort at all.

Another powerful but simple feature that is offered, is the ability to vary question text. You can make the bots seem more human-like by providing variations of the questions so that the bot doesn’t ask the same question time and time again. When have you ever know the automated lady on a telephone service do that! And Speaking of automated phone services, how annoying is it when she can’t understand you because you have an accent? That’s 2–0 to bots then!

Building the Bot

Building the bot is nice and simple. We’re going to trigger the flow by using the New Message action of the Bot service. I’ve then got a task to extract the users first name, a question task to get the order number, then a custom webhook to retrieve the order tracking and another question to verify the postcode for a layer of security before giving the user the tracking.

Greet the bot

To trigger the flow, the user just needs to greet the bot and I’ve used keywords such as Hello, Hi, Hiya and Good (Morning, Afternoon, Evening etc) so that my users can start the bot conversation using natural language.

The completed Flow
Tip: Using greetings to trigger bots makes them feel more friendly and means that the user doesn’t need to know specific words or phrases such as ‘Track Order’ to interact with the bot.

Getting the First Name

It’s not necessary to do this as you can have a completely code free solution and use the User Name output from the bot as it is (full name) but I wanted to make my bot feel more personable so I’ve used the code service to break down the username and extract just the first name.

These two lines of code are simply splitting the username up into individual words and returning the first word. The input used in the user name output from the New Message trigger.

Code for extracting the first name

Getting the Tracking Number

Now that I’ve got the users first name, I greet them and ask them for their tracking number using the ask question action of the bot service.

The Response Path is available from the outputs of the New Message trigger and it is the unique identifier that corresponds to the user’s conversation with the bot.

Getting the tracking number

You should notice here that I have provided four different questions. The bot will select one at random each time. It’s this ability to vary questions that make the bots responses more human-like. Using the output of the code service task, which is the user’s first name, I am also greeting the user by name in response to them greeting the bot, again making it feel more like talking to a person than a bot.

Greet the bot

Getting the Tracking

The next action in the flow is a webhook that is used to retrieve the data from a RESTful API service.

Flow XO has over 90 integrated services already pre-built so if you are hoping to retrieve data from a CRM or similar, check out the services list. There may be a pre-built integration that you can use but if not, you can also use a custom webhook as I have done for this example.

Tip: Many courier services provide API’s for label printing but there are a number of online companies that provide RESTful API services to track parcels sent via various courier companies so don’t assume it can’t be done if the courier company you use don’t have a tracking API.

Adding a Layer of Security

Now that we have the tracking, we’re going to ask the user to provide the delivery postcode so that we can match that against the parcel details to verify the user.

Another great feature that Flow XO has to offer is validation for question answers. There are a number of pre-set options such as number, date, email etc but there’s also Regex, which can be used in two ways.

It can be used with a Regex. Regex’s are used to check a string (series of characters) against an expected pattern/sequence to see if there is a match. The regex validation option is also fantastic for comparing the answer against a value or previous output to validate the answer.

My webhook returned JSON data that contained the parcel status and the delivery postcode. You can use the Data Outputs feature to read structured data such as JSON.

I’ve used the data outputs feature to read the postcode value from the returned JSON and entered this into the Regex field. This will prevent the bot from proceeding to the next task unless the user provides a post code that matches.

It doesn’t need to be JSON that you use. If you’ve used an integrated service you can use any of the available outputs that are given.

Verifying the delivery postcode
Tip: If you know the format of tracking numbers, it’s not hard to guess them and it only takes someone to put one digit wrong and they could give you someone else’s tracking number so it’s a good idea to add a layer of security and verification by asking the user to provide an extra piece of information relating to the parcel.

Providing the Tracking

Once the user has confirmed the delivery postcode, the bot will provide the tracking details.

Verify and provide tracking

What Else Can You Do?

What about when the customer needs more information? You could provide the user with the contact number for customer services and let them know to call if they need further assistance.

Or you could take advantage of the Agent service and let the user send a message to you. It’s email on the back end and can be integrated with CRM systems so you don’t need to have a B2C chat platform and all the messages/replies will go via the bot.

We’ve covered how to use this feature in our Getting in Touch Using a Bot walk-through.

The Finished Bot

It’s taken no time at all to put together a simple but very efficient and convenient way for people to track their parcels. And if the user needs further assistance they can contact someone via the Agent service.

Bots have so many advantages over other self-service options that they are riding us of the frustration and drawbacks that we have with automated services and instead they are really making the whole experience far more convenient and friendly for people to use.

So why not take a load off your support team and invest a few minutes of your time to build a great self-service bot.