Monday, June 27, 2016

Mobile app on boarding, how to lower the barrier?

The on boarding flow in your app begins when your potential user launches your app for the first time and has to be convinced about the app’s benefits and eventually why he or she should sign up for it. This is the process in which you want to convert your potential user (visitor) into a engaged and active user that repeatingly will use your app.

It will be even better if you can convert your visitor into a user that is referring to your app (ambassador) or a paying user (customer)! To accomplish this the first impression of your app should be impressive from a visual perspective and it should explain what is in it for them.

The on boarding flow of well known apps

Here is how IFTTT does the on boarding in their app. It shows multiple slides explaining you why you should want to use it and what the app is all about. Before you decide to sign up you have a clear impression of what to expect.

If you want to see how other well known apps take care of the on boarding process you can check out the User on board site or the UX Archive.

Many apps, even well known ones, require you to sign up on the first page with little to no explanation what the app is about. That may work well for the Facebook app that almost everybody is familiar with but it is not going to work for your app.

Onboarding patterns

To lower the boarding barrier there are multiple well known patterns that you can chose or combine. Some of these patterns are listed here:

The Introduction approach shows a couple of slides and often require the user to sign up but some apps choose to show the content of the app right away. A Tutorial or a Tour approach show the real app, pointing out some example cases.

A Joy ride approach allows to use the app right away highlighting from time to time features that are new to the user. It is great way of showing what the app is all about but if your app is complex it also may be a little bit overwhelming if you do not this carefully.

A Social sign up allows the user to perform a quick sign up using his Twitter or Facebook account for example. This may be required for the user in order to be able to continue the app but it will lower the barrier if you first show what the app is about and only ask to sign up when needed to proceed.

Late sign up is a concept that is often seen in e-Commerce (and some times in m-Commerce) solutions. Only if you want to check out you have to sign up.

Anothering interesting concept is Continuous on boarding (LinkedIn for example is doing this). We want the barrier to be as low as possible but we also want user profiles to be as large as possible. The concept can be very powerful because it comes with benefits from both worlds. It lowers the barrier (by asking only for the minimum amount of credentials) and it eventually will result in rich user profiles, by encouraging the user to complete his or her profile later.

A known user is more valuable than an unknown one

Probably the best on boarding flow does not require any sign up or login, so you should ask yourself do really want your users to sign up? On the other hand it also true that a known user is more valuable than an anonymous one. In fact we are talking about users versus visitors here. And users eventually become customers while visitors probably never will.

A social sign up has multiple benefits. Not just for the user but also for us, developers. Avoid a lengthy registration process with many fields. The chance that the user will sign up increases and, with the appropriate permissions, you have instantly access to various information of that user, for example an avatar and a name of the user, which is great for personalization options.

Offering a social login could lead to 50% more sign ups. After all, a sign up is only one or two clicks away!

Use Fabric to allow the user of your app to sign up with Twitter or a phone number

There are services that will take away most of the hassle that comes with the implementation of these kind of features, such as the Fabric SDK, which is free to use. The SDK has features for signing up with Twitter but also for a sign up using your phone number, just like WhatsApp is doing.


It is important to keep the on boarding barrier as low as possible and also to make clear from the beginning what is in the app that your user can benefit from.

You can experiment with the different types of on boarding and see what works for your app by obtaining metrics about the conversion and learn from them. And once they are on board (activation) you can focus on optimizing the rest of the flow. Will they keep using the app? (retention) What about referrals and revenue?

As you can see, although intended for SaaS in particular, Dave McClure's start up or pirate metrics can be applied to mobile apps as well. AARRR!

Get the book!

My new book that I am currently working on, together with Arvi Krishnaswamy, is -amongst other things- about the lean startup methodology applied to mobile app development. In this book you can read more about topics such as on boarding, obtaining (actionable) metrics and split testing.

It also comes with some real world examples for both Android and iOS developers. Expect the book to arrive by the end of this year!

Further reading

Tuesday, June 7, 2016

The bots are back in town. Meet Botterik on Slack

Chat bots are around us since the introduction of ELIZA somewhere in the sixties. And that probably was cool and then we forgot about bots. But now they are back and they have become smarter since are connected to the internet and because we now have improved AI algorithms and with that API's for semantic parsing.

Companies such as Apple, Microsoft, Google, Facebook and Slack have rediscovered the chat bots and now they are just everywhere.

Agents (or bots) as Siri, Cortana and Google Now are supposed to have an answer for anything but a new trend shows that there is a market for niche bots. On Facebook there are (mostly B2C) bots for providing information about a particular service or for selling you a particular item. On Slack bots are perfect for automating and delegating business related jobs (B2B or B2E).

Niche bots, connecting services

On a dedicated platform that is already been used for most of the communication a bot will be accepted much faster, reason why this time the bots will stay. They are no longer stupid or annoying (Well, Siri for example can still be pretty stubborn), but they actually make sense and can be great personal assisstents, that are capable of connecting one service to another.

If there is an API for that and you can do some smart semantic parsing then developing your own bot is not hard at all. And if it cannot be done virtually you can outsource any task to the real world, for example using Amazons mechanical Turk API.

Create a Slack bot yourself

If you do not have a Slack account yet you can sign up for free. Creating a bot on Slack is pretty easy and it will take you probably less than ten minutes to get the first one up and running. For the first sample, using BotKit, you also need to have NodeJs installed on your machine.

Create a bot user at The developers section of Slack. Give it a name and click on the Add bot integration button. It will result in an API token that you will need later and you can add some additional information such as an icon for the bot, a first and a last name and a description of what the bot does.


If you are (a little bit) familiar with Node.js and JavaScript you can create your first bot with BotKit. BotKit works with Slack, Facebook messenger and Twilio. Grab it from GitHub or use NPM to get it.

npm install --save botkit

Within the botkit folder you will find the slack_bot.js You can start your first bot with this command

token=your token at stack node slack_bot.js

That is all you need to get the conversation started! You can modify the file to make your bot 'listen' for other commands if you want or you can go through the documentation and examples that come with BotKit.
controller.hears(['what time is it', 'how late is it'], 
    function(bot, message) {
      var topic = message.match[1];
       bot.reply(message, 'It is '+ new Date().getTime()+
       ' milliseconds after January 1, 1970. '+
       'Does that answer your question?');

.NET bot

If you prefer to use the web API instead or if you want to use C# and .NET for your bot then there is a solution for that as well. To get started with developing a Slack bot in C# you can get the .NET SlackAPI project from GitHub.

There is a little bit more work to do here to make it happen as this project, also because it is not as sophisticated as BotKit. First create an app in Slack. At The developers section of Slack go to Your apps and click on the Create app button. Enter a name, a short and long description, select a team and enter some (random for now) url for the instruction link, support link and redirect url fields. Then click on the Create app button.

Slack confirms the creation of the app and when you click on the App Credentials button you will find the OAuth information. You wil need the Client ID and the Client secret information in your .NET app

Visual Studio

Open the SlackAPI solution in Visual Studio, set the SlackAPI.console project as startup project and open the Program.cs file. Here you can modify the values for clientId, clientSecret and redirectUri, just as they appear in your app settings at Slack.

Customize the app a little bit so it will fit your needs. Then run the app and follow the instructions that will read in the console output.

  SlackClient.GetAccessToken((response) => 
     var accessToken = response.access_token;
       Console.WriteLine("Got access token '{0}'...",
       // post...
       var client = new SlackClient(accessToken);
       client.PostMessage(null, "#general", 
         "This is from the app powered by a "+
         ".NET implementation...", 
   }, clientId, clientSecret, redirectUri, code);

In this example we post a message directly into the #general channel but with some extra effort we can do anything in .NET that you can do with BotKit. This could be handy if you have already an existing .NET solution that you want to use with your Slack bot or if you are more familiar with C# and .NET than with NodeJs and JavaScript.


In 2016 bots have become relevant again. With better AI and in a more connected world they have become smarter than ever. With bots dedicated to a particular task and the possibility for any company to create new bots to be used on widely used platforms the adoption of chat bots will be much larger than before. They may not eat the web yet but soon they will...

Further reading