Campaign Edition

Start by clicking the New Automation button from the In-App tab on Batch's dashboard.

In order to create your first In-App campaign, you will need to create a theme from the dashboard settings.

Labels & targeting


Exactly like push campaigns, you are able to add labels to your In-App campaigns via the Associate Labels button. You can reuse an existing label or create new one. You will be able to filter your campaigns from the campaign list based on the label you choose here.

The targeting process is exactly the same for In-App campaigns as it is for push campaigns. See here for more information.

The capping rules that you may have set on labels in Settings > Capping only apply to Push campaigns.

Synchronization workflow

Though the targeting interface is similar, In-App and push campaigns work differently. When the app is launched, the SDK automatically retrieves from Batch's servers the list of campaigns available at that moment.


This implies that every events and attribute that have been collected during the current session won't be taken into account for the targeting of an In-App campaign until the next session.

For instance, if you set the targeting to a count of events, then the user's own count has to match the targeting criteria at the app launch rather than during the session in order to display the In-App campaign.

Potential reach

Unlike a push campaign, Batch doesn't need any push token to display an In-App message to your users. As a consequence, the estimate will display the number of targeted installs.

Trigger condition

In-App campaigns will appear on your users’ screen according to a specific trigger. This is especially useful to show the message to your user at the right moment.

For example, you can choose to display an In-App promoting a discount when a user is on the adequate category page. You could also invite a user to get a premium account after they read a certain category of article if you have a news app.

Here is how it looks: InAppTrigger

Choosing a trigger

You can use a session start or any event that have been tagged during the integration of the SDK. You can be even more specific by choosing an event label.


If you don’t select any labels, Batch will trigger the message on every trigger of the selected event.

Starting from version 1.19 of the SDK, the native trigger event 'As soon as possible' is deprecated. It will be removed from the dashboard as soon as you update the SDK to the required version (1.19+).
In addition, the functioning of the native trigger event 'New session' is revised. Explanations on the old and new versions are below.

For all current and future In-App campaigns, here is how the native trigger events work depending on the user’s SDK version:

If the user's SDK version is greater than or equal to 1.19

New session
If you choose to display your In-App campaign with the trigger 'New Session', the message will appear on the first launch of your app:

  • When a user matching the set targeting opens the app and therefore starts a new session, Batch’s SDK will retrieve all the information related to the campaign.
  • It will then trigger the campaign as soon as the synchronization is finished.

You can choose to set this trigger to promote functionalities such as thematic preferences, for optin campaigns, or even to inform users about an app maintenance for instance.

If the user has a limited network connection, the synchronization may be delayed. After a certain time, the SDK will stop the synchronization and will not display any more message to avoid impacting the user experience.

Please note that during the user’s very first session, the SDK is not initialized yet and it is therefore not possible to display an in-app message within the session.

If the user's SDK version is lower than 1.19

As soon as possible
If you choose to display your In-App campaign with the trigger 'As Soon As Possible', the message will be displayed at the soonest to your audience, meaning that it will appear either as users open the app or as they are already browsing the app.

Note: ‘As Soon As Possible’ means that the SDK does not have enough time to assimilate all the information needed to trigger the message and will display your message in a way that might disturb your users. It must be used carefully for urgent or important matters.

New session
If you choose to display your In-App campaign with the trigger 'New Session', the message will appear on the second launch of your app:

  • When a user matching the set targeting opens the app and therefore starts a new session, Batch’s SDK will retrieve all the information related to the campaign, but not display it yet.
  • It will then trigger the campaign as soon as the user launches the app for the second time.

You can choose to set this trigger to promote functionalities such as thematic preferences, for optin campaigns, or even to inform users about an app maintenance for instance.

Choosing a priority

You can select a priority level between Standard, Important and Critical. Priority works on campaigns with identical trigger event, and identical label if one was specified. When two or more campaigns should be displayed at the same time, the system selects the campaign with the highest priority: this is the one that will be displayed after the trigger event occured.


If multiple campaigns have the same priority level, we rely on our automatic priority system to automatically define priority based on multiple criteria.

Setting a capping and grace period


The capping allows you to limit the maximum number of times an In-App campaign will be displayed to a user. This is useful to avoid overwhelming your users with the same message.

The grace period allows you to set a delay between each display of the same In-App message. This feature is quite handy to avoid your user to see the same message multiple times in a single session.

Setting a start/end time


This section lets you program your In-App campaign. You can schedule the start and the end date of your campaign based on global time or local time.

We highly advise you set an ending date. In-App campaigns are functional even in the absence of connectivity, so setting an ending date will prevent the campaigns to be displayed for disconnected users after you manually disable it from the dashboard.

Message edition


A few words on the message edition interface:

  • First of all, notice that you can create translations if you are targeting several languages. Just click the [ + ] button in the top left corner.
  • You can select your theme in the top bar of the message edition section. Every text field that you have enabled during theme creation is now editable.
  • You can use any PNG or JPG image wider than 640px in your In-App message, preferably in a portrait format with a few pixel wide margin on the side if there is text in it. Don't exceed 2MB to be sure the image will load up quickly including with poor connectivity. You can add an image from your computer or use a URL to this image.
  • Finally, try to be creative with your image by using a gradient or transparency, a nicely set up image will often improve your campaign performance.

Message personalization

If you want to improve the conversion rate of your in-app campaign, you can personalise the content of your notification for every customer, based on the same attributes you may already be using for user segmentation.

All you need to do is to click the {...} button next to the title or the body of your message and pick an attribute:

Batch will replace dynamically the attribute with a custom value for each user. If no value is found for a targeted user, Batch will send the message without the value or use the default value you set when you added the attribute:

Editing the attribute

Message personalization is available on the Enterprise plan and, as an option, on other paid plans.

Editing buttons with actions

Choose the action that will be triggered when your user presses a button on your in-App message. The available actions are detailed in this section.

Editing buttons with actions

Built-in action Rules

  • The default action when using action buttons will be "Dismiss".

  • You can always add a custom action registered in the app. This allows you to combine custom actions registered in the app and built-in actions.

See documentation on Custom Actions: iOS / Android.

  • There can only be one action at a call-to-action level.

Exception for the batch.clipboard action that you can associate to a deeplink action.

List of available built-in actions:


Dismiss the In-App message.

Dismiss the In-App message and open the deeplink or Web page out of the app or in the in-app browser.


Available in Batch 1.17 and higher

Copy to the clipboard the provided text and dismiss the In-App message.

Push Opt-In And Smart Re-Optin Prompt

Available for iOS from Batch 1.11 and 1.12 respectively

Available for Android from Batch 1.19.2

Both display the system push notification authorization prompt to eligible users. In addition to displaying it, the Smart Re-Optin prompt opens the system notification settings if the user has already been asked for push notifications opt-in.

If the user is already opt-in, the message will disappear after clicking the button but no further action will be triggered.


Available in Batch 1.17 and higher


Displays the app rating dialog. The In-App system dialog cannot be displayed more than three times in a 365 days period. Your campaign should be rate-limited to three times per year per user.


Displays the Google In-App review feature. Your campaign should be rate-limited.

The "play-core" library is required to display the Google In-App review feature.

Smart App tracking prompt (iOS only)

Available in Batch 1.16 and higher

Displays the system prompt for tracking consent. Asks for Tracking consent using the AppTrackingTransparency framework. If the user has already been asked and refused to consent, it opens the app's settings where tracking can be enabled.

Redirect to settings (iOS only)

Available in Batch 1.12 and higher

Open the notification settings of the current application where notifications can be enabled.

Additional button actions:

Track An Event

Set up an event with optional event labels and event attributes.

Set up an event

Batch allows you to select an existing event or to create a new one directly from here.

2 inputs are available when retrieving an event in your In-App message:

  • Event name (mandatory)
  • Event Label (optional)

Track A Tag

Batch allows you to track a tag in one of your existing tag collections.

Set up a tag

3 inputs are mandatory when retrieving a tag in your In-App message:

  • Select Add or Remove a tag
  • Enter a tag collection name (string format)
  • Enter the name of the tag to add or to remove (string format)

Using an In-App WebView theme

Using In-AppWebView theme

If you select a theme based on the WebView format, you need to fill the Webview URL field with a link to your custom HTML design (ensure that this format is responsive).

Once you have added a valid URL, a preview of your In-App Campaign is displayed. You can test interactions by clicking on the screen.

The preview will only be available for HTTPS URLs.

Enabling your In-App campaign


The editor interface gives you a quick recap of your campaign.

If you're not ready to send it yet, be advised that you can save it as a draft for now and send it later. If everything's alright, then just hit the Save & Run button.


Are you not seeing your In-App campaign while you fit the targeting? Here's a couple possible reasons:

  • Splash screen: If it's your first implementation, be advised that if there is a splash screen in your app, Mobile Landings and In-Apps triggered at session opening might not work (or will be dismissed just after the splash screen's disappear). To temporarily pause the In-App messages display, you can use the Do Not Disturb mode to solve this issue (iOS/Android)
  • Do not disturb issue: Also, check in your implementation if the Do Not Disturb mode isn't activated by default and preventing In-App to be displayed.
  • Specific app architecture: If you have a non standard UI architecture, check that your implementation matches the requirements documentation (iOS/Android).
  • Event tagging issue: If the In-App campaign is triggered by a custom event, check if that event is triggered as expected. This can be easily done by using the Debug tool from Settings > Debug.

If none of this reasons seems to help, don't hesitate to send us any of your questions to our support team.