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

# Create In-App Campaign

> Step-by-step guide to creating an in-app campaign in MoEngage, covering audience targeting, content design, scheduling, goals, and delivery controls.

To create an In-App campaign:

1. On the sidebar in the MoEngage dashboard, hover over **Engage**. The **Engage** menu appears.
2. Click **+ New Campaign**. The New Campaign dialog box appears. You can also click **All Campaigns** on the **Engage** menu and then click **+ Create campaign** on the All campaigns page. <img src="https://mintcdn.com/moengage/mw41kryDYE27CLIk/images/moengage_ceb916.png?fit=max&auto=format&n=mw41kryDYE27CLIk&q=85&s=19f4b6e8b5a6045c6cb8ad76b9c8ec4d" alt="Engage menu with the + New Campaign option highlighted" width="562" height="474" data-path="images/moengage_ceb916.png" />
3. Under **Inbound**, click **In-app**. The In-App campaign creation page appears. <img src="https://mintcdn.com/moengage/mw41kryDYE27CLIk/images/moengage_617e13.png?fit=max&auto=format&n=mw41kryDYE27CLIk&q=85&s=99b8d697279d9f4249f8816be4e32bef" alt="New Campaign dialog box with the In-app option highlighted under Inbound" width="1264" height="1304" data-path="images/moengage_617e13.png" />

# Create an In-App Message Campaign

To create an In-App message campaign, follow these steps:

1. [Target users](#step-1-target-users): Define the audience for your campaign.
2. [Content](#step-2-content): Design the message content.
3. [Schedule and goals](#step-3-schedule-and-goals): Set the delivery schedule and track campaign performance.

## Step 1: Target Users

### Campaign Details

The **Campaign Details** section includes:

<img src="https://mintcdn.com/moengage/CaPmX0z_ys8cr0ms/images/moengage_048d33.png?fit=max&auto=format&n=CaPmX0z_ys8cr0ms&q=85&s=dac7c8c278cdb7ec38126b24d4b28320" alt="details.png" width="648" height="288" data-path="images/moengage_048d33.png" />

* **Campaign name**: Enter a name to easily identify and manage your campaign. The campaign name must be between 5 and 256 characters.
* **Campaign tags**: Select up to five tags from the drop-down list. Tags help you organize and filter campaigns. For more information, refer to [Campaign Tags](/user-guide/campaigns-and-channels/getting-started/introduction/campaign-tags).

### Select Platform

In the **Target platforms** section, select the required platforms where your In-App message should display.

<img src="https://mintcdn.com/moengage/QVZKszouQuxXOzFr/images/moengage_1dd469.png?fit=max&auto=format&n=QVZKszouQuxXOzFr&q=85&s=491df8fea3720005d83190dd9656dd74" alt="platforms.png" width="534" height="146" data-path="images/moengage_1dd469.png" />

<Info>
  If [Portfolio](/user-guide/settings/account/portfolio/portfolio) is enabled, you can select target projects from the **Select Project** dropdown to specify the website where your campaign will be delivered. For more info, refer to [Portfolio for In-App Campaigns](/user-guide/campaigns-and-channels/in-app-message/getting-started-with-in-app-message/portfolio-for-in-app-campaigns).
</Info>

## Trigger Criteria

This section defines when the In-App message triggers for users.

<Tabs>
  <Tab title="On session start">
    Select **On session start** to display the In-App message as soon as a user's app session begins. An app session starts when the user first interacts with the app. The session ends if the user logs out, enters from another traffic source, or is inactive for longer than the defined inactivity period (default is 30 minutes).

    <img src="https://mintcdn.com/moengage/S2vOz7ciYYqlhjCf/images/moengage_6bae65.png?fit=max&auto=format&n=S2vOz7ciYYqlhjCf&q=85&s=df41529333eaed00259322e67d0389cd" alt="Screenshot 2025-03-03 at 4.07.40 PM.png" width="1202" height="674" data-path="images/moengage_6bae65.png" />

    Under **Select trigger time**, select **Immediately** to send the message as soon as the campaign is published, or select **After Delay** to send the message after a specified time.

    <Info>
      * Make sure to add a delay so the In-App message does not appear on the splash screen.
      * With the **After Delay** option, you can set a maximum delay of one day (86400 seconds) and a minimum delay of one second.
      * The **After Delay** option is available in the following SDKs:
        * Android SDK version 6.9.0 or later
        * iOS SDK 4.11.1 or later
        * React Native SDK 8.6.0 or later
        * Cordova SDK 8.4.0 or later
        * Capacitor SDK 3.1.0 or later
      * This trigger condition is available in the following SDKs:
        * Android SDK version 9.0.0 or later
        * iOS SDK version 6.06.0 or later
      * This trigger condition is presently available only for native Android and iOS. It is not supported for hybrid.
    </Info>
  </Tab>

  <Tab title="On screen load">
    Select **On screen load** to display the In-App message on a specific screen or app context.

    <img src="https://mintcdn.com/moengage/M3SzEdkQVgGAjJCt/images/moengage_76ad4f.png?fit=max&auto=format&n=M3SzEdkQVgGAjJCt&q=85&s=3b803c59cc4b28b91cbb6fdaa44dde84" alt="Screenshot 2025-03-03 at 4.14.38 PM.png" width="1290" height="438" data-path="images/moengage_76ad4f.png" />

    Under **Select screen/In app context**, you have the following options:

    <img src="https://mintcdn.com/moengage/t9nft78wsoLTI2Nx/images/moengage_2aa553.png?fit=max&auto=format&n=t9nft78wsoLTI2Nx&q=85&s=04dacc057874a7498920a5e0087cedba" alt="Screenshot 2025-03-03 at 4.15.36 PM.png" width="2810" height="218" data-path="images/moengage_2aa553.png" />

    * **Any screen (Earlier on app open)**: The message appears as soon as the app opens on any screen where *showInApp()* or *showNudge()* is explicitly called. If these methods are not present on the initially opened screen, the message does not display until the user navigates to a screen where these methods are called. For instance, if your app has ten screens and you have added the methods to five screens, the message displays on every screen where these methods are added. Add relevant delivery controls to your campaign to prevent the message from appearing on all screens where the methods are present. For more information on delivery controls, refer [here](#delivery-controls).
    * **Specific screens**: After selecting **Specific screens**, configure the screens or app context based on the platforms you selected. For your In-App message, you can configure either the screen, the app context, or both.
      * **Screen**: An application can contain multiple screens, such as login, home, product, and checkout screens. Under the **Android** and **iOS** tabs, choose where the In-App campaign should display. Select screens from the **Screen is any of** list. You can select a maximum of five screens. This is an OR condition, so the message displays on any one of the selected screens.
      * **App context**: A context is a section or part of a screen where you can display messages. For example, a podcast screen can have two contexts: *For you* and *All episodes*. To display the In-App campaign on the desired app context, add the context name in the **App context is any of** field. This is an OR condition, so the message displays on any one of the app contexts. For more information on context, refer to [Android](/developer-guide/android-sdk/in-app-messages/in-app-nativ) and [iOS](/developer-guide/ios-sdk/in-app-messages/in-app-nativ).

            <img src="https://mintcdn.com/moengage/B1ZqBU-ISgaoSx_O/images/moengage_55065c.png?s=a13ef5b6b0bc4d6a7bb4de707c3e8e0f" alt="2025-03-03_16-29-26 (1).gif" width="1600" height="762" data-path="images/moengage_55065c.png" />

    Under **Select trigger time**, select **Immediately** to send the message as soon as the campaign is published, or select **After Delay** to send the message after a specified delay.

    <Info>
      * You must add the *showInApp()* or *showNudge()* method to your screens for the In-App message to appear. For more information, refer to [Display In-App](/developer-guide/android-sdk/in-app-messages/in-app-nativ).
      * You can set a maximum delay of 1 day (86400 seconds) and a minimum delay of 1 second with the **After Delay** option.
      * The **After Delay** option is available only for In-App Android SDK version 6.9.0 or higher and In-App iOS 4.11.1 or later.
      * Existing campaigns with the old trigger criteria **On app open** are migrated under **On specific screen** trigger and under **Any screen**.
      * Screen fetch behavior:
        * **For Android**: MoEngage automatically fetches the selected screen from your app through the MoEngage SDK.
        * **For iOS**: You must enter the screen name where the In-App message should display.
      * This trigger condition is available with the following SDKs:
        * Android SDK version 9.0.0 or later
        * iOS SDK version 6.06.0 or later
      * This trigger condition is currently available only for native Android and iOS. It does not support hybrid platforms.
    </Info>
  </Tab>

  <Tab title="On custom event">
    Select **On custom event** to display In-App messages when a user performs a specific custom event.

    <img src="https://mintcdn.com/moengage/SBG7um9Fqotw1CFo/images/moengage_b6a198.png?fit=max&auto=format&n=SBG7um9Fqotw1CFo&q=85&s=ccf222f74d325ec77518adc592804a81" alt="Screenshot 2025-03-03 at 4.35.26 PM.png" width="3148" height="1284" data-path="images/moengage_b6a198.png" />

    #### **IF user**

    In this section, select the event condition for your In-App campaign. MoEngage sends the In-App campaign if a user performs this event. You can add multiple events and attributes.

    1. From the **Select an event** list, select the event.
    2. Beginning with In-App Android SDK version 8.1.0 and In-App iOS SDK version 5.0.1.1, you can add multiple OR conditions within events by clicking **+ Trigger**. For example, display the In-App message to users who have clicked in-app on mobile at least one time.

           <img src="https://mintcdn.com/moengage/QRy8rcYszbTJNwGr/images/moengage_b3dc7c.png?fit=max&auto=format&n=QRy8rcYszbTJNwGr&q=85&s=e2e9889fcc8d72e8e5e57f99c131bf7c" alt="Screenshot 2025-03-03 at 4.43.28 PM.png" width="3170" height="1502" data-path="images/moengage_b3dc7c.png" />

    You can also refine the custom event:

    1. Click **+ Attributes** to add attributes to the filter.
    2. From the **Select attribute** drop-down list, select the attributes and the logical drop-downs for the selected attribute.
    3. To add more attributes:
    4. Click **+ Attribute**.
    5. Click **AND** or **OR**.
    6. From the **Select attribute** list, select the attributes and the logical drop-downs for the selected attribute.

    For instance, if you select the event *User installs the app*, you can add the attribute *App Version* to filter for users who installed a specific version of the app.

    <img src="https://mintcdn.com/moengage/rlD8iAX6JQFx0hql/images/moengage_b8d968.png?fit=max&auto=format&n=rlD8iAX6JQFx0hql&q=85&s=fafb889009ee332fb4cedb01f9c73d07" alt="" width="1922" height="522" data-path="images/moengage_b8d968.png" />

    #### **AND then**

    You can add more customization with the **AND then** feature. In addition to the **+ Trigger** option, the **+ Filter** button enables you to string multiple events together.

    For instance, you can select the *In-App Clicked Android* event and then use the **AND then** option to add the *Added to Cart* event.

    By doing this, the In-App campaign displays to users who have clicked an In-App campaign on their mobile device at least once AND then proceeded to add an item to their cart at least once.

    <img src="https://mintcdn.com/moengage/xeb_76Bworf1GG6P/images/moengage_9741bc.png?fit=max&auto=format&n=xeb_76Bworf1GG6P&q=85&s=adad98c442bd13551bafaf711b94aa3f" alt="Screenshot 2025-03-03 at 4.51.54 PM.png" width="3174" height="1134" data-path="images/moengage_9741bc.png" />

    You can also define the time to wait before the event in the **Filter** condition evaluates. Setting this limit to 15 minutes implies that the user must perform the **Filter** event within 15 minutes of performing the first trigger event. In this example, the first event is *In-App Clicked Android*. You can set a maximum delay of 24 hours and a minimum delay of 1 minute here.

    <img src="https://mintcdn.com/moengage/jnaevUpPOwD04mEl/images/moengage_85d71a.png?fit=max&auto=format&n=jnaevUpPOwD04mEl&q=85&s=4afccdfd57123ffca914fb10e81d408b" alt="3.png" width="1850" height="280" data-path="images/moengage_85d71a.png" />

    If you click **+ Filter** again, you can add another event to the trigger criteria. You get the option to choose *AND* or \*OR.\*Combine the two filter conditions by choosing *AND,* or use the \_OR\_to filter users if they perform any of the events within the time limit.

    <img src="https://mintcdn.com/moengage/cFTwc93vQdTanvKi/images/moengage_bf15cc.png?fit=max&auto=format&n=cFTwc93vQdTanvKi&q=85&s=600e62b8bdb760898cc46dfd3929cefe" alt="" width="1214" height="878" data-path="images/moengage_bf15cc.png" />

    #### **THEN**

    In the **THEN** section, under **Trigger the message**, select an option to define when to display the message. The available options are:

    * **Immediately**: The message displays immediately after the trigger criteria are met.
    * **After Delay**: The message displays after the defined delay.

          <img src="https://mintcdn.com/moengage/VqQHPleQ9qk_ZsLR/images/moengage_544cc5.png?fit=max&auto=format&n=VqQHPleQ9qk_ZsLR&q=85&s=094c4904d294e7533a7a12fc721663a2" alt="5.png" width="572" height="232" data-path="images/moengage_544cc5.png" />

    **Trigger criteria summary**: This section summarizes the trigger based on the events and attributes you select, making it easier to understand the trigger criteria.

    <img src="https://mintcdn.com/moengage/2FjM3dGfEH1CYo8k/images/moengage_6156e6.png?fit=max&auto=format&n=2FjM3dGfEH1CYo8k&q=85&s=1afc2ac1b72c8d4ffc3ae99412e3451b" alt="Screenshot 2025-03-03 at 4.45.50 PM.png" width="1732" height="208" data-path="images/moengage_6156e6.png" />

    <Info>
      * You must not select the same event with the **Filter**and use the **Then**option. This will show an error message and your campaign will not run.
      * The **AND then** option is available only for In-App Android SDK version 8.1.0 or higher and In-App iOS 5.01.1 or higher.
      * When *After Delay* is selected, a maximum delay of 1 day (86400 seconds) and a minimum of 1 second delay can be set.
      * The *After Delay* option is available only for In-App Android SDK version 6.9.0 or higher and In-App iOS 4.11.1 or higher.
      * Events received from Data API or any other server-side source are not supported as a trigger action in the custom event.
    </Info>
  </Tab>
</Tabs>

## Select Target Audience

This section includes segmentation filters to help you select the target audience for your campaign.

<Tabs>
  <Tab title="All Users">
    Select this filter option to send the campaign to all app users. When you use this option, you cannot add multiple filters.

    <img src="https://mintcdn.com/moengage/_eUNBDpGCEXI_sgZ/images/moengage_a7af66.png?fit=max&auto=format&n=_eUNBDpGCEXI_sgZ&q=85&s=eba4c4e5a15938799160b3c2f1f88ada" alt="6.png" width="2722" height="384" data-path="images/moengage_a7af66.png" />
  </Tab>

  <Tab title="Filter by User Property">
    Select this filter option to target users based on properties such as first seen, last seen, or city. Click the **User property** tab and follow these steps:

    1. Select the desired attribute from the drop-down list. This enables filters based on the selected attribute. For example, numeric attributes can have filter conditions such as 'is equal to', 'is not equal to', 'is between', while string attributes have different filters.
    2. Enter the filter value(s) to create the desired user segment.
    3. Click **+ Nested Filter** to add a filter to create nested AND or OR conditions (optional).

    For more information, refer to [Create Segments](/user-guide/segment/segment-operations/create-segments).

    <img src="https://mintcdn.com/moengage/Deli0Qwc2s7oDHRm/images/moengage_97cc86.png?fit=max&auto=format&n=Deli0Qwc2s7oDHRm&q=85&s=6caab03a3c9b794a013bed507b28dc91" alt="UserProperty.png" width="2386" height="532" data-path="images/moengage_97cc86.png" />
  </Tab>

  <Tab title="Filter by User Behavior">
    Select this filter option to target users based on their behavior or events, such as app/site opened or viewed product. Click **User Behavior** and follow these steps:

    1. Select the execution condition and the desired user activity (event).
    2. Enter the event frequency and time duration for the event execution.
    3. Click **+ Attributes** and add an event attribute with a filter condition.
    4. Enter the filter value(s) to create a rule.
    5. Use the **+ Aggregation** button to add aggregation functionality. For more information, refer to [Aggregation Operations](/user-guide/segment/advanced-concepts/aggregation-operations).
    6. Click **+ Nested Filter** to add a filter to create nested AND or OR conditions (optional).

    For more information, refer to [Create Segments](/user-guide/segment/segment-operations/create-segments).

    <img src="https://mintcdn.com/moengage/xaH8HoR16_YVDek5/images/moengage_cd2da4.png?fit=max&auto=format&n=xaH8HoR16_YVDek5&q=85&s=337a0463c183fe8201e7d66d140b460b" alt="UserBehavior.png" width="2392" height="696" data-path="images/moengage_cd2da4.png" />
  </Tab>

  <Tab title="Filter by User Affinity">
    Select this filter option to target groups of users created based on their actions with a specific attribute value. Click **User Affinity** and follow these steps:

    1. Select the desired user event or attribute.
    2. Select the user affinity parameter from the following:

    * **Predominantly**: Select affinity attribute with a filter condition and provide the affinity values.
    * **For a minimum of**: Select affinity attribute with a filter condition and provide the affinity values.
    * **Most no. of times**: Enter a value or use the arrows to provide the top percentage of users.
    * **Least no. of times**: Enter a value or use the arrows to provide the bottom percentage of users.

    3. Enter or use the arrows to provide the time duration for the event execution.
    4. Click **+ Attribute** to add more attributes to the filter.
    5. Click **+ Nested Filter** to add a filter to create nested AND or OR conditions (optional).

    For more information, refer to [Create Segments](/user-guide/segment/segment-operations/create-segments).

    <img src="https://mintcdn.com/moengage/0iWkm50wROjmHH3Z/images/moengage_d21ac9.png?fit=max&auto=format&n=0iWkm50wROjmHH3Z&q=85&s=55e3ef8e01ffba849db0bceb623bc230" alt="UserAffinity.png" width="2388" height="750" data-path="images/moengage_d21ac9.png" />
  </Tab>

  <Tab title="Filter by Custom Segment">
    Select this filter option to use a custom segment as the target audience.

    1. Select a custom segment as the target audience from the list of custom segments available.
    2. Click **+ Nested Filter** to add a filter to create nested AND or OR conditions (optional).

    For more information, refer to [Custom Segments](/user-guide/segment/segment-operations/custom-segments).

    <img src="https://mintcdn.com/moengage/DUgG020WbtkVK2Ls/images/moengage_31f78b.png?fit=max&auto=format&n=DUgG020WbtkVK2Ls&q=85&s=92ca2cc93036e2a7d44ebab81b80b726" alt="CustomSegment.png" width="2390" height="532" data-path="images/moengage_31f78b.png" />
  </Tab>
</Tabs>

After selecting the filter criteria, you can also perform the following actions:

* **Create Multiple Filters**: Create and combine multiple user property, user activity, and custom segment rules to build complex user segments.
  1. Click **+ Filter**.
  2. Click **AND** or **OR**.
  3. Select the attribute or event and define the filter conditions.
* **Exclude Users**: Select this check box to define filter criteria for users to exclude from the campaign.
* **Re-evaluate campaign eligibility before displaying**: Turn this toggle on to verify a user’s segment eligibility at the exact moment a campaign is triggered. This prevents users from seeing irrelevant content if their attributes change during an active session. For more information, refer [here](#campaign-audience-limit). <img src="https://mintcdn.com/moengage/T-dEj4C-7pywzBS3/images/moengage_a0b3c8.png?fit=max&auto=format&n=T-dEj4C-7pywzBS3&q=85&s=803977c3672248932dca44c6e12750c8" alt="Screenshot 2026-02-09 at 12.23.09 PM.png" width="2984" height="646" data-path="images/moengage_a0b3c8.png" />
* **Reset filters**: Click this option to clear all segmentation filters.
* **Show count**: Click this button to display the total number of users currently in the configured segment.

<img src="https://mintcdn.com/moengage/4hNKOAjPrnhpJB2_/images/moengage_7e1d90.png?fit=max&auto=format&n=4hNKOAjPrnhpJB2_&q=85&s=ca68f8312a4914489d45f0bbd551c6f2" alt="filters connector campaign.png" width="2680" height="332" data-path="images/moengage_7e1d90.png" />

<Info>
  If you have the [*Portfolio*](/user-guide/settings/account/portfolio/portfolio) feature enabled, you can create user segments by combining user data and behavior from different apps and websites (Projects) within your workspace. For more information, refer to [Segmentation in a Multi-Project Portfolio](/user-guide/segment/advanced-concepts/segmentation-in-a-multi-project-portfolio).
</Info>

## Re-evaluate Campaign Eligibility

By default, segment membership is evaluated during the initial campaign call when a user opens the app. Any attribute changes occurring mid-session are not reflected until the next app launch. When you enable the **Re-evaluate campaign eligibility before displaying** toggle, the SDK intercepts the campaign trigger to perform a live check with the backend. If user attributes have changed (for example, transitioning from a Free to Paid status), the SDK discards the outdated campaign and fetches content relevant to the user's updated state.

<Info>
  **Information**

  **Availability and Scope**

  * **SDK Version**: Support for segment re-evaluation is available starting with In-app Android SDK version 9.7.0 and In-app IOS SDK version 7.04.0.
  * **Supported segments**: This feature is available only for User Attribute-based segments and Real-Time Segment Evaluation (RTSE) segments.
  * **Excluded segments**: This option is hidden for segment types where real-time changes do not apply (for example, static segments).
  * **Limit**: This option is available for up to five campaigns.
</Info>

**Execution Logic**

Once enabled, the execution logic is as follows:

1. **Trigger detection**: The user performs an action that matches the trigger criteria.
2. **Backend verification**: The SDK initiates a backend request for a new evaluation.
3. **Eligibility check**: The backend evaluates the user's current attributes. If the user is eligible, the campaign appears; if not, it is dropped, and a failure is logged.
4. **Campaign refresh**: If the campaign is dropped, the SDK performs a new campaign call to fetch campaigns relevant to the updated segment.
5. **Campaign display**: The new, eligible campaign displays to the user within the same session on the next trigger.

**Example User Journey**

| Step | Action                          | Logic                                                                                                  | Result                                               |
| ---- | ------------------------------- | ------------------------------------------------------------------------------------------------------ | ---------------------------------------------------- |
| 1    | User opens the app.             | The SDK performs a campaign call. The user is identified as "Free".                                    | Campaign A (targeting Free users) is cached.         |
| 2    | User upgrades their plan.       | Attribute changes from Plan: Free to Plan: Paid.                                                       | SDK detects the attribute change.                    |
| 3    | User performs a trigger action. | **Re-evaluate campaign eligibility before displaying** toggle is turned ON. The SDK calls the backend. | Campaign display is paused for verification.         |
| 4    | Evaluation occurs.              | The backend identifies the user as "Paid".                                                             | Campaign A is dropped,and a failure is logged.       |
| 5    | Display.                        | The SDK fetches campaigns for "Paid" status.                                                           | Campaign B (Paid) appears on the next trigger point. |

*Note: If you disable this feature, the SDK continues to show Campaign A (Free) even after a user upgrades, until the app is restarted. Additionally, if re-evaluation is not enabled for subsequent campaigns, the SDK will not perform real-time checks for those specific campaigns.*

## Campaign Audience Limit

This feature helps you control campaign reach and expenditure by limiting the number of users who receive it based on engagement metrics like sends, impressions, and conversions. You can set total, daily, or instance-level limits for campaigns. For more information, refer to [Campaign Audience Limit](/user-guide/settings/channels/delivery-controls/campaign-audience-limit).

<img src="https://mintcdn.com/moengage/cVruC-B7I1TnIZ0h/images/moengage_d9e84f.png?fit=max&auto=format&n=cVruC-B7I1TnIZ0h&q=85&s=6ad4c5343c6376487570a6a783fda874" alt="image (2).png" width="987" height="403" data-path="images/moengage_d9e84f.png" />

## In-session Attributes

In-session attributes enable you to group and target users based on their actions within the current app session. For example, use in-session attributes to display onboarding flows exclusively to new users visiting your app for the first time. This method ensures that these users receive a customized experience immediately during their initial session.

To add an in-session attribute:

1. Click the **+ In-session attributes** button and select the required attribute from the list. <img src="https://mintcdn.com/moengage/wIFGWsQFEjsz2j4v/images/moengage_e00742.png?fit=max&auto=format&n=wIFGWsQFEjsz2j4v&q=85&s=d87f0163b153d35ffa5e6fd64f1d17d5" alt="Screenshot 2025-01-21 at 2.47.47 PM.png" width="410" height="144" data-path="images/moengage_e00742.png" />
2. Use **And**/**Or** to combine multiple in-session attributes. <img src="https://mintcdn.com/moengage/o0kXRAcOq2mxzDnY/images/moengage_efe554.png?fit=max&auto=format&n=o0kXRAcOq2mxzDnY&q=85&s=a519ac7026bd0efaab8f190de2b2acdd" alt="Screenshot 2025-01-21 at 2.46.44 PM.png" width="3152" height="1142" data-path="images/moengage_efe554.png" />
3. Select the **Exclude Users** check box to exclude users based on their in-session activity.

You can use the following in-session attributes with your In-App campaign:

* **Query Parameter**: This attribute segments users based on query parameters in the Uniform Resource Locator (URL). Typically, users land on your personalized URL by clicking an advertisement on any social media platform.
  * You can use UTM parameters to segment users based on their source or the campaign that led them to the URL.
  * UTM parameters like *utm\_source* identify campaigns driving users to websites. You can use UTM and custom parameters to segment users and personalize their experience.
* **User Type**: This attribute segments users based on whether they are new or returning. The SDK stores user details (*unique\_id*) for each user in the app storage. A user is considered a *Returning User* if the associated user details exist in the SDK data storage. Otherwise, the user is considered *New*. If the user clears the app cache, they are considered new.
  * Note: If two users (User 1 and User 2) use the same device and User 2 logs in after User 1, User 2 is considered a returning user.
* **Day of the Week**: This attribute segments users based on the day of the week they visit your app.
* **Time of the Day**: This attribute segments users based on the hour of the day they visit your app. You can choose from any of the one-hour slots available in the list.
* **GeoLocation**: This attribute segments users based on their geolocation when they visit your app. You can choose the country, state/region, and city where the user is located or exclude a specific country.

### Control Group

This section provides information about control groups for the campaign. Control Groups are enabled only for promotional campaigns. They are not applicable for transactional campaigns. Enable control groups to which you want to send the promotional campaign.

|                                                                                                                                                                                                                                                                                                                                                                                                             |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| In the **Control group** section: <br />• Turn the **Global control group** toggle on to not send the campaign to all users in the control group.<br />• Turn the **Campaign control group** toggle on to not send the particular campaign to the control group.<br /><br />For more information, refer to [Control Group](/user-guide/campaigns-and-channels/getting-started/introduction/control-groups). | <img alt="control group.png" src="https://mintcdn.com/moengage/fQ0QnP2abFkVAzJ2/images/moengage_4f8241.png?fit=max&auto=format&n=fQ0QnP2abFkVAzJ2&q=85&s=7d03643101b887b27c762db514b01b32" width="532" height="188" data-path="images/moengage_4f8241.png" /> |

Click **Next** or use the tabs at the top of the campaign creation navigation to proceed to Step 2: **Content**.

## Step 2: Content

The following options are available to add content for your campaign:

* [**Prebuilt and saved templates**](#prebuilt-and-saved-templates)
* [**Start from scratch**](#start-from-scratch)

### Prebuilt and Saved Templates

This option enables you to choose a template from the following categories: **All** (chosen by default), **Pre-built**, **Saved templates**, and **API templates**.

In this section, you can perform the following actions:

1. Search templates: Enter the template name in the **Search templates** bar.
2. Filter templates: Use the following options to filter templates:
   * * **Filter By Type**: Filter templates based on pre-built types (e.g., Nudges, Carousel, Pop-up).
     * **Filter By Use Case**: Filter templates based on their purpose (e.g., Promotional, Feedback, Survey).
     * **Filter By Content**: Filter templates based on their content (e.g., text-only, buttons).
     * **Filter By Editor**: Filter based on the editor that supports the template (Native, HTML, or Self Handled).

Pre-built Templates

<img src="https://mintcdn.com/moengage/Vec55CKt-wYQ1h5L/images/moengage_44fcaf.png?s=efc099becc5814feb4b612e0fbfbfb09" alt="FilterandSearchOptions.gif" width="1440" height="770" data-path="images/moengage_44fcaf.png" />

<Tabs>
  <Tab title="Pre-Built templates">
    Pre-built templates support various options beyond adding text, such as adding links and buttons, displaying ratings, and pop-up templates. The following table summarizes some common pre-built templates:

    | Field           | Description                                         |
    | --------------- | --------------------------------------------------- |
    | Text            | Displays templates with text.                       |
    | With Image      | Displays templates with images.                     |
    | Without Image   | Displays templates without images.                  |
    | Single Button   | Displays templates with a single button.            |
    | Multiple Button | Displays templates with multiple buttons.           |
    | Full Screen     | Displays templates that enable full screen.         |
    | Pop up          | Displays templates that have pop-up windows.        |
    | Embedded        | Displays templates with embedded links.             |
    | Rating          | Displays templates with rating options.             |
    | Nudge           | Displays nudge templates in a non-intrusive manner. |
  </Tab>

  <Tab title="Saved templates">
    You can modify and save templates. For more information, refer to [Saving Customized Templates](/user-guide/campaigns-and-channels/in-app-message/templates/saving-customized-templates).
  </Tab>
</Tabs>

### Start from Scratch

This option enables you to choose from the following content creation methods:

* **Self Handled**: For more information, refer to [Self Handled In-App Template](/user-guide/campaigns-and-channels/in-app-message/templates/self-handled-in-app-template).
* **Zip upload**: For more information, refer to [Zip Upload Templates](/user-guide/campaigns-and-channels/in-app-message/templates/html-in-app-templates).
* **Custom HTML upload**: For more information, refer to [HTML In-App Templates](/user-guide/campaigns-and-channels/in-app-message/templates/html-in-app-templates).

### Add Content to the Template

Perform the following steps to add content to the selected template and template type.

#### Common Actions

1. Turn the **Mirror platforms** toggle on to use the same template and configure the message together for the selected platforms.
2. Click **+ A/B test** to create a variation. You can create a maximum of five variations.\
   For more information, refer to [A/B Testing Overview](/user-guide/settings/account/security/overview).
3. Click **+ Locales** to add a locale. You can add a maximum of 10 locales for a single campaign.\
   For more information, refer to [Using Locales](/user-guide/campaigns-and-channels/in-app-message/create/using-locales-in-in-app-messages).
4. Click the <Icon icon="ellipsis-stroke-vertical" /> icon to:
   1. **Save Template**
   2. **Change Template**
   3. **Reset Template**

<img src="https://mintcdn.com/moengage/t9nft78wsoLTI2Nx/images/moengage_2ca32b.png?fit=max&auto=format&n=t9nft78wsoLTI2Nx&q=85&s=fecf3db45eaef1eac214a893e5a6663c" alt="Screenshot 2022-05-25 at 2.02.06 PM.png" width="1918" height="530" data-path="images/moengage_2ca32b.png" />

#### Template Settings

| Field                  | Description and action                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Background color       | Select the **Background color** option and define the background color of the message.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| Phone background color | Select and define the background color of the phone or device.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| Image                  | Do one of the following:<br />1. Select the **Image URL** option and enter or paste the URL of the image.<br />2. Select the **Upload Image** option and drag and drop the image or click **upload from the computer** to upload the stored image.<br /><br />**Note:**<br />• Ensure that the image size is less than 10MB.<br />• Ensure that the aspect ratio of the image is 2:1 (Width x Height).                                                                                                                                                                                                                                            |
| Animation              | Entry and exit animations for the entire In-App message.<br /><br />Select from one of the following animations:<br />• **None** - no animation<br />• **Slide up** - Message displays from the top of the screen.<br />• **Slide down** - Message displays from the bottom of the screen.<br />• **Slide left** - Message displays from the left of the screen.<br />• **Slide right** - Message displays from the right of the screen.<br />• **Fade in** - Message displays with the fade-in effect. Applicable only for entry animation.<br />• **Fade out** - Message displays with the fade-out effect. Applicable only for exit animation. |
| Close Button           | 1. Enable or disable the display of the close button.<br />2. From the **Type** drop-down, customize the appearance of the close button by selecting one of the following:<br />  • White-filled (Android only)<br />  • Black-filled<br />  • Grey-filled<br />  • Brown-filled<br />  • Cross only black<br />  • Cross only grey<br />  • Black-empty (iOS only)<br />3. From the **Close button placement** drop-down, select the placement as one of the following:<br />  • Left<br />  • Right                                                                                                                                             |
| Border                 | Select the following:<br />1. Use the slider to define the **Width** of the border in pixels.<br />2. Use the slider to define the **Radius** of the border in pixels.<br />3. Select or type the hexadecimal code of the **Border color**.                                                                                                                                                                                                                                                                                                                                                                                                       |

#### Text

<table>
  <thead>
    <tr>
      <th>Field</th>
      <th>Description and action</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>Heading</td>
      <td>Type or paste the heading in the text box.</td>
    </tr>

    <tr>
      <td>Font size</td>
      <td>Type or use the up and down arrows to select the font size used in the text.</td>
    </tr>

    <tr>
      <td>Font color</td>
      <td>Type the hexadecimal code or select the font color used in the text.</td>
    </tr>

    <tr>
      <td>Custom font</td>
      <td>Select the custom font and type the font name used in the text.</td>
    </tr>

    <tr>
      <td>Background color</td>
      <td>Select and define the background color of the message.</td>
    </tr>

    <tr>
      <td>Action</td>

      <td>
        Select one of the following from the drop-down list:<br /><br />

        <table>
          <thead>
            <tr>
              <th>Field</th>
              <th>Description</th>
            </tr>
          </thead>

          <tbody>
            <tr>
              <td>None</td>
              <td>No action is performed.</td>
            </tr>

            <tr>
              <td>Navigation</td>

              <td>
                You can add a Key-Value pair to an action. To do so, perform the following steps:<br /><br />

                1. Select one of the following:<br />
                   • <b>Navigate to screen</b>: From the drop-down, select the screen to which the user should navigate.<br />
                   • <b>DeepLink</b>: Type or paste the URL to which the user should navigate.<br />
                   • <b>Rich landing</b>: Type or paste the Rich landing page to which the user should navigate.<br /><br />
                2. Click <b>+ New KV pair</b> (optional).<br /><br />
                3. In the <b>Key value pairs</b> field, enter the key and value.<br /><br />
                   For more information, refer to <a href="/user-guide/campaigns-and-channels/in-app-message/create/key-value-pairs-in-in-app-campaigns">Key-Value Pairs in In-App Campaigns</a>.
              </td>
            </tr>

            <tr>
              <td>Dismiss</td>
              <td>Dismiss the In-App message.</td>
            </tr>

            <tr>
              <td>Track Event</td>
              <td>Type or paste the name of the event to track.</td>
            </tr>

            <tr>
              <td>Share</td>
              <td>Type or paste the text to share with the user.</td>
            </tr>

            <tr>
              <td>Set User Attribute</td>

              <td>
                1. Select the user attribute from the drop-down list.<br />
                2. Type or paste the value for the user attribute.
              </td>
            </tr>

            <tr>
              <td>Copy Coupon Code</td>
              <td>Type or paste the coupon code to share with the user.</td>
            </tr>

            <tr>
              <td>Call</td>
              <td>Type or paste the phone number to which the user should call.</td>
            </tr>

            <tr>
              <td>SMS</td>
              <td>Type or paste the phone number and message to which the user should send the SMS.</td>
            </tr>

            <tr>
              <td>Custom Action</td>
              <td>Add key-value pairs for custom action.</td>
            </tr>

            <tr>
              <td>Navigate to notification settings</td>
              <td>Take users to the app <b>Settings</b> screen. This option is only available on iOS.<br /><br /><b>Note</b>: In-App campaigns using this action are displayed only to users who have not yet opted in for push notifications. Once a user enables push notifications, the campaign will not be shown again, even if the campaign is configured to display multiple times.</td>
            </tr>

            <tr>
              <td>Request Notification Permission</td>
              <td>Invoke system notification permission. This option is only available on iOS.</td>
            </tr>
          </tbody>
        </table>
      </td>
    </tr>

    <tr>
      <th colSpan="2">Width, Margin, and Padding</th>
    </tr>

    <tr>
      <td>Width</td>
      <td>Use the slider or type the value to define the width of the text box in percentage.</td>
    </tr>

    <tr>
      <td>Margin</td>
      <td>Select <b>Together</b> and use the slider or type the value to define all margins of the text box in pixels. <br /><br />OR<br /><br /> Select <b>Separate</b> and use the slider or type the value to define the top, bottom, right, and left margins of the text box in pixels.</td>
    </tr>

    <tr>
      <td>Padding</td>
      <td>Select <b>Together</b> and use the slider or type the value to define all padding for the text box in pixels. <br /><br />OR<br /><br /> Select <b>Separate</b> and use the slider or type the value to define the top, bottom, right, and left padding of the text box in pixels.</td>
    </tr>

    <tr>
      <td>Border</td>

      <td>
        Select the following:<br /><br />

        1. Use the slider to define the <b>Width</b> of the border in pixels.<br />
        2. Use the slider to define the <b>Radius</b> of the border in pixels.<br />
        3. Select or type the hexadecimal code of the <b>Border color</b>.
      </td>
    </tr>
  </tbody>
</table>

#### Image

Perform one of the following actions:

<table>
  <thead>
    <tr>
      <th>Field</th>
      <th>Description</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>Image URL</td>
      <td>Select the <b>Image URL</b> option and enter or paste the URL of the image.</td>
    </tr>

    <tr>
      <td>Upload image</td>

      <td>
        Select the <b>Upload image</b> option and drag and drop the image or click <b>upload from the computer</b> to upload the stored image.

        <br />

        <br />

        <b>Note:</b><br />
        • Ensure that the image size is less than 10MB.<br />
        • Ensure that the aspect ratio of the image is 2:1 (Width x Height).
      </td>
    </tr>

    <tr>
      <td>Action</td>

      <td>
        Select one of the following from the drop-down list:<br /><br />

        <table>
          <thead>
            <tr>
              <th>Field</th>
              <th>Description</th>
            </tr>
          </thead>

          <tbody>
            <tr>
              <td>None</td>
              <td>No action is performed.</td>
            </tr>

            <tr>
              <td>Navigation</td>

              <td>
                Do the following:<br /><br />

                1. Select one of the following:<br />
                   • <b>Navigate to screen</b>: From the drop-down, select the screen to which the user should navigate.<br />
                   • <b>DeepLink</b>: Type or paste the URL to which the user should navigate.<br />
                   • <b>Rich landing</b>: Type or paste the Rich landing page to which the user should navigate.<br /><br />
                2. Click <b>+ New KV pair</b> (optional).<br /><br />
                3. In the <b>Key value pairs</b> field, enter the key and value.
              </td>
            </tr>

            <tr>
              <td>Dismiss</td>
              <td>Dismiss the In-App message.</td>
            </tr>

            <tr>
              <td>Track Event</td>

              <td>
                1. Type or paste the name of the event.<br />
                2. Type or paste the value for the event.
              </td>
            </tr>

            <tr>
              <td>Share</td>
              <td>Type or paste the text to share with the user.</td>
            </tr>

            <tr>
              <td>Set user attribute</td>

              <td>
                1. Select the user attribute from the drop-down list.<br />
                2. Type or paste the value for the user attribute.
              </td>
            </tr>

            <tr>
              <td>Copy coupon code</td>
              <td>Type or paste the coupon code to share with the user.</td>
            </tr>

            <tr>
              <td>Call</td>
              <td>Type or paste the phone number to which the user should call.</td>
            </tr>

            <tr>
              <td>SMS</td>

              <td>
                1. Type or paste the phone number to which the In-App message is sent.<br />
                2. Type or paste the content of the SMS.
              </td>
            </tr>

            <tr>
              <td>Custom Action</td>

              <td>
                Select custom action and do the following:<br /><br />

                1. Click <b>+ New KV pair</b>.<br />
                2. In the <b>Key value pairs</b> field, enter the key and value.
              </td>
            </tr>

            <tr>
              <td>Navigate to notification settings</td>
              <td>Take users to the app <b>Settings</b> screen. This option is only available on iOS.<br /><br /><b>Note</b>: In-App campaigns using this action are displayed only to users who have not yet opted in for push notifications. Once a user enables push notifications, the campaign will not be shown again, even if the campaign is configured to display multiple times.</td>
            </tr>

            <tr>
              <td>Request Notification Permission</td>
              <td>Invoke system notification permission. This option is only available on iOS.</td>
            </tr>
          </tbody>
        </table>
      </td>
    </tr>
  </tbody>
</table>

#### Buttons

<table>
  <thead>
    <tr>
      <th>Field</th>
      <th>Description</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>Button text</td>
      <td>Type or paste the text used in the button.</td>
    </tr>

    <tr>
      <td>Font size</td>
      <td>Type or use the up and down arrows to select the font size used in the button.</td>
    </tr>

    <tr>
      <td>Font color</td>
      <td>Type the hexadecimal code or select the font color used in the button.</td>
    </tr>

    <tr>
      <td>Custom font</td>
      <td>Select a custom font and type the font name used in the button.</td>
    </tr>

    <tr>
      <td>Background color</td>
      <td>Select and define the background color of the button.</td>
    </tr>

    <tr>
      <td>Action</td>

      <td>
        Select one of the following from the drop-down list:<br /><br />

        <table>
          <thead>
            <tr>
              <th>Field</th>
              <th>Description</th>
            </tr>
          </thead>

          <tbody>
            <tr>
              <td>None</td>
              <td>No action is performed.</td>
            </tr>

            <tr>
              <td>Navigation</td>

              <td>
                Do the following:<br /><br />

                1. Select one of the following:<br />
                   • <b>Navigate to screen</b>: From the drop-down, select the screen to which the user should navigate.<br />
                   • <b>DeepLink</b>: Type or paste the URL to which the user should navigate.<br />
                   • <b>Rich landing</b>: Type or paste the Rich landing page to which the user should navigate.<br /><br />
                2. Click <b>+ New KV pair</b> (optional).<br /><br />
                3. In the <b>Key-value pairs</b> field, enter the key and value.
              </td>
            </tr>

            <tr>
              <td>Dismiss</td>
              <td>Dismiss the In-App message. This is the default action.</td>
            </tr>

            <tr>
              <td>Track event</td>

              <td>
                1. Type or paste the name of the event.<br />
                2. Type or paste the value for the event.
              </td>
            </tr>

            <tr>
              <td>Share</td>
              <td>Type or paste the text to share with the user.</td>
            </tr>

            <tr>
              <td>Set User attribute</td>

              <td>
                1. Select the user attribute from the drop-down list.<br />
                2. Type or paste the value for the user attribute.
              </td>
            </tr>

            <tr>
              <td>Copy Coupon Code</td>
              <td>Type or paste the coupon code to share with the user.</td>
            </tr>

            <tr>
              <td>Call</td>
              <td>Type or paste the phone number to which the user should call.</td>
            </tr>

            <tr>
              <td>SMS</td>
              <td>Type or paste the phone number and message to which the user should send the SMS.</td>
            </tr>

            <tr>
              <td>Custom Action</td>

              <td>
                Select custom action and do the following:<br /><br />

                1. Click <b>+ New KV pair</b>.<br />
                2. In the <b>Key value pairs</b> field, enter the key and value.
              </td>
            </tr>

            <tr>
              <td>Request Notification Permission</td>
              <td>Android - Invoke system notification permission. If the system notification permission has been requested multiple times, it takes the user to the application notification settings screen where the user can manage notification permission.<br /><br />iOS - Invoke system notification permission.</td>
            </tr>

            <tr>
              <td>Navigate to notification settings</td>
              <td>Take the user to the application notification settings screen where the user can manage notification permission. Android only.<br /><br /><b>Note</b>: In-App campaigns using this action are displayed only to users who have not yet opted in for push notifications. Once a user enables push notifications, the campaign will not be shown again, even if the campaign is configured to display multiple times.</td>
            </tr>

            <tr>
              <td>Navigate to Settings</td>
              <td>Take the user to the application settings screen where the user can manage notification permission. iOS Only.<br /><br /><b>Note</b>: In-App campaigns using this action are displayed only to users who have not yet opted in for push notifications. Once a user enables push notifications, the campaign will not be shown again, even if the campaign is configured to display multiple times.</td>
            </tr>

            <tr>
              <td>Notification Action</td>
              <td>Invoke system notification permission. This option is only available on iOS.</td>
            </tr>
          </tbody>
        </table>
      </td>
    </tr>

    <tr>
      <th colSpan="2">Width, Margin, and Padding</th>
    </tr>

    <tr>
      <td>Width</td>
      <td>Use the slider or type the value to define the width of the text box in percentage.</td>
    </tr>

    <tr>
      <td>Margin</td>
      <td>Select <b>Together</b> and use the slider or type the value to define all margins of the text box in pixels. <br /><br />OR<br /><br /> Select <b>Separate</b> and use the slider or type the value to define the top, bottom, right, and left margins of the text box in pixels.</td>
    </tr>

    <tr>
      <td>Padding</td>
      <td>Select <b>Together</b> and use the slider or type the value to define all padding for the text box in pixels. <br /><br />OR<br /><br /> Select <b>Separate</b> and use the slider or type the value to define the top, bottom, right, and left padding of the text box in pixels.</td>
    </tr>

    <tr>
      <td>Border</td>

      <td>
        Select the following:<br /><br />

        1. Use the slider to define the <b>Width</b> of the border in pixels.<br />
        2. Use the slider to define the <b>Radius</b> of the border in pixels.<br />
        3. Select or type the hexadecimal code of the <b>Border color</b>.
      </td>
    </tr>
  </tbody>
</table>

### Personalize Content

Personalize the content of your In-App campaign by using the '@' symbol to insert user attributes, user events, product sets, content APIs, and content blocks. This enables dynamic and relevant messages for each user.

For more information, refer to:

* [MoEngage Templating Language (JINJA)](/user-guide/campaigns-and-channels/getting-started/message-personalization/jinja-templating-language)
* [Derived Events & Attributes](/user-guide/data/event-data/derived-events-and-attributes)
* [Content APIs](/user-guide/campaigns-and-channels/getting-started/campaign-content/content-apis)
* [Content Block](/user-guide/content/content-blocks/content-blocks)
* [Auxiliary Data](/user-guide/data/imports/file-based-imports/auxiliary-data)

Do the following:

1. In step 2 of campaign creation, click the text box or the image property URL.
2. Type **@** to personalize the content.
3. Click either **Data personalization** or **Content Block**.
4. Click the **Data personalization** tab and from the drop-down, select one of the following:
   1. **User Attributes**
   2. Select one of the following as fallback options if personalization does not work:
      * **No Fallback**: No alternate content is provided if personalization fails.
      * **Do not send In-App**: The In-App message is not sent if personalization fails.
      * **Replace Text**: Type or paste the text to use if personalization fails.
   3. **Product Sets**
   4. **Content API**: Modify the values of the Content API parameters.
5. Click **Content Block**:
   1. Select the content block to insert.
   2. Click **Insert only the content of the content block**.
6. Click **Done**.

<Accordion title="Test Campaign (optional)">
  Test campaigns enable you to preview the campaign on a test device to ensure your notification displays as desired.

  Test the campaign you created by selecting any of the following options and providing the value for the attribute chosen for your test user:

  * Unique ID
  * Email ID
  * Mobile Number (Registered With MoEngage)
  * Google Advertising Identifier
  * iOS Identifier For Advertising
  * Device Push Token
  * Custom Segment

      <img src="https://mintcdn.com/moengage/vl5cQuPaKeqblz8O/images/moengage_8cab81.png?fit=max&auto=format&n=vl5cQuPaKeqblz8O&q=85&s=689ef72473ab6f11148efb7f7fdaaa1a" alt="7.png" width="1424" height="290" data-path="images/moengage_8cab81.png" />

  For more information about testing campaigns, refer to [Testing In-App Campaign](/user-guide/campaigns-and-channels/in-app-message/create/preview-in-app-template-in-your-phone).
</Accordion>

## Step 3: Schedule and Goals

This section includes:

* [Delivery Schedule](#delivery-scheduling): Choose when to deliver the campaign to your users and how often.
* [Conversion goals](#conversion-goals): Select the conversion goals and revenue metrics to track for the campaign.
* [Delivery controls](#delivery-controls): Choose advanced delivery options such as throttling, frequency capping, and expiration settings.

### Delivery Scheduling

The following delivery schedule options are available for In-App Campaigns:

<Tabs>
  <Tab title="One Time">
    Select this option to send the campaign immediately or at a specified time to target users.

    | Field                         | Action                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
    | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | **As soon as possible**       | Sends the campaign immediately to target users. You can select:<br />• **Campaign time zone** - the timezone in which the campaign should send.<br />• **Ends**: the date on which the campaign should end. The following options are available:<br />  • **Never**: The campaign runs daily.<br />  • **On**: The campaign ends on the end date and end time you specify.                                                                                                                                                                                                                                                                                                      |
    | **At specific date and time** | Send the campaign at the specified time, time zone, or predicted time.  This section helps you send the campaign on a specific date and time and contains the following fields:<br />• **Campaign time zone** - the timezone in which the campaign should send.<br />• **Start date** - the date on which the campaign should send.<br />• **Send time** - the time at which the campaign should send. Select AM or PM depending on the time of day.<br />• **Ends**: the date on which the campaign should end. The following options are available:<br />  • **Never**: The campaign runs daily.<br />  • **On**: The campaign ends on the end date and end time you specify. |

    <img src="https://mintcdn.com/moengage/VqQHPleQ9qk_ZsLR/images/moengage_520e4c.png?s=21aa10f0914b69675ae45bcce17c8f3a" alt="In-App-DeliverySchedule_oneTime.gif" width="1440" height="720" data-path="images/moengage_520e4c.png" />
  </Tab>

  <Tab title="Periodic">
    Select this option to send the campaign periodically on a specified date and time. The following fields are available in this section:

    * **Campaign time zone**: The timezone in which the campaign should send.
    * **Start date**: The date on which the campaign should send.
    * **Periodic**: The periodicity of the campaign. You can choose from the following options on the left of the screen:
      | Periodicity | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
      | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
      | Daily       | **Repeat every**: This option enables you to specify the number of days after which the campaign should repeat.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
      | Weekly      | **Repeat every**: This option enables you to specify the number of weeks for which the campaign should repeat.<br /><br />**Repeat on**: This option enables you to specify the day(s) of the week on which the campaign should send (For example, select Monday, Wednesday, and Friday to send the campaign every Monday, Wednesday, and Friday).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
      | Monthly     | **Repeat every**: This option enables you to specify the number of months for which the campaign should repeat.<br /><br />**Repeat on**: This option enables you to do the following:<br />• **Days of month**: Choose this option for repeating date-specific campaigns. Select the date(s) of the month the campaign should send (For example, to send the campaign on the 5th and the 25th of a month, select the 5th and 25th in the calendar widget.). **Note**: If the selected date(s) do not exist in the specified month (if it is a shorter month), a campaign sends on the last day of the month (For example, if the 30th and 31st are selected and the month is February, one campaign sends on the 28th).<br />• **Days of week**: Choose this option to specify the day(s) of the week on which the campaign should send (For example, if you want to send the campaign every Monday, Wednesday, and Friday, select these days in this option). **Note**: If a day of the week does not exist in a month (for example, the fifth Saturday), the campaign is skipped for that instance. If overlap occurs (for example, 4th Monday and last Monday), only one instance is sent. |
    * **Ends**: The date on which the campaign should end. The following options are available:
      * **Never**: The campaign runs daily.
      * **On**: The campaign ends on the end date and end time you specify.
    * **Campaign active window**: The time duration for which the campaign will be active for the set periodicity. For example, if the campaign displays to the user daily, the campaign active window setting determines the time interval during the day the campaign will be active. If this interval is set between 6 PM and 8 PM for a campaign with daily periodicity, the campaign will display every day to users from 6 PM to 8 PM. If the campaign is active twice a week, the campaign active window setting determines the time duration when the campaign will display to the user during the days on which the campaign would be active. The following fields are available to set the campaign active window:
      * **Start time**: The time at which the campaign triggers for the user.
      * **End time**: The time after which the campaign no longer displays to the user, regardless of whether the campaign is set to be active on the specified day.

            <img src="https://mintcdn.com/moengage/cVruC-B7I1TnIZ0h/images/moengage_db6789.png?s=406a89a817e4dc334097702bdfb6a3c4" alt="In-App_DeliverySchedule_Periodic.gif" width="1440" height="720" data-path="images/moengage_db6789.png" />
  </Tab>
</Tabs>

### Conversion Goals

You can add conversion goals to track business metrics for your campaigns, with a maximum of five goals. Choose any app event as a conversion goal activity. The first goal is treated as a primary goal.

For example, if you want to track the number of customers who purchased an iPhone after your campaign was sent (Event: Purchase event, Product: iPhone), your conversion goal setup might resemble the following image:

<img src="https://mintcdn.com/moengage/-6I69HDJzlzOqYai/images/moengage_9b7d41.png?fit=max&auto=format&n=-6I69HDJzlzOqYai&q=85&s=4ee258b230234d852fcd9635a63aa822" alt="ConVErsionGoals.png" width="664" height="233" data-path="images/moengage_9b7d41.png" />

With multiple conversion goals, you can track more than one business metric or visualize a funnel for your user actions. For example, use multiple conversion goals to check:

* How many users viewed the product page?
* How many added that product to the cart?
* How many made a successful order?

<Accordion title="Tracking Revenue Performance (Optional)">
  |                                                                                                                                                                                                                                                                                                                                                                                                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
  | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | With MoEngage, you can track the revenue generated by your campaigns. For example, track the revenue generated by your product after sending a communication. To track revenue performance, enable the **Revenue performance** toggle for the conversion goal for which you want to track the revenue.  In the example here, to track revenue for *orderSuccessful* events, enable the **Revenue performance** toggle. | <img alt="TrackingRevenuePerformance.png" src="https://mintcdn.com/moengage/fQ0QnP2abFkVAzJ2/images/moengage_4db5fe.png?fit=max&auto=format&n=fQ0QnP2abFkVAzJ2&q=85&s=94deafa13281a1862b631d715e5ef176" width="382" height="201" data-path="images/moengage_4db5fe.png" /> |

  |                                                                                                                                                                                                                                          |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
  | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | After choosing the goal, select the numeric attribute that captures the order's total monetary value. In this example, *cartValue* contains the total order value. You can choose the currency in which your monetary value is reported. | <img alt="RevenuePerformance.png" src="https://mintcdn.com/moengage/t9d2bz7zij1iE1iP/images/moengage_9db6b5.png?fit=max&auto=format&n=t9d2bz7zij1iE1iP&q=85&s=ae4380fdab58d2123a046106b2fdadf2" width="369" height="87" data-path="images/moengage_9db6b5.png" /> |

  |                                                                                                                                                                                                                                                                                                                                                                                         |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
  | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | **Set Attribution window**: Set an attribution window (a time period or window calculated from when the user receives/clicks the campaign, for which you want to attribute conversion goals to a specific campaign). By default, it is set for 36 hours, while the maximum attribution window can be set up to 10 days. In the example below, the attribution window is set to 5 hours. | <img alt="Attribution Window.png" src="https://mintcdn.com/moengage/eF2J43N9Ckga5Apm/images/moengage_2ce3bf.png?fit=max&auto=format&n=eF2J43N9Ckga5Apm&q=85&s=1e9e872f5d4002469abdd034600d4bcf" width="891" height="125" data-path="images/moengage_2ce3bf.png" /> |

  ### Campaign Priority

  Set a priority for your In-App campaign as **Critical**, **High**, **Medium**, **Normal**, or **Low**.

  <img src="https://mintcdn.com/moengage/geRh9DNA2GhPhrjA/images/moengage_f3cba0.png?fit=max&auto=format&n=geRh9DNA2GhPhrjA&q=85&s=00f3f07ad6863503c538000519d61b99" alt="CampaignPriority.png" width="595" height="168" data-path="images/moengage_f3cba0.png" />

  ### Delivery Controls

  You can select the following options for your In-App Campaign:

  * **Limit the maximum number of times a user can see messages from this campaign to**: Control campaign frequency by entering how many times to display the message. **Note**: Frequency capping works at the device level, not the user level. This means if your user logs on to two devices at once, they receive the campaign on both devices even if the frequency setting is set to 1.
  * **Add a minimum delay between two messages of this campaign**: Add a minimum delay between two messages to control the frequency and timing of displaying In-App messages to the user. This setting is disabled for Nudge Templates.
  * **Ignore frequency capping**: Enable this toggle to ignore the frequency capping limit for this In-App campaign. For more information, refer to [Frequency Capping](/user-guide/settings/channels/delivery-controls/frequency-capping). **Note**: Support for frequency capping is available from In-App Android SDK version 9.8.0 and In-App iOS SDK version 7.04.0.
  * **Count for frequency capping**: Enable this toggle if you want the In-App message to be included in the overall frequency capping, allowing you to monitor the total number of messages delivered to the user. <img src="https://mintcdn.com/moengage/iCae3l_a7eOJMTbz/images/moengage_1e5562.png?fit=max&auto=format&n=iCae3l_a7eOJMTbz&q=85&s=83edb9fd0be3c24785f3aeefd25783b0" alt="Screenshot 2025-10-22 at 12.17.37 PM.png" width="3148" height="186" data-path="images/moengage_1e5562.png" />
  * **Ignore global minimum delay**: Enable or disable global minimum delay settings for this particular campaign.
  * **Auto Dismiss message after**: This option dismisses the In-App message after a specified duration (in seconds). After the specified time, the In-App message is dismissed even if the user does not perform any action on it.

      <img src="https://mintcdn.com/moengage/2kQqTYC5RUPSd8kI/images/moengage_3f19a3.png?fit=max&auto=format&n=2kQqTYC5RUPSd8kI&q=85&s=914cd8013d476f5068217ad335209f66" alt="DeliveryControls.png" width="1302" height="463" data-path="images/moengage_3f19a3.png" />
</Accordion>

<Accordion title="Delay Between Two Campaigns">
  If you have multiple In-App campaigns, you can stagger them by setting a minimum delay between messages from different campaigns. Go to **Settings** > **Channels** > **Delivery controls**.

  **Note**: This minimum delay applies to messages from different campaigns and the same campaign.

  Here you can set the minimum delay (in minutes) between two In-App messages from different campaigns. With this setting, if your user sees a message from Campaign 1 at time T and another message is sent before T+15, it does not display.

  <img src="https://mintcdn.com/moengage/xjBZUVmmH3jDrySH/images/moengage_c4e044.png?fit=max&auto=format&n=xjBZUVmmH3jDrySH&q=85&s=193b040a918cc21b3f3c70d544131ea0" alt="Screenshot 2025-08-05 at 12.13.34 PM.png" width="1132" height="286" data-path="images/moengage_c4e044.png" />
</Accordion>

Your campaign is now ready to send. Click **Publish** and confirm in the dialog box that opens to create the campaign. After successful creation, the Campaign Info page displays.

<Info>
  In-App campaigns support the Campaign Approval Workflow (CAF). If CAF is enabled, the campaign must be reviewed and approved for publishing. For more information, refer to [CAF](/user-guide/settings/account/team-management/campaign-approval-workflow). To enable CAF, contact your Customer Success Manager.
</Info>
