In-App

An In-App message appears inside your app while your user is actively using it. It’s a great way to communicate in the moment and in context, perfect for guiding, informing, or prompting users to take action. It’s also an interesting channel because it lets you reach opted-out users (those who didn't enabled push notifications).

This guide will walk you through how to craft a clear, impactful In-App message step by step. Let’s get started 🚀✨

Create an In-App template

The key element will be your message, so it’s essential to create a theme that aligns with the message you want to convey and your branding 🧩 The Batch In-App Composer lets you design beautiful, fully customizable messages, no coding required, thanks to an intuitive drag-and-drop editor.

Themes available

Different default templates are available to get you started:

  • Fullscreen : a fullscreen format can contain text, an image, up to two buttons, and a close button. It’s ideal for highlighting new products, promoting offers, encouraging app updates, or driving sharing.

  • Modal: the modal format can include an image, text fields, buttons, and an auto-dismiss option. Usually displayed at the center of the screen (in landscape orientation), it’s perfect for capturing the user’s full attention.

  • Image: this format displays a standalone image, optionally within a modal, either fullscreen or with margins. You can customize the duration, background color, and auto-close behavior, while keeping your app visible in the background.

  • Banner: displayed at the top or bottom of the screen, a banner can include text, two buttons, a close button, and an optional auto-dismiss timer (10 seconds by default). It’s perfect to encourage feature usage, promoting notifications, or delivering quick updates.

  • WebView: the WebView format gives you complete creative freedom with custom HTML. You can build rich, interactive content (like carousels or dynamic layouts). Note: this format can only be displayed in fullscreen mode.

You can also Start from scratcharrow-up-right if you feel inspired 👨‍🎨

Where to create your In-App template

You can create your In-App templates from two different places:

  • Settings → In-App Templates

  • Or directly from the Message creation screen while setting up your automation.

Create your In-App automation

Whether you’ve already created your theme in Settings → In-App Templates or plan to do it later, you can now move on to building your first automation. Go to Automations → New Automation → In-App.

circle-info

Choose a clear and explicit name for your automation, and add labels if needed to keep your workspace organized.

Set the trigger action

In-App messages are event-based, meaning they are displayed when a specific event occurs within your app.

Start by selecting the event(s) that will make your message appear to users. You can trigger an In-App on:

  • New session (a native event triggered when the app is opened)

  • Any tagged or tracked event collected by the Batch SDK

circle-info

If you add multiple events, they are combined using the OR condition, meaning the message will display as soon as any of those events occurs. You can add up to 10 trigger events.

Configure the Display Delay

You can define a delay between the trigger event and the actual display of the In-App message:

  • Immediately

  • Between 3 and 30 seconds

  • Custom delay (up to 60 seconds)

circle-info

Avoid setting a delay that’s too long : the user might leave the app before the message appears.

Control the marketing pressure

You can fine-tune how often and when your In-App is displayed with these optional parameters:

  • Capping: Limit how many times a user can see the message.

  • Grace Period: Define a minimum delay between two displays of the same communication.

circle-info

These controls help you avoid message fatigue and keep the user experience smooth.

Add targeting

Just like with a campaign or automation, you can define targeting conditionsarrow-up-right to reach the right audience or segments. Combine attributes, events, or custom user data to make your In-App relevant and contextual!

Choose the timing

You can schedule your campaign’s availability window, including start and end dates, hours, and timezone options.

You can base your schedule on either:

  • Universal Time (UTC), or

  • The user’s local timezone (based on profile data).

Add quiets times (optional)

Quiet Times give you more control over when your In-App messages can appear. This feature allows you to define specific time slots or days during which messages will not be displayed to users.

You can configure two levels:

  • Quiet Hours: Define daily time slots during which no messages are shown.

  • Weekly Quiet Days: Define one or several days when no messages are shown.

circle-check

Set up your messages

Before composing your In-App message, the first step is to decide which platform(s) you want to send display your In-app message to:

  • iOS only

  • Android only

  • Both

circle-info

In-Apps are only available on mobile apps.

Multi-language

You can create multiple versions your In-App message, one for each language, by clicking Multi-languagearrow-up-right, ensuring that profiles receive the message in their own language:

When adding a new language version, the default version will be duplicated, keeping your format options, images, and other elements intact, so you only need to edit the text that requires translation.

circle-info

A default version will be sent to profiles that don’t have a message already specified in their language.

A/B Testing

You can A/B testarrow-up-right your In-App messages! Here's how:

  • Enable the feature by toggling the switch at the top right of the Message section.

  • Create variants: You can create up to four variants, either by duplicating an existing one or starting from scratch:

circle-info

Variants work with the multi-language functionality, so you can easily combine both!

Compose the message and CTA behavior

Now it’s time to craft your In-App message 🌟

You can either use pre-created templates or build a message from scratch.

The Composer uses a drag-and-drop system to add and arrange blocks: Text, Image, Button, Divider, Spacer and Colums.

For this tutorial, we’ll start from scratch using the In-App Composer 👨‍🎨

circle-info

When creating an In-App message from scratch, you can choose:

  • Format: Modal or Fullscreen

  • Position: Top, Center, or Bottom of the screen

Depending on your choices, the same format can serve different purposes. For example, a bottom modal can work like a banner, while a center modal feels more like a classic modal. Let your creativity shine!

Global Settings

Before adding specific blocks, you can configure global settings for your In-App:

  • Type & Position: choose where the In-App appears on the screen.

  • Margins & Radius: adjust spacing and corner roundness.

  • Background & Border: set background color and optional border.

  • Close Options: enable a close button, auto-dismiss after X seconds, both, or none.

You can also configure a dark mode version for each In-App template to match user device settings:

With dark mode enabled, you can specify separate colors for light and dark themes and preview each mode directly in the In-App Composer.

Add Text

The Text block lets you include customizable text in your message.

You can personalize content dynamically based on user attributes. Customizations include: margin, alignment, color, font size, and decorations (bold, italic, underline, strikethrough).

circle-info

Text is essential to communicate your core message clearly, highlight key benefits, or create urgency (e.g., promotions, product updates). It ensures users understand what action they should take.

Add call to action Button

Buttons allow users to take specific actions in your message.

Each button can trigger built-in actionsarrow-up-right like:

  • Dismiss

  • Deeplink

  • Copy to Clipboard

  • Smart Push Re-optin

  • App Rating

  • Redirect to Settings

  • or use a Custom action via custom JSON

You can customize margin, padding, width, alignment, color, radius, and border.

circle-info

Buttons drive conversions by turning interest into action. A well-placed CTA encourages users to explore features, claim offers, or engage with your app immediately.

Illustrate your message with Images

The Image block displays pictures within your message.

Images can trigger actions like buttons and support PNG/JPG formats up to 4MB. Height options: auto, fill space, or custom pixels. Sizing modes:

  • Fill: scales to fill the block (may crop edges).

  • Fit: ensures the full image is visible (may leave empty space). Pro tip: Place critical info in Text/Button blocks, and test on real devices.

circle-info

Images capture attention quickly and convey messages visually. They are perfect for showcasing products, branding, or promotions in a memorable way.

Organize the message with Dividers

Divider blocks add a horizontal line to separate content.

You can customize margin, width, alignment, thickness, and color

circle-info

Dividers help organize content visually, making your message easier to scan and increasing the likelihood users notice key CTAs or info.

Set up Spacers

Spacer blocksarrow-up-right insert vertical space between content elements. Height can be fixed in pixels or set to Fill space (fullscreen only) to share remaining vertical space.

circle-info

Proper spacing improves readability and design clarity, ensuring users focus on the most important elements without feeling overwhelmed.

Design with Columns

Columns allow horizontal layout by creating up to 5 columns.

You can place Text, Button, or Image blocks inside columns. Customizations: number of columns, sizing (auto/custom percentages), spacing, padding, and vertical content alignment.

circle-info

Columns enable structured, eye-catching layouts that can highlight multiple offers, features, or images side by side, great for comparison or promoting multiple actions at once.

Testing your In-App

  1. Directly in your notification center

Now that your In-App message is ready to be sent, you can test how it looks on your device!

Use the Send test button on the push message window and add your Custom IDarrow-up-right or Installation IDarrow-up-right and click on Send test:

circle-info

Note that when using the “Send test option”, the In-App message will render according to the test device's dark mode setting, not the mode selected in the composer preview.

A push notification is sent immediately, and clicking on it displays the test in-app once the application is opened ✨

💡 We recommend testing on various device types (iOS, Android, OS versions and screen sizes) to ensure your message displays correctly across all of them.

  1. Test your user data directly on Batch

It is possible to preview the dynamic data of your In-App using the "Preview As" feature. To do so, use your Custom user IDarrow-up-right (or one of your users), then enter it in the dedicated field:

🚀 And that is it! With these steps, you are ready to launch personalized, real-time In-app automations that engage users exactly where they are: inside your app ✨

Click on the 'Save and run' button at the bottom of the form to activate it or save it as a draft and come back later.


Advanced Settings

Priority

Set the priority of your In-App: Standard, Important, or Critical:

When multiple automations share the same trigger (and label), the one with the highest priority will be shown.

Examples:

  • Standard: onboarding, app review.

  • Important: temporary campaigns (subscriptions, re-opt-in).

  • Critical: urgent alerts (downtime, app updates).

Tracking ID

Optional field for apps with an analytics setup. Adds an extra tracking dimension for orchestration-level analysis:

Payload

Optional JSON data your app can use when receiving the message.

  • Must be an object.

  • Avoid com.batch key.

Use: Send extra info to your In-App messages for custom behavior or analytics via SDK.

Managing an In-App Automation

You can modifyarrow-up-right or stoparrow-up-right an in-app automation 👈

Last updated