User experience is CRUCIAL when building chat bots. Chat bots are only great at maintaining attention if they are designed well.
The more intuitive and natural an interaction feels, the more likely the end user is to pay attention and stay with it.
On the other hand, the more difficult, strange or unexpected the interaction is, the more likely the end user is to abandon the chat altogether.
When users abandon your chatbot mid-way, it makes it very difficult to re-engage them. Sending regular content to disengaged users quickly becomes annoying and will result in higher spam complaints and lower conversions.
The first few days of interaction with new users is the most crucial as it is during this time that you must set expectations. If you deliver a poor experience in the beginning, your users will learn to expect poor experiences moving forwards.
When building an education-focused bot with a large script, it's common to split the content over a number of days to help space things out. While this does make sense in some circumstances, it can be frustrating in others.
If your content is good enough to deliver a great first experience, your bot subscribers will probably want more. Getting deep into a chat bot only to be suddenly cut off and told “I'll tell you more tomorrow” can sting.
Also, people learn at different speeds. I believe that we, as chat bot creators, should allow the end user to have more choice and influence during an interaction, meaning that they can go at their own pace; faster if they want it and slower if they need it.
From the end user's perspective, the solution seems simple. Just give them a choice of continuing the conversation later or carrying on now. However, trying to achieve this seemingly simple functionality is actually quite challenging.
This tutorial is about how I achieved this using ManyChat. It is correct and working at the time of writing (July 17th 2017) but if you're reading this and much time has passed, and knowing ManyChat's fast pace of development, it's likely that some functionality has changed and other features have been added. This whole tutorial may even now be completely redundant!
It's useful to begin this by agreeing on a few technical definitions. These are simply how I refer to various aspects of bot creation but there's no right and wrong so feel free re-name anything for your own reference.
A series is a single “package” of chat from start to finish with no substantial delays.
In ManyChat, these are the individual parts that make up a sequence.
A sequence is a collection of series, spaced out by various delays (for instance, 6 hours, 1 day or 4 days)
In ManyChat these are also known as Sequences and can be found under the automation tab.
The 3 Types of Sequence
For the purposes of this tutorial, we're going to be using ManyChat sequences for 3 different purposes.
Core Content Sequences
Core Content sequences are where the bulk of your script will live. They contain only ONE series and are delivered immediately, with NO limit on “sending time & day”
Your core content itself is basically your entire script, the main stuff you want to get across. Typically you'll want to break it down into smaller bitesize chunks, perhaps 20 or so messages per chunk (very roughly).
Delayed Intro Sequences
Delayed Intro sequences are used to:
- Initiate a conversation
- Plug the user into the next chunk of your core content.
They contain as many series as you like but each series is generally only 1 message or at most a few short messages. (Remember the only purpose is to initiate a conversation. Once the end user is responding, you need to plug them back into the correct location in your core content)
Generally you should start with just 1 series in your delayed intro. You can add more, but every additional series is a “worst case scenario” series (or a BACKUP) in case the user doesn't respond or complete enough Core Content.
The more you add, the less necessary each one will become as most users will have filtered out of this sequence by then (I'll explain later)
Completion Prompt Sequences
Completion Prompts, as you might have guessed, are there to prompt the end user to complete a key section of your core content if they drop off half-way through.
And so, by definition, if your end user never drops off mid-series, they will never receive a completion prompt message.
If each part of your core content only covers 1 specific point/topic or reaches only 1 simple conclusion, you may not want to use completion prompts.
Similarly, if people drop-off in the middle of one chunk of your core content and you're still happy for them to receive the next chunk (ie if they don't NEED to know the first part to understand the second part) you also don't need to use these.
The only time you DO need to use completion prompt sequences is if you want to make absolutely sure that your bot subscribers progress through your content in the correct order and receive all the right information.
Simply put, use them if you don't want your users to miss an important chunk of content. Don't use them if you don't mind.
What we're trying to achieve
Before diving in with both feet, it's useful at this point to define exactly what we're trying to achieve here:
- To break up a long script into smaller chunks and allow the user to choose whether to receive the next part straight away, or to carry on at a later time.
- To allow the end user to consume information at their own pace, rather than being restricted to the confines of the bot
In essence we're just trying to give people the option of “skip or wait” (ie do you want the next piece of content NOW or tomorrow?)
On the face of it, it seems relatively simple to implement, and on a basic level it is. BUT at the cost of a highly diminished user experience.
So let's discuss the difficulties first, so we know what we're trying to avoid.
1. We don't want users to miss out important content.
- This happens when we use sequences in the basic sense, by programming a “1 day later” series and a “2 days later” series within the same sequence.
- If we do this, the user will get the “2 days later” content, regardless of whether they engaged in the “1 day later” content or not.
- If the “2 days later” series says something like “yesterday we discussed XYZ”, it will ONLY make sense if the user actually engaged during yesterday's series (the 1 day later content)
- THUS, the goal is to make sure they ONLY get the “2 days later” content if they have successfully completed the “1 day later” content.
- For this reason, in this tutorial, we're not going to think of “day 1” and “day 2” but rather “part 1” and “part 2” – because if they skip through the first, they'll be getting day 2's content on day 1, and that's just mighty confusing for internal referencing purposes!
- Of course, there are drawbacks. For instance, if somebody only completes half of the “1 day later” series then they won't be able to receive the “2 day later” series until they've completed it, and if the daily reminders are queuing them BACK into the same content again, it might put the user off. There is a solution to this but I don't want to explode your brain when there's enough to think about right now!
2. We probably want users to receive “tomorrow's” content at a specific time of day, while delivering the “skipped” content immediately.
The trouble with sequences as they currently stand (and ManyChat MAY do something about this soon) is that the “immediate” series is NOT delivered immediately if you have a limited “time window” set.
In other words, if you set a sequence to send between 9:00-10:00am and somebody joins that sequence at 10:01am, they won't receive the “immediate” message until TOMORROW at 9:00am.
ManyChat's idea of “immediate” is actually more suitably called “no delay” in this instance.
Note: This isn't necessarily a “bug”, just a slightly confusing name. BUT if ManyChat do “fix” this at any point in the future, then it will make the whole process a LOT easier because you will no longer require “delayed intro” sequences AND “core content” sequences to be separated. In fact the ONLY reason they are separated in this tutorial is to account for this timing window issue.
3. We don't want users to receive two different series at once.
If your automation isn't 100% on point and you try to set up a solution like this, ONE mistake could mean that your subscriber ends up in two sequences simultaneously.
For instance, they might be waiting to receive the day 2 content, but then change their mind and skip to day 2 NOW instead. All of a sudden, they're getting day 2's content but then they get the SAME stuff tomorrow because they weren't pulled out of the “delayed intro” sequence for day 2.
While on the face of it, what we're trying to do here seems quite simple. In reality it's a little more complicated as we have to account for every possible outcome:
1. User did not engage
- If this is at the START of the interaction (ie clicking “Get Started”) then there's not a lot you can do.
- However, if they don't engage on a particular day sometime AFTER this, then the “delayed intro” sequences will continue to try to initiate a conversation and plug them back in
2. User clicked at least one button but didn't finish the first series
- This is why we use “completion prompt” sequences.
- The user has engaged and initiated a conversation for the day, but hasn't got as far as we want/need them to in order to achieve the desired outcome.
- Let's say they got 50% through and there are 2 key points we want them to cover in this series. And let's say they've already covered the first key point.
- The completion prompt will initiate a conversation on another day and plug them back into the conversation at roughly the stage they left off, leaving them to carry on and cover the 2nd key point, without having to go through the vast majority of the same first 50% of content again.
- You will need ONE completion prompt sequence (each with multiple day-delayed series) for each “key point” or “milestone” above 1 that you set within your core content sequence.
- In other words, if your Core Content sequence only makes 1 key point, you don't need to use a completion prompt. The Delayed Intro sequence has you covered here.
- However, if your Core Content sequence makes 2 key points, and they managed to consume the first, but dropped off before they reached the 2nd… then you'll need ONE completion prompt sequence to plug them back into the 2nd point.
3. User completes the first part (“chunk”) of your Core Content and SKIPS to part 2
- While a user is engaging in part 1, they are simultaneously subscribed to the “Delayed Intro” sequence for part 2.
- If the user reaches the end of part 1 and SKIPS straight through to part 2, then we need to UNSUBSCRIBE them from “Delayed Intro Part 2” and SUBSCRIBE them to “Delayed Intro Part 3”)
- Simpy put, while somebody is in one active sequence, they're also queuing up for the next one tomorrow.
- If they skip forwards, they get pulled out of that queue and put straight in to the Core Content.
4. User completes the first part (“chunk”) and WAITS for part 2
- As mentioned in point #3 above, while a user is engaging in part 1, they are also in the “Delayed Intro” for part 2.
- If, when they reach the end of part 1, they choose to “wait” until tomorrow, no action need be taken as they are already queued up to receive it.
5. User completes the first part (“chunk”) and WAITS for part 2, but doesn't click anything when day 2 begins
- Following on from point #4… when tomorrow comes, if the user doesn't click anything to engage, they will automatically fall into the 2nd series of the “Delayed Intro” – this is basically a second attempt (1 day later) to initiate a conversation and get them to engage.
- This process will repeat for as long as you like (or for as many series as you set up)
6. User engages every time, regardless of the skip or wait decision. (ie the never drop off)
- Congratulations! You didn't need completion prompts to get them through.
- However Core Content Sequences and Delayed Intro Sequences are still necessary to allow them to consume the content at their own pace.
How it Works
This is much easier to explain with a visual aid.
Hopefully by now the jargon is a little more familiar and you can begin to follow along the chart below.
Take a look at the following diagram:
(You can click the button below to open it full screen in a new window.)
Stage A: The beginning of the Sequence
The first stage follows the “Get Started” button. When the user clicks this button, your bot delivers what is known as the “Welcome Message”.
Your goal here is to tell the user what they stand to gain by engaging with your bot, and then get them to click a button to start.
This first button click should subscribe them to the following sequences:
- Part 1: Core Content
- Part 1: Delayed Intro
Stage B: During the sequence (Optional)
If you have more than one point to make (ie one “milestone” or “checkpoint”) within the first chunk of your Core Content AND you want to make sure that people get ALL of your content IN ORDER, you will need to use Completion Prompt Sequences.
If not, you don't need to do this!
To implement a completion prompt sequence, do the following:
Once the user has reached this crucial stage (for instance if they clicked the “I understand” button 50% of the way through) you will need to perform 2 actions:
- Subscribe them to the “Part 1: Completion Prompts” Sequence
- UNSUBSCRIBE them from the “Part 1: Delayed Intro” Sequence.
Next, once you are happy that they have reached the “finish line” in terms of comprehension** do the following.
(again let's pretend they've clicked the “I understand” button)
- Subscribe them to the “Part 2: Delayed Intro” Sequence
- UNSUBSCRUBE them from the “Part 1: Delay Prompts” Sequence.
**Note that this might not necessarily be the end of your Core Content. For instance, we like to wrap up AFTER we've made our key points with a quick summary which just covers everything once again in an easy bullet point format.
Stage C: The end of the sequence
If the user goes all the way through Part 1 of your sequence, you now need to present them with the decision to skip or wait.
For this you simply need to give them a choice of 2 buttons:
- Skip ahead now
- Wait until tomorrow
How you label these is of course up to you.
REGARDLESS of the button they click, here's what you need to do now:
- Unsubscribe them from: “Part 1: Completion Prompts”
Next, let's talk specifics for each outcome
Outcome A: If somebody clicks the “skip” button
In this case, because they're not waiting until tomorrow, there's no need to remind them tomorrow to begin part 2… as they're about to receive it right away. So here's what you need to do:
- Subscribe them to: “Part 1: Core Content”
- UNSUBSCRIBE them from: “Part 2: Delayed Intro”
Outcome B: If somebody clicks the “wait” button
- Subscribe them to: “Part 2: Delayed Intro”
- UNSUBSCRIBE them from: “Part 2: Core Content”
At this stage you might be thinking “hold on, didn't we already subscribe them to the delayed intro sequence when they clicked the “I understand” button? And yes we did do that. But 2 things to bare in mind here:
- You can't be in the same queue twice
- This double proofs against people accidentally clicking the “skip” button and scrolling back up to click the “wait” button instead.
You might also be asking why we're unsubscribing them from the core content sequence if the only thing in it is an immediate message and they're not going to get any reminders the next day. That's true but you STILL need to unsubscribe them because you can't be subscribed so a sequence that you're already subscribed to. In other words, if that person tries to re-join “Part 2: Core Content” later, they can't, because they've technically already been in it.
Stage D: The delayed intro Sequence
Next we need to tackle the delayed intro sequence. The purpose of this sequence is to initiate a conversation some time (probably about 1 day or so) after the user clicked the “skip” button in the previous part of your Core Content.
The Delayed Intro sequence can (and ideally should) have multiple series programmed each separated by a period of time (again about a day or so) in order to try to get the user to re-engage and enter back into your core content if they didn't engage the first time.
Here's how it will look:
The important thing here is to keep each series as short as possible. Ideally 1-2 messages.
The ONLY purpose of each series is to INITIATE the conversation.
It is the job of the Core Content sequence to continue that conversation.
Each series should have one final button that subscribes the user to the next Core Content sequence.
For instance, the last button in the “Part 2: Delayed Intro” sequence should subscribe the user to “Part 2: Core Content”
Just to clarify, there's only one action you need to take at this stage:
- Subscribe them to “Part 2: Core Content”
OPTIONAL STAGE: Completion Prompts
As previously mentioned, if it's important to you that your users cover every bit of content in order (and don't miss any along the way) then you will want to use completion prompts.
We technically already covered some of this in Stage B above, but that was the actions that need to happen within your “Core Content” sequences for the “Completion Prompt” sequences to work.
Here we will discuss how to set up the “Completion Prompt” sequences themselves.
The series structure is basically the same as the “Delayed Intro” sequences, the only differences are:
- The button doesn't subscribe to or unsubscribe from anything.
- The user is instered mid-way into the “Core Content” sequence, NOT the start.
Note: Please see the earlier flowchart for further information on completion prompts.
Also Note: Users will be unsubscribed from this sequence from within the “Core Content” sequence once they've hit the milestone (ie the “I understand” button).
How to BUILD it
Take a deep breath and PLAN it
First of all, take a deep breath. Because it's only after reading this article to this point that I realise how daunting this looks… But I PROMISE you once you've actually gone through and implemented it a few times, it will actually seem a lot simpler.
Step 1: Split your script into chunks.
Tale whatever script or story you have, and split it up into small “chunks” that each cover one specific topic, or result in one specific outcome. The simpler the better. We tend to shoot for about 15-20 “interactions” per chunk
(1 interaction = I say something, then you respond)
You may have done this already and split your content into “day 1”, “day 2” etc..
If so, (and as long as each “day” is short and specific enough), just re-frame these in your mind as “part 1” and “part 2”.
If one particular day starts getting a bit long winded, split that sucker up into 2 smaller bits. Trust me it will make your life MUCH easier and will result in a better experience for your users also.
To put it differently, the longer and more complicated your core content is, the more completion prompts you'll end up using… And that very quickly creates a lot more work.
Step 2: Name your chunks and milestones
Look at the Core Content chunks you now have and name them; Part 1, Part 2, Part 3 etc..
Now, within each chunk (or “part”) decide how much of that content is crucial and where the various milestones may lie. Again, the fewer milestones the better.
Ideally each chunk should cover ONE thing, to keep it simple for you AND the user. But if you do need to cover multiple things, identify the milestones within that chunk to make the planning stage easier.
Step 3: Draw a flowchart
Now is the time for planning.
Actually BUILDING all these complex sequence subscriptions should take up about 5% of your time. Testing perhaps another 5%.
The remaining 90% should be spent planning how you're going to do it and understanding how it all works.
Draw yourself a diagram. I cannot emphasise enough how helpful it has been to me to have a visual aid (my eyes were popping out while I was trying to figure this out in my head, but as soon as I wrote it down it suddenly became ALOT easier).
I've tried a lot of tools for this and my favourite is LucidChart.
Step 4: Follow your flowchart
Next, follow every possible path in your flowchart and make sure you have every outcome covered AND that you understand how it all works. You need to understand which sequences to subscribe to or unsubscribe from and WHEN to do so… Not just that but you need to understand WHY also. Keep asking yourself questions as you follow the map you've created.
Once you feel comfortable doing this, THEN you can start implementing it. (Trust me, doing this stage first will save you A LOT of time).
Step 5: Implement it
Finally, once you're ready to implement it, use the above section titled “How it Works” to aid you in the set up process.
The EASY option
Everything you need to implement this functionality is listed above. Once you've done it a few times it probably won't seem all that difficult.
BUT if you would rather have it implemented on your behalf then simply get in touch and we'll be more than happy to help!
I'm currently considering putting together some resources such as checklists and a walkthrough video to make this whole process easier to follow.
If you're interested in that, click on the button below to show your interest and get on the notification list for when they go live.
If you were actually mad enough to go ahead and implement this, I would LOVE LOVE LOVE to see it live in action. Please either let me know in the comments or drop a message through to the chat bot or contact page.
If you enjoyed this article I would REALLY appreciate a “like” over at the Bot Ninja Facebook Page.
Last but not least, if you have any questions, please feel free to pop a comment below and I'll do my best to give you a clear answer!
Dave J Mason