Comment on page


Increase user engagement using deeply contextual in-app messages based on user behavior in the app

Reach your goals with fewer efforts

Create in-apps easily without coding in our built-in Rich Media editor, or use out-of-the-box in-app solutions for various business cases to make your marketing campaigns even more efficient!


In-App Messaging is a marketing tool to improve user engagement and retention rates. Combined with push notifications, in-app messages increase the overall audience you can connect with, up to 100% of your userbase. Depending on user behavior, in-app messages are deeply contextual and relevant to a user, which allows you to interact with your audience efficiently.
In-app example created in our no-code editor
There are three milestones to create an effective In-App Messaging campaign:
  1. 1.
    Creative - create a Rich Media page to display it as an in-app message.
  2. 2.
    Audience - specify the group of users to receive the in-app message.
  3. 3.
    Scheduling - define a specific event triggering the in-app message.

1. Creative

Add an In-App creative by selecting one of the already-existing Rich Media pages or uploading a new one.
You can create Rich Media easily in the built-in editor and use it as an In-App creative.
If you upload Rich Media manually, it should be compressed to a .zip file and comply with the rules below:
  • the .zip archive should contain an index.html file in its root folder;
  • all images, CSS, and JS files should be included in the .zip archive.
To use remote images in your in-app message for iOS, use https protocol or add Allow Arbitrary Loads to Info.plist.
If a Rich Media page is uploaded properly, you will see a preview of an in-app message as it should appear on a device.
If you upload a new .zip archive at that point, it will be saved as a Rich Media page in the corresponding tab in your Pushwoosh Control Panel.

High-priority In-App

To make sure Pushwoosh SDK has finished downloading in-app message in case the trigger Event occurs right after the app's launched, tick the "High-priority In-App" checkbox. The SDK will block app's UI for a few seconds the in-app message is downloading.

2. Audience

To define users who should receive the in-app message, set up conditions presented in Segment and Behavior sections.


To send the in-app message to a specific audience segment, select that segment from the list. The example below will narrow the segment to the devices from the USA on which the last app opening took place in between 1 and 3 days ago.
NOT SET and ANY Tag operators are available for In-Apps segmentation. Using these operators, you can show the In-App Message to users with no Tag value or any Tag value on their devices.


To target users with a specific behavior, use Events based on actions users perform within the app. The example below will target all users who performed the CartCleared Event at least 1 time during the last 7 days.

3. Schedule

Determine when to show the in-app message to make sure it's relevant to your users.


Define the Event triggering the in-app message here. Choose an Event from the list and add attributes to set up the trigger rule. Events are a tool indicating particular actions your users perform in the app. Events should be first configured in Pushwoosh Control Panel, describing a specific pattern in the app. Choose the Event you find the most appropriate to trigger the in-app message.


Capping allows you to limit the number and frequency of the In-App message impressions to a particular user.
Total impressions set the max number of times the In-App will be shown to the user. For example, if you set the limit to 3 here, the In-App will be shown to a user only 3 times in total.
The limit of impressions in X days sets the number of times the In-App will be shown to a user in a particular number of days. If you set 1 impression in one day, the In-App will be shown to a user not more often than once a day.
Interval between the impressions sets the number of days the In-App is not shown to a user who has seen it already. If you have the previous option activated (1 impression per day), this will add an additional interval. For example, setting a 1-day interval will make it shown once in two days.


Add a schedule to display the in-app message in a specified date range or finish the in-app campaign manually later.


Take a glance at your In-App settings and save the in-app message by clicking the Save button.
You can return to any previous step to edit your in-app message settings or save a draft to complete it later.

In-Apps statistics

You can view detailed statistics on each Rich Media page used as an In-App creative by clicking on the page name in the Rich Media section. Read this article to learn more.
Once an in-app message is shown to a user, this impression is captured and can be tracked from Pushwoosh Control Panel, allowing you to see the in-app statistics in dynamics. This metric is accessible as a counter of total impressions and as a graphics of distribution over a chosen period:

In-Apps with JavaScript

In-Apps are HTML-based and support JavaScript. Pushwoosh SDK injects pushwooshvariable that provides the following API:
You can use postEvent method to send a new event directly from In-App JavaScript code.
TestAttributeString: 'testString',
TestAttributeInt: 42,
TestAttributeList: [123, 456, 'someString'],
TestAttributeBool: true,
TestAttributeNull: null,
TestAttributeDaysAgo: 7,
TestAttributeDate: new Date()
function() {
console.log('Post event success')
function(error) {
console.log('Post event failed: ', error)
You can also use sendTags method to set tags for the device from an in-app:
IntTag: 42,
BoolTag: true,
StringTag: 'testString',
ListTag: ['string1', 'string2']
To get device tags, use the getTags method as follows:
function(tags) {
console.log('tags: ' + JSON.stringify(tags))
function(error) {
console.log('failded to get tags: ' + error)
If you want to close an in-app from the JavaScript code call closeInApp() method:
Or simply use custom scheme URL for the button/link <a href="pushwoosh://close">
When sending a push notification with Rich Media, you can get custom data of that push with the following code: pushwoosh.getCustomData()

Custom JavaScript interface

In-App Messages JavaScript functionality can be unlimitedly extended by exposing native Java/Objective-C/Swift methods to JavaScript. This can be achieved with addJavaScriptInterface methods of Pushwoosh SDK for iOS and Android.