In-App message


To engage your active users for better conversion ratio, In-App message is a good channel to connect with such active users and show them specific and relevant content via In-App messages.



In order to create In-app message campaigns, you should have the Smartech SDK integrated in your apps.

Please follow this link for integration details of Smartech SDKs.

If it is already integrated, let's get started.

  • Login to your CEE panel and go to "Engage -> On-site - > In-app message".
  • Here, you will see list of campaigns created for in-app messages.
  • You can then click on "Create" button (top right) to create a new In-App message.


In Setup section, you can add following details:

  • Campaign Name - Give a suitable name for the campaign
  • App Selection - You can select from the list of apps added in the asset section.
  • Tags - You can add tags to your campaigns which can help you to group or uniquely identify campaigns.

You can set conversion goals here : Setting clear and measurable conversion goals helps businesses track their success in terms of generating revenue or increasing engagement and tracking if the user is doing the desired actions.

  • Activity - select an activity which you consider as conversion for this campaign. E.g. Purchase
  • Payload parameters - You can also specify certain criteria for payload of the conversion activity. E.g.
    Purchase activity where product price is greater than 10,000. Upto 5 parameters can be added.
  • Control group - You can specify control group percentage here to see the uplift your campaign is going to give as compared to the control group. The selected percent of users will not receive the in-app message but we will track the conversion for them as well.

Click on 'Save & next' button to go to Audience section.


In this step, you need to specify the trigger conditions and audience criteria for your campaign.

When To Target
The events selected in this section act as triggers for showing the in-app message to the app users. You can add up to 5 such trigger events here.
In such a scenario, the in-app message is shown when a user does any of the defined events.
Here's how you can set trigger event -

  • Activity - You can select the event from the dropdown. E.g. Add to wishlist, App Launch, etc.
  • Specify parameters - You can also further provide payload parameter criteria such as where product_price is less than 10,000.
  • You can add more than one trigger event if you want to show the exact same in-app message in the different sections of your app.


Minimum SDK version requirements

  • For using multiple trigger events in your campaign, ensure that you are using Smartech Android SDK v3.1.23 and Smartech iOS SDK v3.1.10 onwards.
  • For SDK version older than above mentioned versions, only the first event added will be used as trigger event.

Whom To Target
Here, you can also specify certain conditions to define the base audience who should see the in-app message after the trigger event is performed.

  • User segment or List - In this section, you can select up to 5 user segments or lists. Use this option when you want to show the in-app message based on historical behavior which is captured by server-side user segments.

  • User activities - (real-time client-side segments). Use this option to set event-based criteria which essentially is client-side segment
    -Choose an event, select whether user should perform the activity as Yes or No
    -In case of event performed: Yes, you can add further event conditions. Up to Max 5 conditions.
    -In case of event performed: No, you can specify the wait time period.
    -You can also choose whether all conditions should work as AND or OR conditions. Please note Activity
    performed: NO is available only for AND conditions.
    -You can also specify event payload parameter criteria as well in terms of payload, operator and values



  1. Please note that ability to select List or Segment is available for clients who are on vertica
  2. Ability to select List & Segment and Multi event based conditions will be available for users who are on following SDK versions: Android SDK v2.2.19 and iOS SDK v2.5.5
  3. Please note that for using these targeting options for android, it is necessary that you migrate to AndroidX library if you haven't already.


In this step, you will specify the content for the in-app message.

First, you need to choose the template layout from following options:
- Sticky header
- Sticky footer
- Half interstitial
- Interstitial
- Full screen cover

You can also personalize the in-app messages activity payload parameters so that a personalized experience can be given to your customers. For more details, click here :

TypeFeatureSticky header/sticky footerHalf interstitial/interstitialFull screen cover
ManualCharacter limitMessage: 80 charactersTitle: 35 characters
Message: 150 characters
Message: 80 characters
ManualAction buttonup to 2 buttons, 15 characters1 button, 15 characterup to 2 buttons, 15 characters
ManualBackground color or background imageYesYesYes
Image onlyImage
Format: .jpeg, .jpg, .png
or add a url link
Size: 100 KB
Resolution: 2:1 ratio
Half interstitial
Size: 100 KB
Resolution: 1:1 ratio

Size: 500 KB
Resolution: 1:2 ratio
Size: 500 KB
Resolution: 1:2 ratio
Image onlyAction buttonNANANA
Image onlyPersonalisationYesYesYes

Note: Image size restrictions are recommended for optimal user experience and applicable for images uploaded on the panel. If you wish to large size images, you can use a self hosted image url feature

In all of the templates > Image only option - you can add 1 call to action button.


CTA (call-to-action)

You can select from seven different call-to-actions as follow

  1. Redirect to deep link
  2. Patch a call
  3. Redirect to a website
  4. Send email
  5. Send SMS
  6. Even share the content through Whatsapp
  7. Close the In-App message.

Custom HTML
Here, you can add custom html + JS to create your own content. You can use this option if you wish to get complete control of how in-app message should look like.

In this option, you have two options to add custom html content:

  • Direct URL - You can specify the valid url where you custom html is hosted.
  • Inline html - You can continue further in 2 ways:

1. Create Custom Template - here you can copy and paste the content directly in the content box provided.



Please note that Direct URL under Custom html option will work on following SDK versions onward: iOS SDK version 2.4.3, Android SDK version 2.0.11 and 2.2.12 (Android X compatible)

However, please ensure that you confirm to the custom html guidelines given in the next section in order to ensure the experience is smoother and in-app message is shown to the user correctly.

2. Choose from the templates offered - Once you choose any template, you can make changes to its HTML in the "Pseudo Editor" and save it for future use.

Guidelines for using custom HTML in In-app messages


Pro Tip: Add gamification experience to your app

Use custom html feature for in-app messaging use cases around gamification like timer, wheel of fortune, scratch code, self-hosted/3rd party feedback surveys, customized multi-page in-app message.

The HTML file must contain JavaScript to use your custom HTML creative.

JavascriptUse add interaction to your HTML creative and the Smartech SDK (in-app click and in-app close). script is required for any personalisation of the HTML creative. is needed to support the smartech-app.js
<script src="" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<script src=""></script>
<script src=""></script>

Adding Interaction To HTML

  • Using Predefined Classes
    You can assign click events to your button by assigning predefined classes, which are as follows.
Class nameFunctionality
.smt-clickAssigning this class will enable the click event for the button, and the Smartech SDK will share the click to the App and capture the In-App Message Click Event.
.smt-closeAssigning this class will enable the click event for the button, which will close the In-App Message; adding the Smartech SDK will capture the In-App Message Close Event.

Assign a click event to a button.

<button class="smt-click">Click Me</button>

Assign a close event to a button which will close the in-app message.

<button class="smt-close">Close</button>
  • Using JavaScript Methods
    There will be specific scenarios where you might want to interact with HTML programmatically.
Class nameFunctionality
smartechTrackInAppMessage()This method triggers a click interaction, and the Smartech SDK will share the click to the app level and capture the In-App Message Click Event.
smartechCloseInAppMessage()Calling this method to trigger a close interaction which will close the In-App Message, the Smartech SDK will capture the In-App Message Close Event.

Passing Data From In-App Message To The App

  • Using Attribute Data
    To pass any value back to the App, one can use the custom attribute to give the data back to the App.
Class nameFunctionality
smt-clickTo pass the deep link value back to your App.
smt-dataTo pass additional key-values pair back to your App.
<button smt-click="" smt-data='{"name": "Netcore"}' class="button smt-click">Open Url</button>

Here when you tap the button, the deep link value will be, and the additional key-value pair passed will be {"name" : "Netcore"}

Some reference smt-clicks

Send an SMS to a number.<button smt-click="sms:9860130363&body=Hello" class="button smt-click">Send SMS</button>
Call a number.<button smt-click="tel:9860130363" class="button smt-click">Call a number </button>
Send a Message via Whatsapp.<button smt-click="whatsapp://send?text=hello everyone"class="button smt-click">Whatsapp message</button>
Send an email.<button smt-click="mailto:[email protected]?subject=Hello&body=This is Email" class="button smt-click">Email</button>
  • Using JavaScript Method
    You can call the smartechTrackInAppMessage() method will have two parameters: deep link value and custom key-value pair.
function openDeeplinkWithCustomDataLocalFunction(){
		var deeplinkValue = "smartech://image";
		var person = {
		  firstName : "John",
		  lastName  : "Doe",
		  age     : 50,
		  eyeColor  : "blue"
		var payloadValue = JSON.stringify(person);
		smartechTrackInApp(deeplinkValue, payloadValue);
  1. Sample Values for smt-click attribute or smt-c2a attributes are given below:

Event based payload personalisation in custom HTML

Personalisation is enabled in Android SDK version v3.2.30 onwards
To support personalisation, one needs to add classes NC_RECO_SHOW & NC_RECO_HIDE
The personalisation syntax is [%__payload-property-name$event_name$default-value__%]



NC_RECO_SHOW this class should be used for the element which contains the personalisation syntax.

NC_RECO_HIDE this class should be used in older SDK where personalisation is not supported.

This means this personalisationโ€™s event name is product_view and the key to be used for personalisation is company; if the company key does not contain any value, then the default value will be displayed.

<span class="NC_RECO_SHOW" hidden=true>[%__company$product_view$apple__%]</span>
<span class="NC_RECO_HIDE">The message the older SDK/app users will see.</span>


In this last step of campaign creation, you can specify the campaign start date and end date.

  • start date - you can choose to publish the campaign now or at a later date and time.

  • end date - you can run campaign indefinitely or choose a particular date and time.

  • campaign frequency - You can also choose the frequency in terms of day of the week when you want to send the in-app messages and also the time of the day when it should be shown.

For frequency of campaign, you can choose how many times this campaign should be shown to the users.

  • Every time - show the campaign every time the user comes on the website.
  • Time per session - Number of times the campaign to be shown within a single session.
  • Time per day - Number of times the campaign to be shown in a single day.
  • Time per campaign - Total number of times the in-app message is to be shown of a particular campaign for as long as the campaign is running.


This section will provide you summary of the campaign details which you have created.
So before publishing check all the details carefully.

Analyse campaign performance

On mouse-hover, by clicking on ellipsis (3 dots) you can Clone a given campaign as well as download its reports, or by clicking on campaign title you can see the preview of the campaign.

The entire campaign listing can be sorted basis modified time, viewed & clicked.

  • Last modified - shows the date and time when the campaign was last edited.
  • Ends - shows the date and time when the campaign ended or is going to end.
  • Viewed - shows the number of times the in-app message has been viewed.
  • Clicked - shows the number of times the in-app message has been clicked.

You can also toggle between percentage and numeric values of the entire listing.

The campaign listing page allows you to search any campaign by its name or id.

You can also filter based on Campaign Status such as scheduled, completed, failed, suspended, etc. as well as based on the Tags

Download Reports
This feature allows you to download reports of all or selected campaigns as well as schedule reports to be generated on a preset interval basis.

  • Schedule - Here you can select if you want to download the report just once or want to set-up a scheduler by selecting the recurring option.

  • Report type - Here if you select 'summary report', a overall summary of all your in-app campaigns would be downloaded immediately on your system as a csv file.

Summary report

Report AttributeDefinition
Campaign nameList of all your in-app campaigns
StatusEach campaigns status which can be running, paused, scheduled or completed.
Start dateDate and time when the campaign was last edited
End dateDate and time when the campaign ended or is going to end
ViewedTotal number of times the in-app message has been viewed
ClickedTotal number of times the in-app message has been clicked
Unique userNumber of unique users who have viewed this in-app message

On selecting the 'Custom detailed report' option, you can select the attributes and payload that you want to include in your report.

Custom detailed report

*Note: Attribute details are customizable and depend on what attributes you have added on your panel.* Hence, their definitions can vary from client to client.

Attribute typeReport AttributeDefinition
Campaign detailsMessage IDUnique campaign id
Campaign detailsCampaign nameUnique name of the campaign
Campaign detailsPrimary KeyUnique user identifier
Campaign detailsApp nameName of your app
Campaign detailsApp IDUnique app ID
Campaign detailsTagList of any special tags given to the campaign
Activity detailsViewed datedate and time when the user viewed the in-app message
Activity detailsClicked datedate and time when the user clicked the in-app message
Activity detailsClosed datedate and time when the user closed the in-app message
Device detailsOS typeOS of the user's device. Eg: iOS, Android
Device detailsOS versionOS version of the user's device
Device detailsApp versionApp version installed on the user's device
Device detailsSDK versionSDK version of the app installed on the user's device
Device detailsMakeBrand of the user's device
Device detailsModelUser's device model

Recurring option is selected when you want to schedule the reports for a particular time range and at the frequency chosen by you which can be Monthly, Weekly or Daily.

Custom detailed report allows you to choose manually the Campaigns details, Attribute details, Activity payloads and device details you want to include in your report.

Where to send
You can send these reports to either an email id configured on your panel or on any FTP location.


For any queries, please contact [email protected]