In-App Message Types

Braze offers several default in-app message types, each customizable with messages, images, Font Awesome icons, click actions, analytics, editable styling and color schemes. The currently available types are Slideup, Modal, Full, and HTML Full. It is also possible to define your own custom in-app message view.

All in-app messages implement the IInAppMessage interface, which defines basic behavior and traits for all in-app messages. InAppMessageBase is an abstract class that implements IInAppMessage and provides the foundational in-app message implementation. All in-app message classes are subclasses of InAppMessageBase.

In addition, there is a subinterface of IInAppMessage called IInAppMessageImmersive, which adds click action and analytics enabled buttons, as well as header text and a close button. InAppMessageImmersiveBase is an abstract class that implements IInAppMessageImmersive and provides the foundational immersive in-app message implementation. Modal and Full in-app messages are subclasses of InAppMessageImmersiveBase.

HTML Full in-app messages are InAppMessageHtmlFull instances, which implement IInAppMessageHtml, another subclass of IInAppMessage.

Slideup In-App Messages

Slideup in-app messages are so-named because they “slide up” or “slide down” from the top or bottom of the screen. They cover a small portion of the screen and provide an effective and non-intrusive messaging capability.

Slideup Example

Modal in-app messages appear in the center of the screen and are framed by a translucent panel. Useful for more critical messaging, they can be equipped with up to two click action and analytics enabled buttons.

Modal Example

Full In-App Messages

Full in-app messages are useful for maximizing the content and impact of your user communication. The upper half of a full in-app message contains an image and the lower half displays text as well as up to two click action and analytics enabled buttons.

Full Example

HTML Full In-App Messages

HTML Full in-app messages are useful for creating fully customized user content. User-defined HTML Full in-app message content is displayed in a WebView and may optionally contain other rich content, such as images and fonts, allowing for full control over message appearance and functionality.

The following example shows a survey HTML Full in-app message created by Soundcloud.

HTML5 Example

Full in-app message content is displayed in a UIWebView and may optionally contain other rich content, such as images and fonts, allowing for full control over message appearance and functionality. Please note that we currently do not support display of custom HTML in-app messages in an iFrame on the iOS and Android platforms.

In-App Message Delivery

In-App Messages (Triggered)

The following documentation refers to Braze’s In-App Messaging product, aka “triggered in-app messages,” which are branded as highlighted below in the “Create Campaign” drop-down:

In-App Messaging Composer

You may also refer to the documentation for our deprecated Original In-App Messaging product.

Trigger Types

Our in-app message product allows you to trigger in-app message display as a result of several different event types: Any Purchase, Specific Purchase, Session Start, Custom Event, Push Click. Furthermore, Specific Purchase and Custom Event triggers can contain robust property filters.

-Note: Triggered in-app messages only work with custom events logged through the SDK and not through the Rest APIs. If you’re working with Android, please check out how to log custom events here. If you’re working with iOS, check out how to log custom events here.

Delivery Semantics

All in-app messages that a user is eligible for are delivered to the user’s device on session start. For more information about the SDK’s session start semantics, see our session lifecycle documentation. Upon delivery, the SDK will pre-fetch assets so that they are available immediately at trigger time, minimizing display latency.

When a trigger event has more than one eligible in-app message associated with it, only the in-app message with the highest priority will be delivered.

For in-app messages that display immediately on deliver (i.e., session start, push click) there can be some latency due to assets not being prefetched.

Minimum Time Interval Between Triggers

By default, we rate limit in-app messages to once every 30 seconds to ensure a quality user experience.

To override this value, set com_appboy_trigger_action_minimum_time_interval_seconds in your appboy.xml. An example can be found in our sample application’s appboy.xml.

Local In-App Messages

In-app messages can be created within the app and displayed locally in real-time. All customization options available on the dashboard are also available locally. This is particularly useful for displaying messages that you wish to trigger within the app in real-time.

  // Initializes a new slideup type in-app message and specifies its message.
  InAppMessageSlideup inAppMessage = new InAppMessageSlideup();
  inAppMessage.setMessage("Welcome to Braze! This is a slideup in-app message.");

Do not display in-app messages when the soft keyboard is displayed on screen as rendering is undefined in this circumstance.

Manually Triggering In-App Message Display

The following method will manually display your in-app message.


See in the DroidBoy sample app for example usage.

In-Depth: Defining Custom In-App Message Types

Braze’s slideup in-app message object extends InAppMessageBase. Braze’s full and modal type messages extend InAppMessageImmersiveBase. Extending one of these classes gives you the option of adding custom functionality to your locally generated in-app messages.

See in the DroidBoy sample app for an example implementation.