In-App Messages

Check our In-Apps business cases!

Rate My App - increase 5-star ratings
Net Promoter Score - het to know what your users think about your app


In-App messages are notifications that are displayed to a user within the app in response to user interactions. The message itself is deeply customizable as it is based on HTML/CSS/JS, so developers and marketers can make such messages look and feel like a natural part of the application.

With In-App messages you can reach all your users, opposed to push notifications that might be delivered only to those who opted-in, which increases the overall audience you can connect with. As In-App messages are displayed based on user behavior and actions performed within the app, they are deeply contextual and relevant to a user while push notifications not always can be triggered with such precision.

Once properly set up, In-app messages allow you to run deeply personalized promotion campaigns (such as “Rate my app”, Net Promoter Score (NPS) campaigns), effectively interacting with your audience.

There are three basic steps to create an effective in-app campaign, where you define:

  1. What you would like to send. Creative - a HTML page packed as Rich Media which will be shown to a user
  2. When you would like to send it. A specific event to be triggered to receive an In-app
  3. Who you would like to send it to. A segment of users based on Tags and Behavior.


Basically, In-App messages are HTML-based pages that are displayed in a custom web view of the application. An In-App should be compressed to a .zip file and comply with the rules below:

  • an archive should contain an index.html file in its root folder;
  • all images, CSS and JS files must be included in the .zip archive;
  • you can use remote images in In-Apps, but for iOS they should use https protocol unless you add Allow Arbitrary Loads to Info.plist;

Add your creative as Rich Media, and then use it as an in-app:


Now as you have the creative, the next step is to create an Event in your Control Panel as a rule that answers the question "When the message should be displayed?"

Basically, an Event is a set of attributes sent from a device (or via Remote API) to Pushwoosh that describes a particular action in an app performed by a user. Events and Event attributes should be first configured in Pushwoosh Control Panel and then should be collected by the SDK when a specific pattern in application is completed. In-App messages are displayed only when a certain event is triggered in the app.

For example, a "Login" event can be triggered when a user logs in using his email address or phone number while connected to Internet via WiFi or cellular network. Then an event can have 2 arguments:

Event attributes:
Attribute type:
Possible values

"Login credentials"


"", "+1 234 567 89 00" or any other

"Connection type"


"WiFi" or "cellular"

You can either set a bare event to trigger an In-App (e.g. show it upon every Login event), or make it specific to the context (e.g. show it only if a login was performed by a user with a particular email address of the Login credentials attribute).

Creating an In-App

Once you've uploaded a .zip with your creative and set up a triggering Event, you are ready to configure an In-app in the Control Panel. Choose an application you want to receive the In-app and create your first In-app. Give it a name and select your creative from a list of available Rich Media templates.

If a Rich Media is created properly then you will see a preview of an In-app as it should appear on a device.

The second step is to set a Rule – specify an Event that should trigger your In-app. If there are specific requirements to a triggering Event, you can add more rules covering its attribute values to make your message more personal.


Once your In-app is set up, you can choose a segment of users who should receive this message. This segmentation includes two parts - Behavior and Tags.


Behavior segmentation is based on Events, i.e. based on actions a user performed while using the app.
The example below will target all users who successfully logged in at least 1 time during the last 7 days with their Facebook account.


Tag segmentation is based on Pushwoosh Tags, such as Country, City, Language, Device model, etc.
The example below will narrow the segment to the English locale devices on which the application was opened last time between 1 and 3 days ago range.

Frequency Capping

You can use Frequency Capping to limit the number of times In-Apps are displayed to the particular user.

  • Limit total number of In-App impressions
  • Limit number of impressions in X days
  • Add a delay (in days) between In-App impressions

In-app statistics

Once an In-app is shown to a user, this impression is captured and can be tracked from Pushwoosh Control Panel, allowing you to see 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-App Javascript

In-Apps are HTML-based and support Javascript. Pushwoosh SDK injects pushManager variable that provides the following API:

You can use postEvent method to send a new event directly from In-App Javascript code.

var successCallback = function() {
  console.log("Post event success");

var errorCallback = function(message) {
  console.log("Post event failed: ", message);
  alert("Post event failed: " + message);

  "event": "In-app shown",
  "attributes": {
    "AttributeString": "someString",
    "AttributeInt": 42,
    "AttributeList": [123, 456, "someString"],
    "AttributeBool": true,
    "AttributeDate": "2015-07-28 19:45" // YYYY-MM-DD hh:mm format
  "success": "successCallback", // optional
  "error": "errorCallback" // optional

You can also use setTags method to set tags for the device from an In-App:

  "IntTag": 42,
  "BoolTag": true,
  "StringTag": "Some String",
  "ListTag": ["string1", "string2"]

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">

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.

In-App Messages