Create In-App Campaign

In-App NATIV Campaigns target your users by showing a message while the user is using your app. They are very effective in providing contextual information and help to cross-sell/up-sell on desired screens of your app or/and on desired actions performed by the user in your app. You can embed coupon codes and images in these messages or deep-link the message to take the user to a deep-linked screen or URL.

Currently, MoEngage enables you to create two kinds of In-App NATIV campaigns -

1. General In-App Campaign - Targeted to a particular user segment based on user attributes/events

2. Smart Trigger In-App Campaign - Targeted to a user segment based on user attributes and triggered on user events ex. when a user with a particular attribute views a product, a targeted In-App message will be triggered.

In this article, we describe the steps in creating a general In-App campaign. 

In-App NATIV Campaign

Navigate to MoEngage Dashboard->Campaigns->Create Campaign->In-App NATIV Campaign and click on Create button.


Step 1: Segmentation

Name the Campaign

Select a name that helps you identify the campaign while managing the campaigns later. Campaign name must have a minimum of 5 characters.


Select the target platforms

 When a platform is selected it also shows the number of templates currently supported by the selected platforms.


In-App NATIV compatible SDK versions

iOS Greater than 2.x
Android Greater than 6.x

After upgrading to these versions, new templates will be inherently supported by all SDKs. Legacy templates are still supported.

Target Audience:


Target Audience or the target segment for the campaign can be selected in three ways:

1. All Users: This selection will send the In-App to all the users of the app. The count of All users will be shown when this option is selected.

2. Custom Segment: You can target any of the custom segments saved during segmentation by selecting this option. It gives you the option to search the custom segments by name. Learn more about custom segments here.


Select Trigger Action:


Selecting a Trigger Action is only applicable if you choose to create a Smart Trigger In-App NATIV Campaign. Such campaigns are triggered as soon as the selected user action is performed by the user on the app. It is important to note that the trigger action for such campaigns has to be tracked from the Mobile App so that appropriate campaigns can be shown immediately. This will not work for events tracked via Server to Server API calls.

The Trigger for the campaign can be set by selecting user/derived event in the "if" condition and entering the event attributes. You can enter additional event attributes as well


Step 2: Create View

Select Template


Templates that are marked as "Legacy Support" are the templates that will be served to apps having older SDKs as well.

There is absolutely no way in to serve new templates to SDKs prior to ones mentioned in the above table. Here on we will release new templates every month which will be supported by all In-App NATIV compatible SDKs.

Customizing Templates

  1. Click to change the template at any point in time
  2. Click on the platform tabs to preview in respective platforms
  3. Toggle to enable platform specific customization. Once you enable this, each platform has to be customized separately
  4. Click to reset everything
  5. Click this button to show options to customize the container. Container is the base of the In-App message
  6. Click on individual widgets to customize them

Customize Message Container

7. Entry and exit animations for the entire In-App message
8. Upload a background image for the container
9. Set the background color for the container
10. Border radius of the container. The value will be in pixels. Set it to 0 in case you want to remove it
11. Border color of the container. Remove it if you want to remove the border property
12. Border width is equivalent to the border weight.
13. Margin Left for the container.
14. Margin Right for the container.

Changing the values of 13 & 14 will change the position of the inapp. Manipulate this only if you want to move the complete inapp in either direction (left or right)

InApps can be visualized as vertical stacks of view which are centrally aligned.

What is a Primary Widget?

Any widget can be set to be a primary widget. It is mandatory to select a primary widget. This is used to identify whether the purpose of the In-App has been satisfied or not. Once it is satisfied, the In-App will not be shown again if "persistence" is set to false. Persistence is discussed in step 4.

Can the "Close Button" be removed or realigned?

Clicking on the "close button" in the preview allows you to customize the button. Unchecking "Show Close Button" will remove the close button completely. Close button image can be changed by changing the source image. Changing the float option from right to left will position the button to be on the left side of the In-App message rather than the right.


Customizing Image Widgets

Image Content can be changed by uploading an image or providing an image URL. It is advised to upload an image to leverage our CDNs for faster delivery. Also, the image size should always be kept in mind, in order to download image over slower network connections. In-App images are auto scaled with respect to aspect to fit according to the device dimensions.



Customizing Text Widgets

Text content can be changed. Keep the text crisp and direct. Font customizations are available with certain limitations. The text background color and text color can also be changed.


You can also personalize the text widgets with available user attributes. Use to get the personalization drop-down listing your saved user attributes.

Note: Do not forget to set the Fallback text for your personalized messages.

For every widget, layout and action can be specified. The width of the widget is calculated in percentages with respect to the viewable screen dimensions whereas the height is calculated in pixels.


Margin and padding can be changed for every widget. Selecting "Together" changes left, top, right and bottom values together. Opting for "Separate" will allow changing each dimension separately.

Setting action to widgets

Every widget is clickable and can be backed by an action.

Multiple actions can be added to a single widget as well. It is implicit that two navigations cannot happen at the same time, but a track event and a navigation can happen at the same time. 

The biggest advantage of In-App NATIV is the support of NATIV actions. NATIV actions are actions which can be specific to each app like for a music app it might be play or download song whereas for an e-commerce app it might be adding a product to a wishlist. This feature will be shortly provided with the release of NATIV actions.

As of now the actions supported also include, tracking events or attributes, copy coupon code, navigation (screen name or deep link), share intents, permission settings for iOS, etc.

You can additionally personalize the actions like Share & Copy Coupon Code. Using @ will allow you to choose from the multitude of saved attributes.

For our rating template, we have additionally rolled out Conditional Based actions . It allows you to take different actions basis end-user rating via Rating In -app. Read more here.

Step 3: Platform-specific configuration

Both Android and iOS support showing In-Apps on specific screens. This is where the configuration has to be provided. This is optional. If left blank the In-App message will not be tied up to a specific screen.

"Cancellable" is an Android only feature which ignores the "Back" press. If set to false, In-App messages will not be dismissed even if the back button is pressed. This is useful for "Force Update" scenarios.


Testing In-App Campaign

You can now review how your In-App looks on your device by using our Test In-App feature. For this, you need the capability to send push notifications to your application and a compatible SDK Version. The test feature is supported only for Android (starting from MoEngage SDK version 7.1.00) and iOS (starting from MoEngage SDK version 2.3.2).


After you click on Test campaign, a push notification will be delivered to your device. Click on push notification and your In-App Message will be displayed in a matter of seconds. Sample snapshots below:


 Once you finalize your campaign, click on Create Campaign button, confirm in the dialog box and your campaign is created. Upon successful campaign creation, you will be taken to the campaign info page where you can view the campaign performance stats such as impressions, clicks, conversions and other details mentioned in this article

Step 4: Scheduling & Goals

Select a scheduling frequency, expiry, and conversion goal for the campaign  

While creating In-Apps, you can choose to start them as soon as possible or schedule them at a later date.


In-App campaigns must have an expiry date, time and time-zone to stop showing the In-App message. The default expiry date is 24 hours after the campaign start time in the same timezone.

After deciding on the scheduling, you can set the campaign conversion goal to understand the conversion activity tracked from running the campaign. Through this, you can tie the success of the campaign to conversion activities such as Item Purchased. You can also associate an attribute such as "Revenue" with the conversion goal 


Campaign Priority

Set a priority for your In-App campaign.



Delivery Controls

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

  • Select Auto dismiss after time in seconds, In-App will be dismissed even though the user does not perform any action on it.
    However, the frequency of a campaign can be controlled by entering the number of times to show the message and the minimum time delay between two messages.
  • As the name suggests, "Auto Dismiss" dismisses the In-App after the specified duration.

    What is a Persistent In-App?

    As the name suggests Persistent In-Apps are shown even after the primary call to action is satisfied. In every case, In-Apps will honor the other delivery criteria like the minimum delay between In-App and minimum delay between the same In-App. 


Your campaign is now ready to be sent.

Delay between two campaigns

If you have more than one In-App campaigns created, you can also stagger them by setting minimum delay between two messages from different campaigns. To do that, go to Settings->In App NATIV

Here you can set the minimum delay between two In App messages from different campaigns. The delay is in minutes. With this setting, if your user sees Message from Campaign 1 at time T, and if another message is served at time before T+15, it won't be shown.


*Please note that Delay between InApps is not applicable for Smart Trigger In-App Campaigns. More information on Smart Trigger In-App Campaigns is available below.


Next, you can understand how to manage (view, edit and duplicate) campaigns

Was this article helpful?
2 out of 2 found this helpful