This article describes the anatomy of how a mobile In-App campaign and an On-Site Messaging (OSM) campaign are delivered to your user. Each section below describes the dependencies and configurations that affect the delivery of these messages.
The following common modules across Mobile In-App and OSM campaigns are important for the campaign delivery and rendering on the end user's device.
SDK Sync
The active mobile In-App and OSM campaigns are delivered to the SDK for rendering when the user opens the app. This sync is tried only once every 15 minutes as long as the app is in the foreground. After a campaign is delivered to the SDK, it will be shown as soon as the trigger action is performed by the user provided the other campaign conditions such as display controls and delivery controls are fulfilled.
Segmentation
While creating a mobile In-App campaign or an OSM campaign, you can choose to target all users or specify filters to select the audience you want to target.
- When you select All users:
These campaigns will be delivered to all users, even the ones who are opening your app for the first time. - When you select an option under Filter users by:
When the campaign starts at the scheduled time, the filter conditions are evaluated and the users who satisfy the filter conditions are evaluated by running the segmentation query. This list of users is maintained on the MoEngage side and when one of the users opens the app/website, the campaign is delivered to the SDK.
info |
Note for Segmented Campaigns
|
Trigger Action
The Trigger Action is used to fetch the campaign payload including the template, personalized properties of the template and render the In-App or OSM on the app/website.
Trigger Actions for Mobile In-App Campaigns
The user can select one of the following trigger actions for creating Mobile In-App campaigns.
- On app open: These campaigns are triggered immediately when the app or any screen is launched by the user.
- On specific screen: Send the In-App message when the user navigates to the specified screen.
- On custom event: These campaigns are triggered immediately when the custom event is tracked on the SDK. Please note that only the events which are tracked from the respective Android or iOS SDK can be used as trigger actions for the Mobile In-App campaigns.
Trigger Actions for OSM Campaigns
The user can select one of the following trigger actions for creating OSM campaigns:
- On Page Load: These campaigns are triggered immediately on Page Load unless a value is provided for After Delay or After Scroll in which case the campaigns are triggered after the conditions are met.
- On custom event: These campaigns are triggered immediately when the custom event is tracked on the SDK. Please note that only the events which are tracked on the web SDK can be used as trigger actions for OSM campaigns.
- On Exit Intent: These campaigns are triggered when the user is about the leave the website. For more information on exit intent, please refer to this article.
info |
Note for Trigger Actions
|
Campaign Priority
When there are multiple campaigns that have the same trigger action, in this case, we will make use of the Campaign Priority. Only the campaign with the highest priority will be displayed each time the trigger action is executed.
In case two campaigns have the same trigger action and the same priority, the campaign which was recently created will be shown.
Delivery Controls
Delivery Controls are used to control your In-App and OSM from appearing too frequently on your app and website. We have the following delivery controls:
- Maximum times to show message ever: This will restrict your campaign to be shown for a maximum number of times as defined during campaign creation.
- Minimum delay between 2 messages on this campaign: This will prevent your campaign from being shown frequently if the user executes the trigger action multiple times within a short time window.
- Ignore Global Delay between 2 On-site Messaging campaigns: Global Delay will prevent your user from seeing too many In-App/OSM campaigns within a specific time window. Check this to not consider global delay for this specific campaign.
- Auto dismiss message after: This will dismiss the in-app messages after the defined auto-dismiss time so that it does not bother the user.
info |
Note for Delivery Controls
|
Campaign Scheduling and First-Time Sync
Once started, for the campaign to start getting displayed, following are the dependencies:
- Once the campaign starts, the segment gets evaluated. Depending on the customer and the customer data we are scanning for the query, it may take around 15 minutes on average for the segmentation query to return a list of user ids for whom the campaign can be delivered.
- After Segmentation, the campaign will only be delivered to the SDK when the user opens the app/website. Please also note that the SDK sync happens only once in 15 minutes and hence it may take more time for the campaign to be delivered to the SDK if the previous sync happened within the last 15 minutes.
Personalization
- A campaign is personalized when the user executes the trigger action and a campaign is selected for rendering by the SDK. Once done, the SDK will fetch the campaign template from MoEngage. During this activity, we will send a personalized template to the SDK.
- In case of personalization failure, the campaign will not be rendered if no fallback is provided in the campaign. Any other campaign will not be attempted thereafter in case of personalization failure hence it is always a best practice to add fallbacks for personalized In-App/OSM messaging campaigns.
Connectivity
- Internet Connectivity plays a crucial role in mobile In-App and OSM campaign rendering. Poor internet connectivity may delay the campaign rendering by delaying the template fetch from MoEngage, image download delays, or failures.
- If the image download fails, the mobile in-app campaign will not be rendered at all on the mobile app.
Data Flow Diagram of how In-App and OSM Campaigns Work
SDK Integration for Mobile In-App Campaigns
To be able to show Mobile In-App Campaigns on your mobile apps, please ensure that you have followed the integration steps mentioned in our Integration docs for Android and iOS.
Please note that to be able to show the Nudge Templates on your app, you need to follow the integration steps mentioned here - Android, and iOS.
Also, if you plan to use Self-Handled In-App messages, refer to the integration docs for Android and iOS.
SDK Version Dependency for Mobile In-App Campaigns
Below are some of the features that are only supported for specific SDK Versions
Mobile In-App Feature | Supported on Android SDK Version greater than | Supported on iOS SDK Version greater than |
---|---|---|
Ignore Global Delay | 10000 | 6.0.0 |
Allowing users to give a half-star rating | 10000 | 6.0.0 |
More than 5 stars in the rating template | 10000 | 6.0.0 |
Action -> SMS | 10000 | 6.0.0 |
Action -> Custom Action | 10000 | 6.0.0 |
Action -> Track Event with Event Attribute | 10000 | 6.0.0 |
Please note that there is no SDK Integration required for OSM and there are no SDK Version dependent features for OSM either.