---
title: "Journey Builder 2.0: In-App Channel"
slug: "journey-builder-20-inapp-channel"
updated: 2026-06-09T23:16:23Z
published: 2026-06-09T23:16:23Z
canonical: "docs.xtremepush.com/journey-builder-20-inapp-channel"
---

> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xtremepush.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Journey Builder 2.0: In-App Channel

If in-app channel is enabled on your project, you can add an in-app node to your multistage journeys as shown in the image below.

![](https://cdn.document360.io/b056e88b-f6c1-4bd2-b5b8-08e9336a17c9/Images/Documentation/d197987e85217c08faa470bfcfddacf2a288367a2008a01ae4015b324b352668-Screenshot_2026-04-03_at_16.22.46(1).png)

When users reach this node, the following occurs in this sequence:

1. The in-app message is assigned to the user's profile on the Xtremepush server.
2. The message remains on the server until the user next opens the app, at which point the Xtremepush SDK retrieves and displays it. You can configure how long the message remains available on the server.

> [!NOTE]
> In-app messages are queued on the server and displayed on the next app open. This applies even if the user is currently active in the app when they reach the in-app node.

> [!TIP]
> Polling must be enabled to display in-app messages. See the prerequisites below for more information.

## Prerequisites

**SDK Requirements**

To support polling for in-app messages, you must have the following minimum versions of the Xtremepush SDK installed.

- iOS: 5.10.0. For more information on updating the iOS SDK, see [iOS SDK releases](/documentation/docs/ios-sdk-releases).
- Android: 9.4.0. For more information on updating the Android SDK, see [Android SDK releases](https://docs.xtremepush.com/v2025.4/docs/android-sdk-releases).
- Web: 2.2025.2. For more information on updating the web SDK, see [web SDK releases](/documentation/docs/web-sdk-releases).

**Configure Polling for In-App Messages**

## Polling lifecycle for in app messages

You can configure automatic or manual polling to control when the SDK checks for in-app messages that have been queued to the user's profile.

With automatic polling, the first polling request is issued when your user opens the app or visits the web page. With manual polling, the first polling request is issued when you call the Start Polling method.

The next polling request occurs after the configured polling interval in the app.

Polling is paused when the application goes into background mode and resumes when the application goes back into foreground mode.

## Configure Polling

The polling must be configured individually for each application that your campaign is running on. To configure the polling settings, do the following:

1. From the **Settings** tab, go to **Apps & Sites**.
2. Select your application and then open the **In-App** settings.
3. Configure the polling settings:

- If you want to enable automatic polling, turn on the **Automatic Polling** toggle.
- If you prefer more control over when queued in-app messages appear, leave the **Automatic Polling** toggle off and use SDK methods to enable manual polling.
- Start Polling:

**Java (Android)**

```java
mPushConnector.startInappPoll(context)
```

**Swift (iOS)**

```swift
XPush.startInappPoll()
```

**Objective-C (iOS)**

```objectivec
 [XPush startInappPoll];
```

- Stop Polling:

**Java (Android)**

```java
mPushConnector.stopInappPoll(context)
```

**Swift (iOS)**

```swift
XPush.stopInappPoll()
```

**Objective-C (iOS)**

```objectivec
[XPush stopInappPoll];
```

> [!WARNING]
> Set Polling Interval
> 
> To set the polling interval and the duration of each polling request in seconds, contact Xtremepush support. See [Contact Us](/documentation/docs/contact-us) for details on contacting Xtremepush Support.

**Configure Content Templates**

When you add an in-app node to a journey, you must upload a content template. You cannot currently create the content for the in-app message directly within the journey workflow.

To create a content template, go to **Content** > **Templates** > **Create Templates** > **In-App Message**. For more information on how to configure the different in-app messages, see the following:

- [Create Banner Campaigns](/documentation/docs/in-app-banner)
- [Create Full-Screen Campaigns](/documentation/docs/in-app-full-screen)
- [Create Modal Campaigns](/documentation/docs/in-app-modal)
- [Create Custom HTML content for In-App Campaigns](/documentation/docs/in-app-custom-html)
- [Create Native Content Campaigns](/documentation/docs/create-native-content-campaigns)

## Configure the In-App Node

To add the node, go to the **Content** tab and edit your journey workflow. Under **Engagement**, select the **In app** node and drag it into your workflow.

In the **Setup** tab of the **In app** node, provide the following:

- **Default Language**: This is the default language of your in-app message.
- **Additional Languages**: If you want to send this message in multiple languages, select the language options here. You must upload a content template for each language.
- **Select Channel**: Select iOS or android, or both.
- **Message Lifetime**: This setting determines how long the message remains on the Xtremepush server.
  - **Expires in**: Select a specific interval for the message to remain active. The available interval options are seconds, minutes, hours, days, and weeks.
  - **Expires at**: Choose a specific date and time for the message to expire.
  - **Expires immediately**: The message expires if the user is not in-app at the moment of the trigger.

In the **Content** tab, upload your template(s).

> [!NOTE]
> If a content template is deleted after being applied to an in-app node, the journey node will not be affected and will continue to function with the applied content.

## In-App Message Analytics

In-app message metrics can be viewed under:

- **View Metric** in the in-app node
- **Analytics** > **Inapp** in the Journey Workflow (**Content**tab)
- **Analytics** tab of your journey > **In App**
- **Campaign Comparison** tab, when you select the campaign with the in-app node

The delivery statuses for in-app messages are:

- **Sent**: The message has been assigned to the user's profile on the server.
- **Delivered**: The user opened the app and the message was successfully displayed.
- **Clicked**: The user clicked on the in-app message.

> [!NOTE]
> In-app messages do not have an **Expired** status. If a message expires before the user opens your app, it will remain with a **Sent** status.
