Creating an In-App Message
You can create an in-app message using the Braze platform using campaigns, Canvas, or as an API campaign. We highly recommend planning out your messages and preparing all materials ahead of time using our handy In-App Message Prep Guide.
Choose Where to Build Your Message
Click Create Campaign to open a new messaging wizard for in-app message campaigns. Then, follow the flow of the messaging wizard to quickly create and launch your in-app message campaign.
- Name your campaign something clear and meaningful.
- Add Teams and Tags, as necessary.
- Add and name as many Variants as you need for this campaign.
- You can choose different platforms, message types, and layouts for each of your added Variants.
If all of the messages in your campaign are going to be similar or have the same content, compose your message before adding additional Variants - you will be able to choose Copy from Variant from the Add Variant dropdown.
After you have created and set up your Canvas using the Canvas wizard,
- Name your step something clear and meaningful.
- Add a Delay, as necessary. Note that steps containing in-app messages cannot be action based.
- Filter your Audience, as necessary.
- Choose your advancement options, as necessary.
- Choose all other messaging channels which you would like to pair with your message.
You cannot have multiple in-app message variants in a single step.
Step 1: Specify Delivery Platform(s)
Start by choosing which platform(s) should receive the message. Use this selection to limit the delivery of a campaign to a specific set of apps. You might choose Web Browsers for a campaign encouraging users to download your mobile app to ensure they do not receive the message after already getting your app. Because Platform selections are specific to each variant, you could try testing message engagement per platform!
Web Email Capture and Web Modal with CSS are both unique to the Web SDK, and can only be used after selecting Web Browsers.
|Mobile Apps||iOS & Android SDKs|
|Web Browsers||Web SDK|
|Both Mobile Apps & Web Browsers||iOS, Android & Web SDKs|
Step 2: Specify Your Message Types
Choose a Message Type, Layout, and Enforced Device Orientation as necessary.
Once you’ve selected a sending platform, browse the Message Types, Layouts, and other options associated with it. Learn more about the expected behavior and look of each of these messages on our Creative Details page, or by clicking on the linked message types in the tables.
These in-app messages are accepted by both mobile apps and web applications.
|Message Type||Type Description||Available Layouts||Other Options|
|Full-Screen||Messages that cover the entire screen with a message block.||Image & Text and Image Only||Enforced Device Orientation (Portrait or Landscape)|
|Modal||Messages that cover the entire screen with a screen overlay and a message block.||Text (with Optional Image) and Image Only||None|
|Slideup||Messages that slide into view in a designated place without blocking the rest of the screen.||None||None|
These in-app messages are customizable to your needs.
|Message Type||Type Description||Available Layouts||Other Options|
|Email Capture Form||Typically used to capture the viewer’s email.||None||Must set
|Web Modal with CSS||Modal messages for web with customizable CSS.||Text (with Optional Image) and Image Only||None|
If Braze detects that you don’t have a close or dismissal button included in your code, we will request that you add one in. For your convenience, we have provided a snippet that you can copy and paste into your code:
Step 3: Compose In-App Message
The Compose tab allows you to edit all aspects of your message’s content and behavior.
The content of the Compose tab vary based on your chosen Message Options in the last step, but may include any of the options below:
|Language||See our full list of available languages.||Click Add Languages and select your desired languages from the provided list. This will insert Liquid into your message. We recommend selecting your languages before writing your content so you can fill in your text where it belongs in the Liquid.|
|Image||Upload Image, Pick a Badge, or use Font Awesome.||Where applicable, click Include Image or Upload Image and follow the presented instructions. Each message type and platform may have its own suggested proportions and requirements - be sure to check what those are before commissioning or making an image from scratch!|
|Button Text & On Click Behavior||Add up to two buttons.||You can create and edit custom button text and color. You can also add Terms of Service Link within Web Email Capture forms.|
|Device Options||Restrict send to only iOS devices.||Click Change and check the box as desired.|
|Message Close Options||Dismiss Automatically or Wait for User Swipe or Touch.||Dismiss Automatically allows you to select how many seconds the message will remain on the screen. Wait for User Swipe or Touch will require a dismissal or close option.|
|Header & Body Text||Completely custom copy (often with custom HTML capabilities) with the options to include Liquid and other types of personalization.||Some message types do not need and therefore do not ask for headers.|
|Position||From Bottom of App Screen or From Top of App Screen.||This only exists in the Universal Slideup message builder.|
|HTML & Assets||Completely custom via upload, URL, or copy and paste.||Copy and paste HTML into the available space and upload your assets via ZIP.|
|Email Capture Input Placeholder||Custom copy.||This is used solely in the Web Email Capture Form and will direct your users to input the desired content into the space.|
When available for your message type, you can have up to two buttons appear below your body of text. By default, the button on the right (Button 2) is formatted to be more visually drawing to your user. We recommend using this button for singular or primary actions.
If you choose to only use one button, it will automatically adjust to take over the available space at the bottom of your message, instead of leaving room for an additional button.
If you decide to format these buttons with your own colors, we recommend that you use Button 2 for your more preferred result. In other words, if you want your user to click on one button more than the other, make sure it is on the right. The right button has often displayed better potential to get clicked, especially if it has a somewhat contrasting or otherwise stand-out color from the rest of the message. This is only emphasized when the button on the left blends more visually with the message.
Braze has three Generations of in-app messages available. You can fine-tune to which devices your messages should be sent, based on which Generation they support, in the Preview section which composing your in-app message.
Depending on what SDK Versions your users are on, you may or may not see this option. You are only asked to select a generation when you have users on more than one generation. A Generation is defined as a collection of SDK Versions that contain a large number of major upgrades. For example, Generation 3 is the latest one that encompasses the latest style updates.
By checking Send to all Generations that support this message, Braze will deliver to users that can receive any form of the message. For example, if you have users on all three Generations, a modal will deliver to users on Generations 2 and 3, as Generation 1 doesn’t support modals. The message will look different for your two groups of users: Generation 3 users will receive the message in the latest styles, while Generation 2 users will see the older styles (cosmetic differences, and absence of button border).
You could uncheck the Send to all Generations that support this message and select Send only to users on Generation 3 (the latest) if you do not want to allow users to receive the older message styles. Users on Generation 3 will be the only ones to receive the message.
Step 4: Style Your In-App Message
The Style tab allows you to adjust all visual aspects of your message. Upload an image or badge, or pick a pre-designed badge icon. Change the colors of the header and body text, buttons and background by selecting from a palette or entering a hex, RGB or HSB code.
The content of the Style tab vary based on your chosen Message Options in the last step, but may include any of the options below:
|Color Profile||Apply from In-App Message Templates Gallery.||Click Apply Template and select from the gallery. Then, click Save.|
|Text Alignment||Left, Center, or Right.||Only available for newer Braze SDK versions.|
|Header||HEX color code.||Your desired HEX color will display. You will also be able to choose the opacity of the color.|
|Text||HEX color code.||Your desired HEX color will display. You will also be able to choose the opacity of the color.|
|Buttons||HEX color code.||Your desired HEX colors will display. You will also be able to choose the opacity of the colors. You can choose colors for: the message’s Close Button Background as well as each button’s Background, Text, and Border.|
|Button Border||HEX color code.||New! This will allow you to set your primary and secondary buttons apart from one another. We suggest outlining buttons with contrasting colors.|
|Background Color||HEX color code.||Your desired HEX color will display. You will also be able to choose the opacity of the color. This is the background of the entire message and will clearly display behind your text body.|
|Screen Overlay||HEX color code.||Your desired HEX color will display. You will also be able to choose the opacity of the color. Only available for newer Braze SDK versions. This is the frame around the entire message.|
|Chevron or other Close Message Option||HEX color code.||Your desired HEX color will display. You will also be able to choose the opacity of the color.|
Always preview and test your message before sending.
Step 5: Configure Additional Settings
Add key-value pairs to send extra custom fields to user devices.
Re-evaluate Campaign Eligibility and Liquid
In some scenarios, you may want to re-evaluate a user’s eligibility as they trigger an in-app message to display. Examples include campaigns that target a custom attribute that frequently changes, or messages that should reflect any last-minute profile changes.
When you enable this “Re-evaluate Campaign Eligibility” option, an additional request to Braze will be made to confirm that the user is still eligible for this message. Additionally, any Liquid variables or Connected Content will be templated at that moment before the message is displayed.
Enabling this option will result in a slight delay (< 100ms) between when a user triggers an in-app message and when the message is displayed due to the added eligibility and templating request.
Do not use this option for messages that can be triggered while a user is offline, or when eligibility and Liquid re-evaluation are not required.
Step 6: Build the Remainder of Your Campaign or Canvas
Build the remainder of your campaign or Canvas, see the sections below for further details on how to best utilize our tools to build in-app messages. For more information on Canvas specific in-app messaging options like expiry and steps, check out our documentation.
Please note that if you intend to trigger your in-app message based off a custom event, that custom event must be sent via the SDK.
In-app message delivery is entirely based off of of the following action triggers:
- Making a purchase
- Opening the app/webpage
- Performing a custom event (only works with events sent via the SDK)
- Opening a specific push message
- Automatically schedule campaigns to send at a certain time with respect to the local time of each of your users.
- Messages can also be configured to recur on a daily, weekly (optionally on specific days), or monthly basis.
A start date and time must be selected, however, an end date is optional. An end date will stop that specific in-app message from showing up on devices after the specified date/time.
Online vs. Offline Triggering
In-app messages’s work by sending the message and triggers to the user’s device. Once the in-app messages are on a device it waits to display until the trigger condition is met. If the in-app messages are already cached on the user’s device, you can even trigger in-app messages offline with no connection to Braze (for example, in Airplane mode).
Note that once an in-app message campaign has been stopped, there may be some users that already received the message but have not seen it because they haven’t opened your app. These users will still see your in-app message, and be counted as a unique impression—even after your campaign has been stopped.
Finally, once you’ve selected the action the in-app message will be triggered off of, you should also set a priority. If two messages are triggered off of the same action, high priority messages will be scheduled to appear on users’ devices before messages with lower priorities.
The high, medium and low options for triggered message priorities are buckets, and as such multiple messages could have the same selected priority. To set priorities within these buckets, click Set Exact Priority and you will be able to drag and drop campaigns to order them with the correct priority.
A customer may trigger two in-app messages within your Canvas at the same time. When this occurs, Braze will follow the priority order below to determine which in-app message is displayed. Drag different Canvas steps to re-order their priority. By default, steps earlier in a Canvas variant will display before later steps.
Navigate to the “send settings” of the Canvas section to prioritize in-app messages from a Canvas against in-app messages from other Canvases and campaigns.
By default, Canvas step priority is set to medium with the most recently created steps having the highest relative priority. Canvas/campaign level priorities also default to medium with the highest relative priority defaulting to the most recently created items.
Next, you need to choose the target segment from the dropdown menu. You’ll automatically be given a snapshot of what that approximate segment population looks like right now. Keep in mind that exact segment membership is always calculated just before the message is sent.
If there’s a delay on the in-app message step, segment membership will be evaluated after the delay. If the user is eligible, the in-app message will sync on the next available session.
Braze allows you to track how often users perform specific actions (Conversion Events) after receiving a campaign. You can specify any of the following actions as a “Conversion Event”:
- Opens App
- Makes Purchase
- This can be a generic purchase or a specific item
- Performs specific custom event
You have the option of allowing up to a 30-day window during which a conversion will be counted if the user takes the specified action.
After you’ve finished building the last of your campaign or Canvas, review its details, then send it!
Active In-App Message Campaign Limits
Braze values reliability and speed. Just like we suggest you send only the data you need to Braze, we also recommend turning off any campaigns that are no longer adding any value to your brand.
Processing action-based in-app message campaigns that are still in an active state but no longer sending messages or are no longer needed slows down the overall performance of the Braze services for you and other customers.
This extra time needed to process these large numbers of idle campaigns means that any in-app messages will take longer to appear on the end-users’ devices, which impacts the end user’s experience.
We have implemented a limit of 200 active, action-based in-app message campaigns per app group to optimize the speed of message delivery and to prevent timeouts.
The 200 count includes active IAM campaigns that have not yet reached end time and those that have no end time. Active IAM campaigns that have passed their end times will not be counted.
The average Braze customer has a total of 26 campaigns active at once - so it is unlikely that this limitation will impact you.