In-app messages

Use in-app messages to display banners to users inside your mobile app. They work like pop-up weblayers on websites. This page covers how to choose an editor, create and configure messages, and measure results.

Prerequisites

  • Your app must implement the appropriate Mobile SDK.
  • A Customer Success Manager (CSM) must enable this feature for your project.
  • The maximum in-app message size is 16MB.
📘

Note

To display native in-app messages built using the rich editor, your app must use Android SDK 4.2.0 or later, or iOS SDK 3.2.0 or later.

Benefits of in-app messages

In-app messages help you reach users while they're in your app with timely, personalized information. Benefits include:

  • Targeted communication: Send personalized messages to specific customer groups.
  • Improved conversion rates: Provide timely information encouraging users to complete purchases or act.
  • Enhanced customer engagement: Offer a direct and convenient way for users to interact with your company.
  • Increased customer satisfaction: Deliver useful information that enhances the user experience.

Choose an editor

In-app messages can be one of the following types:

EditorStatusWhat it offers
HTML builderHTML-based (default)Uses custom HTML and CSS. Allows advanced formatting and styling. Requires coding skills. May render inconsistently across devices.
Legacy editorTo be deprecatedUses default Android and iOS system formatting. Requires templates. Limited functionality.
Native rich editorRecommendedUses Android and iOS native functionality for pop-ups. Provides rich formatting and styling options. Requires templates. Offers the best balance between formatting and styling options and device compatibility.
Visual builderHTML-basedUses a drag-and-drop workflow. Allows advanced formatting and styling. Can be built from templates or from scratch. May render inconsistently across devices.
❗️

Don't use legacy editor for new messages

We don't recommend creating any new messages with the legacy editor. If you have existing legacy messages, convert them to the rich editor.

Create an in-app message

  1. Go to Campaigns > In-app personalization > + New in-app personalization.

  2. Create a new in-app personalization or select a template from your project templates or the predefined templates:

    1. Recommended: Create a message in the Native rich editor. Select a template labeled both Native and Rich editor.

    2. Create a message from scratch in the Visual builder or the HTML builder. Click Create new in-app personalization.

      Screenshots of choosing the Visual builder or HTML builder for new and template-based in-app personalizations
    3. Choose a template without any labels to create a message from the template in the Visual builder.

    4. Not recommended: Select a template labeled only Native to create a message from the template in the Native legacy editor.

      Screenshot of the Create new in-app personalization dialog

You can create and edit templates in the Asset manager.

Design your message

Native rich editor

If you select a template labeled both Native and Rich editor, the editor has options corresponding to the native functionality of Android and iOS for displaying pop-ups. You can still customize its style attributes to match your branding and app design.

Edit the design of the in-app message in the right column. There's no limit on the number of characters or words you can use.

Screenshot of a native in-app message template in the Native rich editor

Choose from 3 native templates that vary in size and screen space: slide-in, modal, full screen.

Customize appearance

Under Appearance, customize the in-app message as a whole, such as: text position (top, bottom), buttons alignment (left, centered, right), margin, padding, background color, and corner radius.

Configure template elements

Each template includes the following elements, which you can enable, disable, and configure individually.

  • Image URL (can't be longer than 190 characters).

  • Appearance: size (auto, full size, lock aspect ratio), margin, corner radius.

  • The SVG image format isnt supported.

Preview the message

To preview the message for a specific customer or segment, click Preview and use the filter.

Visual builder

Build HTML-based in-app messages with drag and drop, with no advanced coding know-how. The builder has two main parts:

  • An editing region.
  • A tabbed pane with elements you can drag onto the editing region and settings you can change.

The tabbed pane has 3 main tabs: content, rows, and settings.

Make sure the Type dropdown is set to In-app message (the other option is In-app content block).

Screenshot of an in-app message in the Visual builder

Settings tab

Use the Settings tab to configure global parameters for your in-app message template, such as: content area alignment, background color, content area background color, default font, link color, and language attribute.

Change them with the sliders or input fields.

Rows tab

Use the Rows tab to design the structure of your in-app message template. Rows frame the content you add later.

To configure a row's appearance, such as background color or padding, click a row in the editing region to open the Row properties pane.

For more information about configuring rows, see the Rows tab section in the Email editors - Visual builder documentation.

Content tab

After adding rows, fill them with the content elements under the Content tab.

The following content elements are available.

ElementDescription
ButtonAdd a button to your in-app message template. This button can be assigned the following actions: opening a web page, sending an email, calling, or sending an SMS.
DividerPlace a horizontal line or an invisible divider between other content components.
Dynamic contentInsert an HTML block you created before in the Asset Manager. For example, a predefined header or footer. You can also add any HTML block by reference. To do so, click on Configure block and then select any of the existing HTML blocks.
HTMLInclude custom HTML code.
IconsAdd icons or small images. After dropping the Icons block, click on Add new icon and either choose to customize it in the editor in Apply effects & more or upload a ready-made icon after clicking on Change image. You can use the icon in the text. For more information, read BEE editor documentation.
ImageUpload and place an image in your in-app message template.
ListCreate numbered or bulleted lists.
MenuCreate a customized choice menu, each choice with a specific title and URL link. To learn read the BEE documentation.
ParagraphWrite any paragraphs containing the same content formatting, such as font size, font weight, or font family.
SocialInclude buttons that trigger social media activities, such as sharing a web page or liking a product or service.
SpacerAdd a space between other elements in your in-app message template.
TextWrite free text with rich formatting options.
TitleInclude a title with H1, H2, and H3 style tags in your in-app message template.

To use Jinja personalization in your templates, click the button at the bottom right of the editing region to open the Jinja editor.

Button behavior

Specify a URL in the Button properties pane, in the Action section. When the user clicks the button, the default behavior is:

  • If the URL starts with http or https, open the link in the web browser.
  • In all other cases, let the app process the link (custom scheme or Universal Link).

Override this default behavior using the data-link and data-actiontype attributes.

Screenshot of button attributes configuration

The data-link attribute accepts a URL and overrides the URL in the Action section.

The data-actiontype attribute accepts one of these three values:

ValueBehavior
browserOpen the button link in the web browser.
closeClose the in-app message without following the button link.
deep-linkLet the app handle the button link.

Custom close buttons need a URL. In the Visual builder, enter a URL in the Action section even if the button should only close the in-app message. If you leave the URL empty, the button becomes inactive and the app shows a default close (x) button instead. You can use any placeholder URL, because the link isn't opened when the close action is selected.

📘

Note

Android SDK 4.0.1 and earlier recognizes only the first button with the close action as a close button. Additional close buttons use the default link behavior.

iOS SDK and Android SDK versions later than 4.0.1 support multiple close buttons.

HTML builder

Create an in-app personalization by writing HTML and CSS code.

Make sure the Type dropdown is set to In-app message (the other option is In-app content block).

Enter HTML and CSS code in the editor on the right. The preview on the left updates in real time.

Screenshot of an in-app message being edited in the HTML builder

Test your HTML code on a real device before starting your campaign to make sure it works across devices.

🚧

Important

Always use standard HTML and CSS. Avoid using experimental features or proprietary values. Forbidden HTML tags and attributes:

  • Tags: head, script, link, iframe, meta, title, body
  • Attributes: onclick, href and other inline javascript attributes

Button behavior in HTML builder

Use the data-link attribute to specify button links. Use the data-actiontype attribute to override the default button behavior.

HTML builder code with the data-actiontype close attribute on a button

Refer to Visual builder - Button behavior for details.

Native legacy editor

The native legacy editor will be deprecated and phased out. For new messages, use the Native rich editor, and convert your existing legacy native messages.

If you selected a template labeled Native but not Rich editor, the editor has limited options corresponding to the native functionality and default system styling of Android and iOS for displaying popups.

Edit the design of the in-app message in the right column. There's no limit on the number of characters or words you can use.

Screenshot of a native in-app message template in the Native builder

You can choose from 4 native templates:

  • Alert: Includes Title, Text, and Buttons.
  • Slide-in: Includes Title, Text, Image (left/right), Buttons, and Style. The image is stretched top to bottom, maintaining the aspect ratio (cropped left and right, centered).
  • Modal: Includes Title, Text, Image, Buttons, and Style. The image is stretched horizontally, maintaining aspect ratio, and cropped and centered vertically when the modal's total height reaches 80% of the screen height.
  • Fullscreen: Includes Title, Text, Image, Buttons, and Style. The image is stretched horizontally, maintaining aspect ratio, and cropped and centered vertically.

Each template includes a unique set of elements you can combine to achieve your desired result. Templates also vary in size and screen space usage:

  • Title: A single line header for your In-App Message, with customizable font size and color.
  • Text: A customizable block of text that can span multiple lines, with adjustable font size and color.
  • Image: You can include an image in all templates except Alert. The image is cropped and/or stretched based on the chosen template. Image URLs can't be longer than 190 characters.
  • Buttons: You can include up to two CTA buttons. These buttons take the user to a web page in their browser (URL) or to a specific page in the app (deep link) when clicked. The text, text color, and button color are customizable.
  • Style: You can also declare limited CSS styling for the template, including the background color and x-close color for the In-App close icon.
📘

Note

To delete a component, such as a button or a header, delete its text. The entire component is deleted with it.

To preview the message for a specific customer or segment, or for Android or iOS devices, click Preview and select the segment and device type.

Add Buttons so customers can interact with the message. You have 2 choices:

  1. Deep link: Navigates your customer from the in-app message onto a specified link.
  2. Cancel: Navigates your customer away from the in-app message, thus quitting it.

Limitations of the native legacy editor

  • Custom fonts aren't supported.
  • Using images with a resolution higher than full HD (1920x1080 pixels) isn't recommended due to potential rendering timeouts and increased traffic consumption.
  • PNG is the preferred image format.
  • We recommend keeping the combined character count of the Title and Text under 500.
  • Alert messages on iOS include a default cancellation button. To change it, you'll need to overwrite the default SDK implementation of InAppMessageAlertView.swift.

Convert to rich editor

If you previously created an in-app message in the native legacy editor, convert it to the native rich editor using the Convert to new version link:

This creates a duplicate of the in-app message that opens in the rich editor.

Configure and test

Settings

In-app messages have the same settings as weblayers plus the following additional settings:

SettingDescription
Closing timeoutSpecifies the time (in milliseconds) after which an in-app message is automatically hidden if the customer doesn't interact with it.
Display delaySpecifies the time delay (in milliseconds) between when the message is triggered and when it's displayed to the customer.
PriorityIf multiple messages are supposed to be shown to a customer for the same event, they only see the message with the highest priority (highest number), because only one in-app message can be shown at a time. Lower-priority messages remain in the backlog and are shown on the specified event once they become the highest priority among the remaining messages.
Show onChoose the event that triggers the message. For example, if you choose the event 'App load', the message can pop up immediately when the app loads. To show the message another time, specify any other custom event. The event needs to be tracked directly from the mobile SDK.
Target SDKOnly available for in-app messages built in the native legacy editor. Select one of the following two options:

Only older versions: Select this option to deliver the in-app message only to app instances running older SDK versions that don't support in-app messages built using the native rich editor. This option allows you to create separate campaigns with and without rich styling.

All versions: Select this option to deliver the legacy native in-app message to all app instances regardless of whether they run an SDK that supports native in-app messages using rich styling.

A/B testing

  1. Enable A/B Test in the top right corner.
  2. Configure the test in the A/B Test tab as explained in the A/B testing documentation.

Measure results

Evaluate

Compare conversion and click rates in the Evaluate tab, which contains a dashboard measuring the effectiveness of the in-app messages you sent.

Definitions:

  • Reach: the in-app message was shown to the customer
  • Interaction: the customer interacted with the in-app message (excluding close actions)
  • Close: the customer closed the in-app message
  • Marketing: the customer had a positive engagement in the 24 hours since they first interacted with the in-app message

Tracking

Each in-app message shown to a customer is tracked as a banner event with the same attributes as in any weblayer. These attributes are unique to in-app personalizations:

AttributeDescriptionExample
app_versionThe version of the mobile app.2.21.3
device_modelThe device model used.iPhone
device_typeThe type of device used.mobile
os_nameThe name of the operating system used.iOS
os_versionThe version of the operating system used.17.2
platformThe platform used.iOS
sdkThe name of the mobile SDK used by the app.Exponea iOS SDK
sdk_versionThe version of the mobile SDK used by the app.2.21.3
typeThe type of the banner shown ('in-app message' or 'in-app content block').in-app message

Error messages

If an error occurs while delivering an in-app message to a customer's device, the banner event has an additional error attribute with an error message as its value.

You may encounter the following error messages:

Error messageDescription
Another customer login while resource loadThe customer was logged out, and a different customer logged in while the resources to display the in-app message were being loaded.
Image '${payload.imageUrl}' not loaded successfullyThe image couldn't be loaded into the slide-in component.
Invalid HTML or emptyThe provided HTML is either incorrect or missing. Includes cases where:
- An image couldn't be processed or converted to Base64.
- The HTML was determined invalid.
Resources have not been preloadedThe required images weren't preloaded before rendering.
Unable to present messageThe app failed to create a View to display the in-app message.

Frequent errors may indicate a problem with the Mobile SDK implementation in your app.

Use cases

Predictive in-app messaging

Target only the customers most likely to convert. Use Predictions to create a customer segment with the highest probability of completing a certain action, such as a purchase or interaction. Then use that segment in in-app messages.

Connect the desktop experience with your mobile app

Personalize in-app messages for each customer using the unified single customer view, which brings together data collected through multiple channels. For example, find customers who haven't opened your newsletter with personalized products, and show that same product selection in the app instead.

📘

Note

Because personalization is enabled, you can also use product recommendation models within in-app messages to show recommended products.

Best practices

  • Use an image file format supported by the target platform or platforms.
    • GIF, JPEG, PNG are natively supported by both Android and iOS.
    • WebP and HEIC are newer formats that aren't supported on some Android and iOS versions.
  • Use an appropriate image size and aspect ratio.
    • Oversized images are scaled down and display normally, but they use more bandwidth and may delay delivery.
    • Images whose aspect ratio doesn't match the layout and design of the in-app message are also scaled down, with the same bandwidth and delivery costs.
    • Some common screen resolutions for reference:
      • 1284×2778 – Found on high-end iOS devices like the iPhone 14 Pro Max.
      • 1440×3200 – Found on premium Android devices like the Samsung Galaxy S series.
  • The Mobile SDKs include the device and OS used in the tracked event properties. You can use this data to analyze which devices and OS versions your customers use.

Clone to another project

Clone in-app messages to other projects you have access to. For details on Cloneable Data Mapping, see the Data Manager article.

Limits

In-app messages and content blocks are subject to a yearly serving limit, based on your contracted billable profiles. It's designed to cover the vast majority of use cases.

If you use product recommendations in in-app messages, those recommendation serves also count toward your yearly recommendation limit.

Check your current usage in the usage dashboard. If you're approaching the limit, contact your Account Manager to review your options.


Did this page help you?

© Bloomreach, Inc. All rights reserved.