In-App Messaging Overview

Messages for every situation.

OneSignal's Head of Product, Zack Hendlin, goes over In-App Messaging and how it can impact your digital marketing! The transcript of the webinar can be found below. Register for our webinars today!

(Start) [00:00]

Hi everybody. Can you all hear me? I see that we've got Nilesh who joined and it looks like about 15 or so other folks. Great. And it sounds like we've got a confirmation that you can hear me.

So, hi. We'll get started. My name is Zack and I run product here at OneSignal. What I want to do today is to walk you through a feature that actually we're shipping in the next couple of weeks called In- App Messaging. I've got a couple of slides. I'll go through some of the use cases and then we'll dig in to a live demo. And then, I'm happy to handle any questions that you guys have. You can just type in the chat as we're going and we'll try to address any questions as they come along.

Great. So, I'm going to share my screen so we can start looking at some of the key use cases. And let's see. Let me make sure I'm sharing the right screen.

Great. can you see the deck now? If you can just type, if one person can type that they're able to see it, that'd be great. Perfect. Thanks, Bruno for confirming.

So, now what we'll do is we'll go through a couple of use cases and then we'll get into a live demo, because I think that's probably the most interesting part.

In-App Messaging

So, In-App Messaging today, if you want to show a user a modal, if you're an app developer, if you want to show a user an update, if you want to walk them through a new feature that you've developed and you want them to try, that actually is a painful process today. So, if you're an app developer and you need to design it, you need to code it up, you need to log it because you actually will want to know who you showed it to and how many times you showed it and what the click-through rate on it was.

Once you've done all that and written all that code, you then go through code review or QA, you compile your app, you submit it to the app store, and then hopefully your user updates the app. You have to go through all those steps just for them to be able to see a modal that you've created or onboarding for a new feature or even a nudge or a promotion or something that you want to show them.

I used to work at Facebook and LinkedIn, and anytime that we wanted to promote a new offering, it was actually a lot of engineering work. And it wasn't just on one platform. If you wanted this to work on iOS and Android, you actually had separate engineering teams going and building these modals. oftentimes, it would take more than a week or two to go from the thing you wanted to build, getting design implemented, quality assured submitted and ultimately to an end-user, downloading it. As you all know, not every user is going to update to the latest version of your app.

So, what In-App Messaging lets you do is really simply create, in a lightweight interface on the OneSignal dashboard exactly what you want your in-app message to look like. You can preview it immediately on your phone, on your test device to make sure it looks the way you want. It will work anywhere you have the OneSignal SDK incorporated into a mobile app. So, initially on Android, we're shipping iOS a couple of weeks later. And then we're also building out over the next couple weeks support for Xamarin, React Native and Cordova.

In-App Messaging Example Use Case #1

So, with that, let's dive into the live demo. Maybe we'll cover two use cases. So, I'll start with one where let's say I'm a game developer. When someone gets to level five, I want to let them know that they have unlocked a battleship. I also want to use this as an opportunity to upsell them. So, I'm going to decide who I want to send it to, which particular segments. I can go here and say, well, if it's someone in their very first time playing the game, if this is their first session, I probably don't want to send it to them. So, I'm going to send it to folks who have at least two sessions in my app. The reason for that is, if it's a new player, I want them to get interested and sticky with my app before I start trying to upsell them. I'm going to say greater than two sessions.


Let's say for now I'm just testing this. So, I want to limit it to people in a particular country. Let's say the United States because then I don't have to worry about localization. I'm going to name this segment 'greater than two sessions in the US'. Great. You'll notice what OneSignal is doing right here is it's automatically updating the number of users who belong in this bucket dynamically. So, if I said, if I updated the country to Afghanistan, I know I don't have any users right now in Afghanistan that are going to meet this segment. You'll see that OneSignal automatically and dynamically updates that there's zero users in that segment.

So, let's go back to the United States here, and I'm going to create this segment. You'll see this segment pops up right here. If I wanted, I could exclude people in other segments very easily. So, that defines who this is going to go to.

And then we have this other thing that we built that we don't have for push notifications, but we've added specifically for in-app messaging. That's really interesting. It lets you say, I want to only show this to people once they've taken a certain action. So, for instance, when they've reached level-- when level is equal to five. So, when someone has reached level five, I want this to show up. So, I can specify any key and any value. I also have all these operators - is, is not, exists, greater than, less than and so on.

I also can use things that OneSignal provides out of the box without even needing to specify a gear value like session duration. So, this could be an example of being a shopping or commerce app where I don't immediately want to show an in-app message when someone opens the app because they don't want to bombard them. But maybe once they've been visiting, once they've had the app open for at least one minute, then I think it's a good opportunity to tell them there's a sale going on. Or if they refer a friend, they'll get $20 off.

So, back to sort of this gaming use case where level is five. So, now I'm just going to create a name for my message. I'll call it 'Level 5 battleship promotion' and I'm going to say 'You've unlocked battle ships'. You'll notice I can change the size. Maybe I'll make it a little bigger so it feels more impactful. I'll make it red here. Okay, great. And then I may want to say 'Battleships added to your fleet. You can upgrade battleships to destroyers for only $0.99', right? So I'm taking a user action that caused this trigger to be true. So, level is 5, and I'm going to use it as an opportunity to upsell. But right now, this looks a little sparse. It's useful, but I want to make it more interesting. So, I'm going to add an image.

With OneSignal it's actually really easy to add an image from my computer or Google Drive. But it's also really easy just to find an image with our integrated web image search. So, I'm going to search for battleship here. And this will automatically do an image search on the web. Let’s say I want to select this image. But again, here I have a vertical landscape in my in-app message. So, I'm maybe going to trim this image so that it works a little bit better with the aspect ratio. I'm able to do that all without ever needing to go to Photoshop or Sketch or anything like that, integrated into the OneSignal dashboard experience.

So, I hit SAVE here and you'll see that I'm able to decide if I want it to be a Top Banner and not show or a Bottom Banner and not show these images, or if I want to select, let's say, full screen. Great. So, I'm selecting full screen here and I'm trying to upsell folks. I want to have the call to action be 'Upgrade fleet'. I use kind of right above. So, I'm actually going to choose the same color. I could specify any hex value that I wanted to customize it to my app. Because remember, this in-app messages can go to anybody who's using your app. They don't even need to be enabled for push notifications in order to see it.


So, now I've got this in-app message here that I'm sure I could finesse and make it look a little better. But for the sake of keeping this moving quickly, I've set up here. And then obviously, when someone clicks this button, I would want them to let's say be redirected to a point in my application. So, let's say I would call it 'redirect to store' as an example. I could also have this button, take them to a URL. But in the gaming case, where I already have a store in my app and want them to upgrade, I'm just going to leave that here as a value that I can interpret to redirect them to the store.

So, now I've got this thing that looks really nice here on the dashboard. A natural question though is, well, how do I preview it? I don't want to send it to all of my users right out of the gate. So, what we built is a really easy way to preview this on your device. I'll show you that right now. So, I hit PREVIEW ON DEVICE and I see all my test devices. So, I'm going to select Zack's pixel and hit PREVIEW. What you'll see is - I'll stop sharing the screen and share my video - is I now have a push notification that says 'Tap to see this in-app preview'. I tap that and I'm redirected to-- Sorry, I had one other showing there. I am redirected to my own application where I can preview this on my test device as you see right here.

So, it's that simple for me to make sure that I like the way it looks, that I like the way it looks on different phones and aspect ratios. And then I can either X out, I can swipe up, swipe down to dismiss, I can check that the buttons going into the right place, that easy. This works both on Android and iOS and is the best way to make sure that you're in-app message looks really good and works well within your app.

You’ll notice I did all of that in less than a couple minutes without ever needing to talk to a developer, without ever needing to talk to a designer. So, it makes it really, really easy to be able to test these things and make sure that they look great.

If I wanted, I could even send it to my colleague and make sure that it looks great on her device or send it to her for approval. If I'm, let's say, a marketing coordinator and I want my marketing lead to sign off. So, that's how easy it is to preview.

Let me show you a couple of other things in this use case and then we'll go to one other use case, maybe around shopping. So, I can also specify background images and colors, I can specify a lot of formatting options here and I also can control dismiss behavior. So, this is really cool. If I want to, for instance, make sure that a banner only appears for five seconds. It comes in and goes out. Maybe if I just want to let a user know that their account has been updated or their order has shipped. And I don't really want to take the full screen to interfere with their regular usage of my app, but I just want something to show on the screen for, let's say ten seconds. It's easy for me to do that. I also again, can easily preview that. I'll show you right here. If I wanted it just to be a sort of Top Banner, I can preview it or I could send it out to everybody really, really easily.

And then one final thing is I can then have this in-app message trigger actions within my app and I can control if it dismisses. So, if it takes someone out to a website, like to my eCommerce store online, I can then decide that I want it not to dismiss. I still want it to be there when I come back to the app or I don't want it to be there when I come back to the app. of course, I can decide to schedule this in the future if I'd like to. So, I hit CONFIRM and it will go to all my users who satisfy that condition.

In-App Messaging Example Use Case #2

I'll show you one other quick example that I've already prepared, which is an eCommerce example of a spring sale. Here, I'm sending it to all my users and I'm using it to say, "Hey, there's the sale only happening today." I have a call to action, which may be is, let's say, right? Again, I could preview it on my test device really easily and I can even choose a really cool background or something to make it fit into my app in a much more immersive way.


So, let's take a super quick example of what that could look like. Let's say I'm a grocery delivery company and I want people to know that I have great fresh produce. So, I select an image. I'm going to make that my background image now. Save it down and let's see. I'll remove this regular image that I had here. You can add some promotional text like 'Freshest fruit delivered to your home, same day delivery'.

I could also have this superimposed on the background if I selected a background that was sort of tall enough to make that work. So, you can see that if I select it. So, now what I'm going to do is a much taller crop so that it will fit within the in-app message. Great. Now, we see I want to update my colors so that it's easier to read. I don't need it to be so big, so I'm maybe going to make it a center modal.

So, with that couple set of steps, I'm able to create something that looks great within my app. Cool. And that's going to be my button, Click URL. Again, I could preview it on test device and all that. I could say, well, I only want to run this promotion. My 20% off promotion is only going to run for today. So, I don't necessarily want that to run forever. I only want it to run today as part of this campaign. I say UPDATE IN-APP MESSAGE. And it's now updated it.

I can also pause an in-app message. If I finished a campaign or if I want to edit it before it goes out to someone or if I want to queue it up before I decided to set it live. For instance, if I'm iterating on it with my colleagues before I want it to go to all my end users.

I'm going to take a quick look at the chat. I see there's a question between In-App and current Android notifications and a question about its availability on Android and iOS. So, to answer the question on Android notifications versus In-App, the nice thing about In-App is they go to anybody who opens your app. They only appear when the user is in your app though. So unlike push, the user actually has to be in the app for them to see it. But the advantages, any of your users when they're in the app, even if they don't have push notifications on, can see them.

Another advantage of In-App is that they can be much more immersive than a push notification. So, you see, I have a lot more creative control than I would for a regular push notification with buttons and images and we support GIFs as well in in-app messages. So, you could even have animation.

Another question I see coming through the chat: is the feature available only on Android and iOS? So, it's going to be available on Android starting in a couple of weeks. It's going to be on iOS a couple of weeks after that. We also will support Cordova, Xamarin and React Native over the next couple of weeks, so beyond all those mobile platforms and those wrappers. It's not supported on web at this point. That's certainly something we're considering and we'd love to get feedback from folks on. It's only going to be available on the paid plans initially. And then over time, we'll have a limited offering available on the free tier most likely a month or two.

Analyzing Results of In-App Messaging

So, let me show you a look at the reporting that I get when I run in-app message. So, I set this one. This was a notification I just sent. It had three impressions and no clicks on any of the buttons. But let's look at this one that I have a lot more data for where I'm actually able to go and view a rich set of analytics. So, I'm able to see different time periods. This is the last 24 hours, but I could look at the last hour, I could look at the last 30 days.


The campaign performance of this in-app message, I'm able to see how many impressions it got, how many people saw it. I'm able to see how many people clicked on a button and how many clicks on the image that there were. Those are the two clickable components - the button and the image. I'm also able to see the overall click-through rate, both the unique count and the total count. So, I'm able to get a really good sense across platforms, across what people are clicking on at different points in time. I also see a really cool preview of my in-app message and I'm able to look at exactly who I sent it to, what my button description, what my button URL, what my image URL would take end user to all really easily from this notification screen.

So, that's a brief walkthrough of in-app messages. Now, we'll go through one or two other kinds of quick questions that commonly come up and then I'll dive into answering any questions that you folks may have.

So just to summarize timing here, we're looking at the next couple of weeks is shipping on Android for members on our paid plan. Three to four weeks from now, we're going to be shipping the React Native, Cordova and Xamarin wrappers. And then in the next four to five weeks, we'll be making this available on iOS. All you'll have to do as an app developer is update to the latest version of the OneSignal SDK and then obviously be on a paid plan to use this.

Talking about where this is going to extend to after it sort of initially ships, we're going to give more flexible formatting options, the option to have multiple buttons, carousels, integrated prompt for push permission. So, you can use in-app messages as they exist to trigger an action ID and then have your app interpret that action ID and request a user's permission to show them push notifications.

But one of the things that's very common is, on iOS, you only get to prompt a user once. So, if you prompt them without giving them context about what they're going to get from your push notifications, it's actually really likely that they're going to say no. Since you only get one shot to ask them, that means that you've sort of burned that opportunity.

So, in-app messages are a great way to say, "Hey, we would like to notify you when your order ships and special promotions. We promise not to send you more than one notification a week." You've then given them that context. If they say, "Yes, that sounds good," you then trigger the native push permission prompt. That means you can get much better opt-in rates. It also means that you can avoid pushing people to give you push permission before they're ready to do so. So, you could show them an in-app message, make sure that they want it, and then you actually use your one shot because you are able to show an in-app multiple times.

In the future, we're also going to make it easy for you to upload your own HTML. We've obviously built this easy to use editor, but we're going to make it more powerful over time for you to add your own HTML files.

We’re going to make it easy for you to sort of ask a user, "Hey, how would you rate our app?" If they say, "I'd give it a five," you may want to then redirect them to the app store to rate your app there. So, it's a great way to make sure that you're sort of capturing feedback from your users who really care about your product and love it. It could also be a great way to say if someone's not happy to maybe trigger an Intercom chat or to trigger an email to your support team.