Messaging

Getting started?

Level up on fundamentals with Key Concepts then review channel-specific sections like Push Campaigns to pick up use cases & improve your strategy.

Key concepts

 

Messaging channels

To truly engage your users and build meaningful relationships with them, you need to be able to communicate through the right channel at the right time. Localytics offers four different fully-featured messaging channels: push, in-app, app inbox, and places.

Type Setup Description
Push Setup required (see Developer Documentation: iOS, Android) Push messages appear to users when they are outside the app and may appear on a user's lock screen or in a top or bottom banner, depending on platform and user configuration. Localytics communicates push message content to the device and the device is responsible for rendering the message.
In-app None on iOS, minimal on Android In-app messages appear to users when they are in the app. In-app messages can be prompted to display at the start of a session or when a particular tracked behavior occurs. In-app messages are presented within the app as a webview and are fully customizable.
App Inbox Setup required (see Developer Documentation: iOS, Android) Inbox messages are delivered to a dedicated inbox within your app and will display in your users' inbox for a scheduled amount of time.
Places Setup required (see Developer Documentation: iOS and Android) Places Campaigns allow you to trigger notifications in real time as a user enters or exits a real-world area.
Email App must assign a Customer ID and/or Email to app users Emails can be sent to any user with a known email address. Emails are fully customizable and have a responsive design.

User Profiles

What is a user Profile?

We know your users are more than just a timestamped history of their logged activities; they have interests, hometowns, birthdays, milestones, and interactions with your brand outside the app. We want you to use this type of information - along with logged activities - to power the most targeted and personalized engagement campaigns. To do so, we help you build Profiles for your users.

A Profile is a user-level record, to which you can attach properties called Profile Attributes, like Gender or Last Website Visit. Profile Attributes can be dates, text fields, numeric values, or a non-ordered collection called a set. These can then be used to create Audiences and to dynamically personalize push and email messages.

Profiles are different from Custom Dimensions in that they can track individual users across all apps and are unrelated to timestamped behavioral data. Profiles are memory-less in that they only record the current state, with no history. For example, consider a Custom Dimension called Product with values Trial and Paid. If, over a given week, a user upgrades from Trial to Paid, the user is in both Custom Dimension groups. However, a user whose Profile Attribute changes from Trial to Paid is only target-able based on the current value.

Known vs. anonymous user Profiles

If you perform the basic installation of Localytics, all logged activities will by default be assigned a per-device Localytics-generated Profile identifier, called a Customer ID. We refer to these as Anonymous Profiles. Your app can still be encoded to assign Attributes to Anonymous Profiles - e.g. capturing a Last Item Viewed Attribute - but the Anonymous Profile will simply be represented as a random alpha-numeric identifier (i.e. Customer ID).

Of course, it can be advantageous to connect your users' logged behavioral data with an identifier familiar to you (e.g. user name, CRM number, etc.). This will allow you to easily merge in data from any other system of record, using your identifier as the common key. To differentiate from Anonymous Profiles, we refer to these app-assigned Profiles as Known. To summarize:

Profile Type Customer ID Description
Anonymous Random value Localytics-generated random alpha-numeric identifier
Known Username / CRM number / etc. Identifier communicated to Localytics by your app, usually upon log-in or authentication

Importantly, if a user is first connected to an Anonymous Profile and later to a Known Profile - e.g. the user first uses the app anonymously, then logs in - the Known Profile cannot automatically inherit the Anonymous Profile's Attributes. Once a Known Profile is assigned, the user will be target-able based on that Known Profile (not the prior Anonymous Profile). Your app should have instructions to communicate important Profile Attributes upon setting Customer ID and, as explained in the sections that follow, you can also batch-upload Attributes either manually via CSV or programmatically via API.

Profile Attribute scope

Since some Localytics customers have multiple apps with which a single user may interact, Localytics has the concept of Profiles scoped across an organization's apps (i.e. Org scope) or Profiles scoped to a single app (i.e. App scope). You should assign organization-wide data that is useful to all apps, like demographic information, an Org scope. Assign app-specific data, like high scores, an App scope.

Auto-Profile Attributes

For every Profile, Localytics automatically collects some Attributes to help you power engagement campaigns. Some are collected using App-level scope, others Org-level scope, and a few are captured at both App- and Org-level. If your users will only interact with a single app, you should expect that App- and Org-level Attributes will be identical and inter-changeable.

We recommend reviewing the Known vs. Anonymous User Profiles section above to understand how Profiles are assigned since this impacts the interpretation of resulting Profile Attributes.

Scope Profile Attribute Description
App/Org User type Localytics detects whether a Profile is Known or Anonymous.
App/Org Last session date Localytics detects the last observed Session per Profile.
App Last CustomDimensionName For each Custom Dimension tracked by your app, Localytics will preserve the last observed value per Profile.
App Last app version For the last logged Session per Profile, Localytics captures the app version. If a user updates the app subsequently without recording a Session, this Attribute may not reflect current app version.
App Last OS Version Localytics detects the last OS Version being used by a Profile.
App Total sessions Localytics computes the total number of observed Sessions per Profile.
App First session date Localytics detects the first observed Session per Profile.
App Push enabled For the last observed Session per Profile, Localytics detects whether push messaging was enabled or disabled. If a user updates this subsequently without recording a Session, this Attribute may not reflect current status.
App Last push opened date For the last push opened, Localytics detects the date the Profile opened it.
App Last in-app displayed date For the last in-app displayed, Localytics detects the date the Profile opened it.
Org Last country Localytics detects the last country a Profile was in.
Org Last time zone Localytics detects the last time zone a Profile was in.
Org Last city Localytics detects the last city a Profile was in.
Org Language Localytics detects the last language a Profile was using.

Custom Profile Attributes

You can optionally assign Special Identifiers or Custom Profile Attributes to store additional information about your users. Special Identifiers include things like email, first name, and last name. These have unique capabilities so we differentiate them by prepending a $ to the identifier. For example the value assigned to the $email identifier can be used to send email campaigns through Localytics. In addition, you can optionally store other Custom Profile Attributes about your users, like hometown, registration date, or favorite items.

Special Identifiers and Custom Profile Attributes can be communicated to Localytics in three ways, summarized below.

Approach Description
Client-side tracking Encode instructions into your app to capture Special Identifiers or Custom Profile Attributes in real-time, e.g. Registration Date. Note that Localytics has different SDK methods for setting Special Identifiers versus setting Custom Profile Attributes.
CSV bulk-upload* Construct a CSV where column A is Customer ID and other columns include Special Identifiers or Custom Profile Attributes to be updated. Upload via the Localytics Dashboard. Make sure to prepend the $ to columns that include Special Identifiers like $email. For more, see Profiles.
REST API* Execute a script to programmatically update Profiles. Make sure to prepend the $ when setting Special Identifiers like $email. For more see, our API Docs.

* These methods require a Known Profile, i.e. that your app is assigning a known identity to users so that the associated Customer ID is recognizable to you.

Targeting using Profiles

The primary purpose of Profiles is to help you create more targeted and personalized engagement campaigns based on your users' current Profile values. It can be helpful to understand the available filters and their uses.

Filter Use Example
is one of Selects all users whose Profiles match one of the selected values People where Favorite is one of shoes, purses, jewelry
is none of Selects all users whose Profiles do not match any of the selected values People where Favorite is none of shoes, purses, jewelry
< Selects all users whose Profiles data is less than the selected value People where Value < 100
<= Selects all users whose Profiles data is less than or equal to the selected value People where Active Minutes <= 100
> Selects all users whose Profiles data is greater than or equal to the selected value People where Level > 10
>= Selects all users whose Profiles data is greater than or equal to the selected value People where Purchases >= 1
is between Selects all users whose Profiles data is between two values People where Subscribe Date is between 2015-01-01 and 2016-01-01
is defined Selects all users who have defined the Profiles key People where Favorite Category is defined Shoes
is not defined Selects all users who have not defined the Profiles key People where Subscription Date is not defined

How to drive results with Profiles

Localytics allows you to generate user Profiles so you can execute more targeted and personalized engagement campaigns. If your app captures Registration Date, for example, you can create an Audience with members whose Registration Date is exactly 7 days ago. If your app captures $first_name for these users, you can additionally personalize the message to dynamically populate with the person's name. For more, see Audiences.

To ensure your app is configured to make the most out of Profiles, ensure your developers have followed best practices identifying users and assigning Profile Attributes (Developer Documentation).

Deep linking

Deep links are links that send a user to a specific page within your app. These may be incorporated, for example, in an in-app message via a Call To Action or in a push message as the destination for users who open the push message. Your app must be configured to properly handle deep links. For those on SDK v4, you will no longer need to write code in your app to manually parse key/value pairs for opening deep links. As long as you have the custom URL scheme registered, the SDK will automatically tag the opened event and launch the deep link.

To understand how deep links work, consider how traditional web URL links work. When you type a URL link into a web browser, you are simply providing the web browser a text string which the browser then interprets and acts upon. For example, if you type https://www.espn.com into a browser, the browser recognizes this is a valid webpage and then renders the ESPN website. This is because browsers use technology with built-in instructions to properly handle web URL links.

Just like a URL is an address for a website, a URI is the address for an app on a mobile device. Colloquially, we tend to refer to URIs as "deep links". In a deep link like sportscenter://showArticle?12345, the first part sportscenter:// is called the URI scheme and it tells the operating system the app it should open. URI schemes must be registered by your app and must be unique values. This is so your device knows exactly which app to open when it sees a specific URI scheme.

Setting up the URI scheme enables the device to know which app to open, but deep links are intended to do more - to direct users to a particular destination within the app. In this example, the app should have logic such that when it sees showArticle and the numeric value 12345, the app generates instructions to display article ID 12345. Most apps handle deep links similarly, so the deep links tend to look like myapp://destinationPage. For more, see documentation about using URL schemes on iOS and enabling deep linking on Android, or view Mobile Deep linking Basics from our partner Branch.io.

To test whether deep links work independent of Localytics, type the deep link into a mobile browser and ensure that the app navigates to the expected destination. Remember that for deep linking to work as expected, the recipient must have a version of the app with deep linking supported and with the destination screen available.

IP warming

In the email world, your IP address is like a credit score. You build credit by sending out emails that don’t get marked as spam, and lose credit when people mark your emails as spam.

When you are just starting to send emails, an important practice is to “warm-up” the IP so it becomes healthy and so ISPs don't confuse your behavior with that of a spammer, which can have negative impact on future campaigns. To do this, you should not send high volumes of email over a new IP before it has been properly warmed up. Sending a lot of emails that get marked as spam will result in an unhealthy IP, which in turn will result in future emails going straight to the spam folder.

IP warming is a general challenge for email marketers and is not specific to Localytics. For more, we recommend "Warming Up an IP Address" from Sendgrid or "IP Warming - What is it and Why is it Important for Marketers?". Additionally, see How do I get started with IP warming for Email messaging in our Help portal.

Goals

When messaging your users, it's important to have a goal in mind. Are you trying to get users onboarded? Drive purchases? Bring back churned users? Knowing your goal will make it easier to identify the right audience, craft effective creatives, and ultimately determine if your campaign was a success.

Having a hard time selecting a goal? Take a look at some example campaigns:

Goal Description Insight Examples
Activate Get users started and on the right track Primary: Sessions per user

Secondary: Session duration
  • Welcome message for first-time users
  • Encouraging users to sign in/register
  • Asking new users to enable push notifications
Drive Behavior Get users to perform a specific action Primary: Conversion rate

Secondary: Conversions per user
  • Encouraging users to share an article via social media
  • Recommending that users add a show to their favorites list
Nurture Keep users happy, healthy, and retained Primary: Retention rate

Secondary: Sessions per user
  • Recommending content based on a user’s past in-app behavior
  • Thanking/rewarding users for using the app on a regular basis
Monetize Encourage users to purchase or spend Primary: Revenue per user

Secondary: Paying users
  • Sales and promotions designed to drive purchases
  • Abandoned cart campaigns
  • Encouraging users to upgrade to a “premium” membership
Re-enage Bring back churned or lapsed users Primary: Sessions per user

Secondary: Push opt-out rate
  • Summaries of what’s changed since a user last opened the app
  • Enticing entice users to return to the app with deals or limited time offers
Notify Tell users about something else Primary: Sessions per user

Secondary: Opens
  • Summaries of account activity or changed settings
  • Announcing app updates
  • Announcing upcoming service outages or app downtime

Performance metrics

Localytics has a unique ability to unify rich, high-fidelity behavioral & Profile data with marketing campaign data. This allows us to answer questions like, How much revenue did this campaign drive within 7 days, measured against a control group? For each campaign, we start by reporting a number of basic performance metrics. These are defined as follows.

Channel Metric Description
Push Sends The number of messages dispatched to a device.
Push Clicks The number of push messages that were opened by end-users.
Push Conversions Of the users that received the push message, the quantity that accomplished the specified conversion event regardless of whether they opened the push message or not.
Push Click-through conversions Of the users that received the push message, the quantity that accomplished the specified conversion event as a result of engaging with the message.
In-app & Inbox *Impressions The number of times the message was displayed to end-users. For inbox, the number of times the detail view of the message was displayed to end-users.
In-app & Inbox Clicks The number of times users clicked the Call To Action in the message. If there is no Call To Action, this will be zero.
In-app & Inbox Conversions Of the users that received the message, the quantity that accomplished the specified conversion event regardless of whether they opened the message or not.
In-app & Inbox Click-through conversions Of the users that received the message, the quantity that accomplished the specified conversion event as a result of engaging with the message.
Email Sends The number emails that were dispatched to end users.
Email Opens The number of emails that were opened by end users.
Email Clicks The number of times users clicked the Call To Action in the email. If there is no Call To Action, this will be zero.
Email Bounces The number of emails that were dispatched by Localytics but bounced by the recipient's email server.
Email Unsubscribes The number recipients that clicked the unsubscribe link in the email.
Email Spam reports The number of emails that were marked as spam by the email service.

Profiles

 

The Profiles report summarizes user Profile data. For essential background, see User Profiles under Key Concepts. If you're uncertain about the data you're seeing, consider reviewing help articles published in our Answers portal. If you're exploring ways to drive value with Localytics, consider trying a Localytics Project.

The Profiles report can be used to upload Profiles or export Customer IDs, as illustrated below. When uploading Profile Attributes, be sure to follow the following guidelines.

Rule Description
Data organization The first row of your CSV must include Profile Attribute names that either already exist or that you wish to create, except for the left-most column which must have the name customer ID. Make sure the names are written and capitalized exactly as you want them to appear in the Dashboard.
Special attributes (e.g. $email) If you are uploading special Profile Attributes, like $email be sure to prepend the $ so these are treated appropriately.
Data types Profile Attributes must be either dates, integers, or text strings. Do not send arrays. For more, see data types & limits.
Date format Dates must be formatted as YYYY-MM-DD.
Quotations You may send text strings either in quotes or without quotes. Be sure to close your quotes.
Deleting data Profiles Attributes cannot be deleted once they're uploaded. If you want to delete a value, replace the value with a blank or null in your CSV file and upload it again. You can also use the Profiles API to edit or delete Profiles.
User permissions To upload Profiles data via CSV, you need to have Org Admin, Org Creator, App Owner, or App Marketer permissions.
File size Your CSV file cannot be more than 100MB.

The Profiles report summarizes data that has been communicated to Localytics either directly by your app, via CSV uploads, or via API - or that has been automatically collected by Localytics. Importantly, Profiles are not synonymous with "device" and Profiles can be either Known or Anonymous, so the number of Profiles does not need to equal the number of unique users or devices.

Consider using the Profiles report to:

  • Upload Profile Attributes using a known Customer ID.

  • Export Customer IDs to confirm your app is assigning them properly.

  • View Profile statistics to ensure that uploaded data appears reliable. Remember to account for Known and Anonymous Profiles.

To illustrate:

Audiences

 

Audiences can be constructed using Events, Sessions, or Profiles data. For more on how Localytics captures Sessions, Events, and Profiles data, see Analytics Key Concepts and Profiles. If you're uncertain about the data you're seeing, consider reviewing help articles published in our Answers portal. If you're exploring ways to drive value with Localytics, consider trying a Localytics Project.

An Audience is a group of users you specify using up to two behavioral conditions (i.e. activity history as measured by Events and Sessions) and up to five Profile conditions (i.e. user-level properties). If you intend to use Profile Attributes to define an Audience, the Profiles section provides important background.

Audiences can be based on behavior scoped to the device-level or, if your app is assigning an identity to users by passing Localytics a Customer ID, Audiences can be scoped to the user-level. When Audiences are scoped to the user-level, it means Localytics will evaluate a user's total activity across devices based on the Customer ID you have assigned.

You can choose whether all behavioral conditions must be met (AND), at least one of the specified behavioral conditions must be met (OR), or the behavioral conditions must occur sequentially (AND THEN) using the conditional toggle that vertically separates behavioral conditions. Audiences that join Behavioral conditions and Profile conditions drive the most targeted and successful campaigns.

Consider using Audiences to:
  • Target users who abandoned a conversion funnel (using behavioral conditions).
    People who performed event Added to Cart in the past 7 days AND THEN did not perform event Completed Checkout

  • Target users who achieved a milestone exactly 7 days ago (using a Custom Profile attribute).
    People where Registration Date is exactly 7 days ago.

  • Target users whose last observed Session was 30 days ago (using an Auto-Profile attribute).
    People where Last Session Date is exactly 7 days ago.

To illustrate:

True Impact

True Impact is a reporting tool that shows you the results of your Localytics messaging campaigns. To access the report for one of your campaigns, simply go to the Messaging screen in the Localytics dashboard and click on the campaign’s name. Along with displaying basic campaign metrics like sends, opens, and conversions, True Impact also gives you additional insights into how your campaigns drive changes in user behavior. For example, True Impact can show you things like if users who received your campaign went on to open your app more often than those who didn’t.

Consider using True Impact to:

  • Consume at-a-glance Hero insights around specific campaign performance.

  • See positive as well as adverse effects that were a downstream result of your campaign.

  • Dive into deeper insights to see other commomly observed user behaviors.

To illustrate:

Campaign summary

Campaign information

At the top of the True Impact page is a row of information about your campaign. A few things to note:

  • You can view details on the Goal and when the campaign was sent by hovering your mouse over those items.
  • If you have applied a filter to your conversion event, that is indicated by a filter icon. You can hover over the filter icon to see additional information.
  • The name of the Audience receiving this campaign is only shown if the campaign is targeting a saved Audience. If you built the Audience while building the campaign and chose not to save it, the Audience name will be “Custom”.

Hero insight

Below the campaign information is a Hero insight, which gives you some insight into how successful your campaign has been. The information shown in the Hero insight is determined by the Goal for the campaign, which you specified when you built your campaign. For example, if the Goal of my campaign is “Monetize” then the Hero insight will show me details around how the campaign is driving changes in Revenue Per User. Depending on the performance of your campaign, this metric (and all other metrics in True Impact) will be red, green, or gray. These colors indicate statistically significant negative change, statistically significant positive change, and no significant change, respectfully.

If it has been less than 48 hours since your campaign went live, you might not see a Hero insight. Don’t worry, everything is still working properly! Please check out the discussion of Live Results below for more information.

Message preview

Next to the Hero insight is a preview of your campaign’s message(s). If you are running an A/B/n test as part of your campaign, you can view each message version by clicking on the letters above the preview. If you hold your mouse over a letter, you can see what percentage of the audience received that message. It’s important to note that the preview is there only to remind you what your messages look like. Selecting a different message version in the preview doesn’t change any of the metrics seen on the rest of the report. If you want to see metrics for a specific creative version, please refer to the Insights and A/B Test sections below.

Navigation bar

Below the Campaign Information is a navigation bar that lets you move between the three sections of True Impact. Here is a quick breakdown:

Section Description
Overview This section consolidates all of your basic campaign information in one place. It also calls out a few key insights from your campaign which you can explore further in the Insights Section.
Insights The Insights section is where you go to dive into the details and get a deeper understanding of how your campaign has driven changes in user behavior.
A/B Test If your campaign includes an A/B test, then you should check out the A/B Test section to see a side-by-side comparison how of your creatives performed.

Read on for more information about the each section in the above table.

Overview section

This section gives you a high-level summary of how your campaign is performing. The point of the Overview is to consolidate all the information marketers care about most in one place. This allows you to quickly and easily check on the health of your campaign. The following sections will explain the components of the Overview screen.

Key insights

In Key Insights, you will find several metrics that give you an idea of how your campaign has driven changes in user behavior. The metrics shown depend on the Goal of your campaign. For example, if your campaign’s goal is “Monetize” then you will find “Revenue per User” and “Number of Paying Users” as two of the metrics displayed in Key Insights. The metric shown on the right is whichever metric was most negatively impacted by the campaign. It is included to highlight any unintended side effects of the campaign.

Live results vs. full campaign

Below Key Insights is a selector that allows you to toggle between “Live Results” and “Full Campaign”. This selector determines what data is shown in Stats and Trends, which are the two remaining components of the Overview section. If you select Live Results, you will only be shown data from the past 48 hours and all the information is updated every five minutes. In contrast, if you select Full Campaign, you will see more metrics, but they are only updated once every 24 hours. Live Results is a great way to take a look at the initial performance of a campaign in the minutes and hours after it goes live, while Full Campaign is the better choice for getting an overall sense of how your campaign is doing.

Stats

In Stats, you will find a variety of standard campaign metrics such as sends, clicks, and conversions. Stats is where you should turn to get a top-level sense of what’s going on with your campaign.

Insights section

The Insights section is where you go to understand details around how your campaign drove changes in user behavior. The metrics in the Insights section are split into three groups: Engagement, Conversion, and Revenue.

Section Description
Engagement Go here to find metrics around how users interacted with your app in the days and weeks after they received your campaign. Metrics like average session length, retention rate, push opt-in/opt-out rates, and uninstall rates are all found here.
Conversion If you set a conversion event when you were building your campaign (and you should always set a conversion event), this is where you’ll get details around how many members of the campaign’s audience performed the conversion event, if they performed the event multiple times, and much more.
Revenue If you have configured your event tracking to capture LTV, you’ll find detailed metrics on how your campaign drove changes in the LTV of users who received your campaigns.

A/B Test section

If your campaign has multiple creatives, you have the ability to compare each version of the message side-by-side in the A/B Test section. See how your creatives helped drive key metrics associated with the Goal for your campaign while also uncovering which creatives are leading to adverse effects downstream. See how each creative performed against a control group and use these insights to adjust the weighting of creatives to reflect the most successful version.

Explore

While you hope your users perform the defined conversion event in your campaign, you may want to see if your campaign has caused users to perform other actions. The Explore tab lets you uncover insights for users who received your campaign and performed a different behavior.

View other insights by specifying another conversion event correlated to your definition of campaign success. Or, diagnose poor side effects of your campaign by selecting an event "opposite" of your conversion event. Explore also allows you to hone in on a subset of users by offering the ability to apply a filter to your conversion event. These filters can contain event attributes as well as custom dimensions. With Explore you can see conversion rates for campaigns compared to the control group with four different time periods to choose from (1, 3, 7, and 14 day window).

True Impact (Legacy)

True Impact gives you deeper insights into how your messages directly impact key business metrics like engagement, revenue, and conversion. On each Impact Card, you can view your impact metrics for each creative in your campaign as well as the control group. When a control group is enabled, the Impact Card will automatically calculate lift for each creative versus the control group and display as a positive or negative trend metric.

Impact metrics include:

  • Engagement: Average number of sessions per user after viewing the campaign, in the selected date range.
  • Revenue: Average revenue per user influenced by this campaign. Only active if set by user. To learn more about setting up revenue tracking in Localytics see tracking lifetime value.
  • Conversion Frequency:Average number of conversions per user after viewing the campaign, in the selected date range.
screenshot of Localytics True Impact cards

When a control group is enabled in your campaign, Localytics automatically calculates lift over the control group for each Impact Metric. Green trend metrics indicate positive lift while red trend metrics indicate negative lift. Using these lift metrics, you can understand which message variants positively or negatively impacted engagement, revenue, and conversion in your app by comparing them to a control group of users who didn't receive a message.

Push campaigns

To run push messaging campaigns, your app needs to be configured to handle push messages from Localytics (iOS and Android). You'll need a subscription to push messaging to use this feature. For help configuring or troubleshooting push messaging, see Localytics' Rapid Push Verification.

Consider using push messages to:

  • Congratulate users on key milestones or achievement.

  • Tell users about new app features that will genuinely interest them.

  • Provide time-sensitive content, like deals or breaking stories.

Get started

Select an Audience

An Audience is a group of users you specify using up to two behavioral conditions (i.e. activity history as measured by Events and Sessions) and up to five Profile conditions (i.e. user-level properties). If you intend to use Profile Attributes to define an Audience, the Profiles section provides important background.

Audiences can be based on behavior scoped to the device-level or, if your app is assigning an identity to users by passing Localytics a Customer ID, Audiences can be scoped to the user-level. When Audiences are scoped to the user-level, it means Localytics will evaluate a user's total activity across devices based on the Customer ID you have assigned.

You can choose whether all behavioral conditions must be met (AND), at least one of the specified behavioral conditions must be met (OR), or the behavioral conditions must occur sequentially (AND THEN) using the conditional toggle that vertically separates behavioral conditions. Audiences that join Behavioral conditions and Profile conditions drive the most targeted and successful campaigns.

Consider using Audiences to:
  • Target users who abandoned a conversion funnel (using behavioral conditions).
    People who performed event Added to Cart in the past 7 days AND THEN did not perform event Completed Checkout

  • Target users who achieved a milestone exactly 7 days ago (using a Custom Profile attribute).
    People where Registration Date is exactly 7 days ago.

  • Target users whose last observed Session was 30 days ago (using an Auto-Profile attribute).
    People where Last Session Date is exactly 7 days ago.

To illustrate:

Create content & apply a control group

Composing a message is as simple as typing into the Message field. Of course, you can do much more, but we want to help you walk before you run. When you're ready, read below to dynamically tailor content with Personalization and to vary messages by geography with Localization.

We recommend applying a control group in every campaign. Why? Control groups allow you to go beyond vanity metrics like message opens to measure whether your campaign is driving increases in engagement, revenue, and conversion compared to users from the same population that ought to have received the message but were deliberately held out. This allows you to see the true impact of your campaign.

Even basic, non-personalized pushes can be effective if you choose your words carefully to motivate user action. Language that conveys urgency (e.g. time-sensitive deals) and relevancy (e.g. sending this to deal-hunters) will naturally be better at driving latent users back to your app.

Consider using Creatives to:

  • Congratulate users on key milestones or achievement.
    Pat yourself on the back. You just completed your 100th run!

  • Tell users about new app features that will genuinely interest them.
    You asked for it and we built it: Check out our new Trending Stories page!

  • Provide time-sensitive content, like deals or breaking stories.
    Don't forget to complete your purchase! Take 10% off with the code SAVE10.

To illustrate:

Schedule and launch

Scheduling campaigns with Localytics is simple but powerful. Our flexible model helps you build anything from a one-off campaign to an automated campaign you can set-and-forget, with frequency caps to ensure you don't over-message users. The interaction of Audiences and Scheduling is particularly powerful - you can create Audiences to power recurring campaigns, where the Audience is refreshed for every execution.

Here is a summary of the features and how to use them:

Campaign Type Feature When to use it
One Time Immediately You have a one-time message you want to send right away
One Time Scheduled You have a one-time message you want to send in the future
Automated Timing You have a message you want to send on a recurring basis (where the qualifying Audience is refreshed just before every send)
Automated Time Zone Delivery You want every user to receive your recurring messages at the same time of day based on the user's local timezone (rather than Localytics delivering all messages simultaneously)
Automated Starting Timezone You want to deliver the message in the user's local timezone, but you want to delay the start of the sends until a particular timezone - for example, due to an event that goes live for users in a particular region first.
Automated Frequency Since users may be able to qualify for your recurring message more than once (depending on the Audience definition), you want to cap the number of messages a user may receive either within a certain time interval, or ever
Automated Start & Stop You want your recurring campaign to execute from the selected start time until the selected stop time

Consider using Scheduling to:

  • Power a set-it-and-forget-it "drip" campaign. Select an Audience whose first session was 7 days ago and schedule this to execute daily with a frequency cap.
    Send every day at 5:00PM delivered in the user's timezone
    Send only one message ever per device

  • Send a frequency-capped recurring campaign to motivate re-engagement. Select an Audience that hasn't achieved a conversion event in the past 30 days and, since users may enter the Audience more than once, assign a frequency cap to avoid over-messaging.
    Send weekly on Wednesday at 8:00AM delivered in the user's timezone
    Limit to 1 message per 14 days

  • Send messages with highly customized frequency-capping and spacing criteria
    Send every day at 6:00PM delivered in the user's timezone
    Limit to 2 messages per 30 days & Ensure messages are at least 7 days apart

To illustrate:

Do more

A/B testing

Even the best copywriters and app marketers can't predict what content users will respond to best without experimentation. The optimal approach is to test different creatives and let the data tell you which creative users actually prefer.

Localytics makes this dead simple. You can test up to 10 variants - not just an "A" group and a "B" group - and can distribute these variants either equally or assign specific percentages to each variant. Once your campaign is live, you can compare performance for each variant in the campaign performance screen.

Consider using A/B Tests to:

  • Generate multiple hypotheses about the type of content that might succeed and experiment with them.

  • Adjust the distribution of message variants across your Audience. For example, "beta test" a riskier creative by sending it to a small percentage of your Audience.

  • For recurring campaigns, identify winning messages and then modify or delete creatives for unsuccessful variants.

To illustrate:

Action Buttons

In iOS 8+, you can include up to four “Action Buttons” in a push notification. These buttons make it easier for users to do specific actions and communicate with you. For example, a restaurant might send a push notification to a user the day before a scheduled reservation to confirm that they’ll still be having dinner at the restaurant. Using Action Buttons, the push notification could include one button that allows the user to confirm that the date and time still work and another button that allows them to reschedule. In iOS, if you want to add or edit an action button, you unfortunately have to make changes to your app’s code. Here’s how it works:

  1. Your developers need to configure something Apple calls Categories in your app’s code. To do this, they should follow these instructions.
  2. Each Category has action buttons associated with it. The text of the button and the behavior that happens when the button is tapped is all defined in the code your developer writes when creating the Category.
  3. Once your developer has configured a category and you’ve shipped the updated version of your app to the App Store, you can send push notifications that include the action buttons he or she built.
  4. In order to do this, create or edit a push campaign. When you get to the third step in the Creative Builder, scroll down and toggle on the Category field, then type in the name of the Category (see animation below). Now when you send your message, the Action Buttons will show up.
You and your developers can create multiple Categories, each of which has different Action Buttons. For example, you might create a Category titled “Social” with action buttons to Like or Share an new product and another Category titled “Feedback” with buttons allowing someone to review a product they’ve purchased, ask to be reminded later, or decline to provide a review.

Deep linking

Deep linking allows you to direct users who open a push message to a particular screen within the app. Importantly, your app must be configured to handle deep links for this to work. For more, see Deep linking in the Key Concepts above. If operating on SDK 4.0 and above, you will no longer need to write code in your app to manually parse key/value pairs for opening deep links. As long as you have the custom URL scheme registered, the SDK will automatically tag the opened event and launch the deep link. For earlier versions of the SDK, the following will apply.

You achieve deep linking with Localytics by attaching additional instructions to push messages in the form of key-value pairs. These are invisible to end-users but are received by your app. Your app should be configured such that upon receiving a particular Key, it will fetch the corresponding Value and treat it as a deep link. The Key for your app will likely be a different word than in the illustration below, but your app should have some key that instructs it to properly handle deep links. If you don't know this, ask a developer in your organization.

To include a deep link as part of a push message, go to the Creatives screen of the message builder, locate the Advanced section, and activate it. This allows you to enter key-value pairs. In the Key field, enter the key that tells your app to handle the corresponding Value as a deep link. In the Value field, enter the deep link, which usually will look something like appname://page. Confirm the deep link works independent of Localytics by typing it into a browser on your mobile phone. If it works successfully and you've included the appropriate Key, users that receive the push message and open it will be directed to the deep linked screen.

Consider using deep linking to:

  • Send your users to a specific story, product, or profile within your app.

  • Send users to a particular point within an activation or conversion funnel, e.g. to the registration page.

  • Dynamically generate a deep link with Profile Attributes to provide maximum personalization, e.g. sending each user to the product that they last viewed.

To illustrate:

Personalization

The most compelling campaigns contain personalized content. Localytics powers personalized content by allowing you to store individual user Profiles with default fields like First Name or custom fields you can define like Favorite Category or Exercises Completed. If you intend to personalize messages, read the User Profiles section to understand their full power and flexibility. Personalization utilizes the open-source templating language Liquid, which is explained with more detail in the Liquid templating section.

Localytics creates a user Profile if your app assigns a known identity to users. If a user uses your app without an app-assigned identity, Localytics generates an anonymous Profile tied to the device. In either case, your app can optionally collect observable information about users and pass it to Localytics as a Profile Attribute, which can then be used to personalize messages. To illustrate, if User1234 selects a favorite team, your app can instruct Localytics to store this under a Profile Attribute called Favorite Team and then create push or email messages that dynamically populates the Favorite Team. Similarly, your app can use attributes that are strings, numeric values, dates, or sets of those values. To optimize your personalization strategy, rea more in our User Profiles section to optimize your personalization strategy.

Once your Profile Attributes have been communicated to Localytics, personalizing messages is simple. Click the Profile icon at the top right of the message builder to access the Insert Profile Field menu. You can select any available Profile Attribute to insert it into your message. The scope is set automatically.

Consider using Personalization to:

  • Send push messages that are personalized to include the user's name, such as Hey John, this week only save 10%!
    Hey {{ special.first_name }}, this week only save 10%!
    

  • Personalize even further by using a Profile Attribute reporting last item viewed, such as Hey John, this week only save 10% on shoes!
    Hey {{ special.first_name }}, this week only save 10% on {{ app.favorite_category }}!
    

  • Send push messages to highlight milestones and create habit loops, such as John, congrats on completing 88 exercises in 2015. Keep it up in 2016!
    {{ special.first_name }}, congrats on completing {{ app.exercises_completed_in_2015 }} exercises in 2015. Keep it up in 2016!
    

To illustrate:

Localization

If you have global users of your app, you should send messages in your users' local language. Localytics automatically detects the language from the settings on a user's device and assigns this as a Profile Attribute. The language is saved as a two-character code using the ISO 639-1 standard. Again, you should review the User Profiles section to understand how Profiles work. Localization uses Liquid templating; for more details read our Liquid templating section.

Achieving Localization is very straightforward. In the same way that you achieve personalization by using Profile attributes to dynamically create messages, you can include instructions that tell Localytics to send different messages based on the language setting on a user's device. A few commonly used languages and their language codes are below, followed by an illustration of how to achieve Localization.

Language Code
English en
French fr
Spanish es

Consider using Localization to:

  • Send messages in a user's native language. For example, Salut, mon amie! for users with French as their device language, Hola, mi amigo! for users with Spanish, and Hello, my friend! as the default for all other users.
    {% if _ll.language == 'fr' %}
    Salut, mon amie!
    {% elsif _ll.language == 'es' %}
    Hola, mi amigo!
    {% else %}
    Hello, my friend!
    {% endif %}
    

  • Send localized messages for the most common foreign languages and use fall-back logic to default to English (or another language) for everyone else.

Liquid templating

The preceding sections covered Personalization and Localization, which are achieved by using special templating to customize messages. This is powered by the templating language Liquid, which can also do much more. Since the data available to use in your templates depends on what Profile data you are tagging, you should review the User Profiles section.

As an example, suppose that your app communicates to Localytics each time an item is added to the cart, resulting in a set of values stored as a Profile Attribute called Items In Cart. Technically, your app will be adding elements to an unordered set which may look like this {Shirt, Socks, Belt, Pants, Shoes}. You could use the Liquid templating language to fetch a random element from the set, e.g. Shirt, or the number of unique items in the set 5, among other things. In short, Liquid templating can be used to extract information from Profile Attributes and insert the resulting value into a message.

Note that if a Profile Attribute(s) specified is not populated for a given user, the Liquid will default to a blank space. To avoid this, include a basic default value as a fallback. See this documentation to learn more. If you want to include an entirely different fallback message in the same campaign to those users, add a condition {% else %} followed by the body of the message. Adding this condition will surface the default message when the Profile Attribute(s) is null for specific users. For more on else / elsif conditions please consult the documentation here.

Consider using Liquid Templating to:

  • Count the number of items that have been captured in a set and display the result in a message, such as You have 5 items in your cart!.
    You have {{ app.items_in_cart | size }} items in your cart!
    

  • Fetch a value from the set and display the result in a message, such as Don't forget the shirt you added to your cart!. Elements within a set don't have a guaranteed order, so be careful if the set order matters for your message.
    Don't forget the {{ app.items_in_cart.first }} you added to your cart!
    

  • Use if-this-then-that logic to construct messages, like Those 5 items in your cart are hot right now. Don't forget to checkout!" Add a default condition to be sent to users that do not have those Profile Attributes defined.
    {% if app.items_in_cart.size == 1 %}
    Don't forget that {{ app.items_in_cart }} in your cart!
    {% elsif app.items_in_cart.size > 1 %}
    Those {{ app.items_in_cart.size }} items in your cart are hot right now. Don't forget to checkout!
    {% else %}
    There are items in your cart. Don't forget to checkout!
    {% endif %}
    

Programmatic push messaging

In addition to enabling push messaging campaigns through the Localytics interface, we allow you to send push messages programmatically using our Push API.

Campaigns delivered via the Push API can be sent either to individual devices (by targeting a Customer ID) or to an Audience (by targeting an Audience ID). Audiences must be constructed in the Localytics dashboard and upon saving will be assigned an Audience ID.

Campaigns that target individual devices execute in near real-time (typically within seconds). Campaigns that target Audiences may take up to several minutes to reach end users, depending on the Audience size and complexity. This is because it can take several minutes to compute which devices qualify for an Audience if the Audience definition is complex or requires querying an extremely high volume of data.

Consider using Programmatic Push Messaging to:

  • Send individualized push messages targeted to specific users, e.g. to confirm an order.

  • Send breaking news or real-time alerts targeted to an Audience based on interests, e.g. score updates to football fans.

Rich push messaging

Rich push messaging allows you to send users a push message with the option of including rich media content. For iOS, you can attach a picture, animated GIF, video, or audio file to accompany the message, while you are limited to only images for Android. Utilizing rich push allows users to interact with your content without having to launch the app, removing a major barrier to consumption. By pressing down (for 3D Touch devices) or swiping down on the notification, they are shown a larger version of the content. GIFs will automatically start animating while videos and audio files can be played directly in the notification.

To send a rich push message for iOS, insert the URL in the creative builder for the rich media content you would like to attach to a message from your storage service. To make sure your app is integrated properly to handle rich push messaging check out our documentation for iOS.

To send a rich push message for Android, create a key value pair on the dashboard campaign. Set the key to ll_attachment_url and the value to the URL for the rich media content you would like to attach to a message from your storage service. To make sure your app is integrated properly to handle rich push messaging, check out our documentation for Android.

For hosting content, we recommend services like Cloudinary or Amazon S3. Keep in mind HTTPS is a hard requirement for image URLs when targeting iOS devices.

Consider using rich push messaging to:

  • Engage users with a visual display of new products or features.

  • Send individualized push messages displaying content relevant to the specific user with User Profiles and Liquid templating.

To illustrate:

Measure & optimize

Now that you've sent your campaign and have data flowing into Localytics, you can begin to see how your users have been interacting with the message. This is where that campaign's Goal and conversion event come into play. When navigating to the campaign performance page, you are instantly confronted with a hero metric associated with your Goal. This metric, along with many others surfaced in sections labeled "Overview" "Insights" and "A/B Test" gives you a clear picture of the True Impact your campaign had on your users. Use these metrics to optimize your current and future campaigns to avoid adverse effects from irrelevant campaigns. To learn more about the reported metrics, see Performance metrics under Key Concepts.

In-app campaigns

To run in-app messaging campaigns make sure your app is configured according to our recommendations (iOS and Android). Note that on Android, these recommendations are code-level dependencies. You'll need a subscription to in-app messaging to use this feature.

For help creating a custom in-app message, consult our help articles on coding the message, tagging events, and measuring clickthroughs.

Consider using in-app messages to:

  • Share new feature updates, e.g. a message that illustrates new functionality with an image or GIF.

  • Get user feedback and encourage positive app store ratings, e.g. see our Localytics Project Increase app store ratings with NPS surveys.

  • Encourage upgrades, e.g. a message reminding users to upgrade to the newest app version.

Get started

Select an Audience

An Audience is a group of users you specify using up to two behavioral conditions (i.e. activity history as measured by Events and Sessions) and up to five Profile conditions (i.e. user-level properties). If you intend to use Profile Attributes to define an Audience, the Profiles section provides important background.

Audiences can be based on behavior scoped to the device-level or, if your app is assigning an identity to users by passing Localytics a Customer ID, Audiences can be scoped to the user-level. When Audiences are scoped to the user-level, it means Localytics will evaluate a user's total activity across devices based on the Customer ID you have assigned.

You can choose whether all behavioral conditions must be met (AND), at least one of the specified behavioral conditions must be met (OR), or the behavioral conditions must occur sequentially (AND THEN) using the conditional toggle that vertically separates behavioral conditions. Audiences that join Behavioral conditions and Profile conditions drive the most targeted and successful campaigns.

Consider using Audiences to:
  • Target users who abandoned a conversion funnel (using behavioral conditions).
    People who performed event Added to Cart in the past 7 days AND THEN did not perform event Completed Checkout

  • Target users who achieved a milestone exactly 7 days ago (using a Custom Profile attribute).
    People where Registration Date is exactly 7 days ago.

  • Target users whose last observed Session was 30 days ago (using an Auto-Profile attribute).
    People where Last Session Date is exactly 7 days ago.

To illustrate:

Create content & apply a control group

In-app messages are extremely flexible. You can use either the Creative Builder within the Localytics UI to construct an in-app message - complete with text, images, and a customizable Call To Action - or you can generate your own custom creative using HTML, CSS, and Javascript. If you upload your own creative, Localytics will render this as a webview, which means most content that is presentable as a static webview is supported. For example, custom creative may include surveys, multiple Calls To Action, images, GIFs, or videos.

If you use custom creatives, your developers may want to customize certain elements that are automatically included by Localytics, like the dismiss icon or custom button tracking. For details on how to customize this, review developer instructions on how to customize in-app messages for iOS and Android. For additional in-app messaging capabilities including targeting users based on custom dimensions, delaying your campaign on "Session start" triggers, and additional Javascript callbacks for setting profiles, consult our Custom Creative Javascript API documentation for iOS and Android.

You may also be inclined to tag custom events within an in-app message to record user behavior. These events can be tagged the same way other events within your app are tagged. For further instructions on custom event tagging, see our developer documentation for iOS and Android.

Consider using Creatives to:

  • Survey users and track scores in Localytics. Use this Net Promoter Score survey as a starting template and try this Localytics Project for step-by-step instructions.

  • Show users the value they'll get by opting in for push messages and conditionally issue OS-level permission requests only to those that have indicated they're ready. Try this Localytics Project for step-by-step instructions.

  • Highlight new features or functionality at the right time to increase adoption. Upload GIFs to make it visually clear and compelling.

To illustrate:

Schedule and launch

Scheduling an in-app message is different than scheduling a push message because, unlike push messages, in-app messages are only displayed when a user does something within the app. As a result, you don't decide when to send out the message, you simply set rules for when the message should display. If users in the qualifying Audiences don't have a session in the app while the campaign runs, they won't receive the in-app message.

Here is a summary of the features and how to use them:

Feature Definition
Trigger For users in the qualifying Audience that have a Session while the campaign is active, when the message should be prompted to display.
Frequency If a user in the qualifying Audience performs the Trigger behavior more than once while the campaign is active, how often the user should receive the message.
Schedule The time range over which the campaign should be active.

Consider using Scheduling to:

  • Trigger messages at the start of a Session.

  • Trigger messages to start after a certain action is performed (i.e. on Event).

  • Allow messages to repeatedly appear, subject to a frequency cap.

To illustrate:

Do more

A/B testing

Even the best copywriters and app marketers can't predict what content users will respond to best without experimentation. The optimal approach is to test different creatives and let the data tell you which creative users actually prefer.

Localytics makes this dead simple. You can test up to 10 variants - not just an "A" group and a "B" group - and can distribute these variants either equally or assign specific percentages to each variant. Once your campaign is live, you can compare performance for each variant in the campaign performance screen.

Consider using A/B Tests to:

  • Generate multiple hypotheses about the type of content that might succeed and experiment with them.

  • Adjust the distribution of message variants across your Audience. For example, "beta test" a riskier creative by sending it to a small percentage of your Audience.

  • For recurring campaigns, identify winning messages and then modify or delete creatives for unsuccessful variants.

To illustrate:

Deep linking

Your in-app messages can have a Call To Action which, if selected, sends the user either to an external URL or to a particular screen in your app via a deep link. Importantly, your app must be configured to handle deep links for this to work. For more, see Deep linking in the Key Concepts above.

If your app is configured to handle deep links, you simply insert the deep link in the Link / Action field. Your deep link will typically look something like appname://page. Confirm the deep link works independent of Localytics by typing it into a browser on your mobile phone.

Consider using deep linking to:

  • Link customers directly to an in-app destination described in the message, like a product page or article.

  • Point users to new features or functionality.

To illustrate:

Measure & optimize

Now that you've sent your campaign and have data flowing into Localytics, you can begin to see how your users have been interacting with the message. This is where that campaign's Goal and conversion event come into play. When navigating to the campaign performance page, you are instantly confronted with a hero metric associated with your Goal. This metric, along with many others surfaced in sections labeled "Overview" "Insights" and "A/B Test" gives you a clear picture of the True Impact your campaign had on your users. Use these metrics to optimize your current and future campaigns to avoid adverse effects from irrelevant campaigns. To learn more about the reported metrics, see Performance metrics under Key Concepts.

Email campaigns

To run email campaigns, your app needs to be configured to communicate users' email addresses to Localytics ( iOS and Android). You should review IP Warming to understand how this impacts deliverability. You'll need a subscription to email to use this feature.

Consider using email to:

  • Attract lapsed users back into the app by emailing credits, discounts, or special offers.

  • Highlight new features or functionality to users with push-disabled to drive reactivation or conversion. Upload GIFs to make it visually clear and compelling.

  • Send long-form content that provides value to users but can't be surfaced through a push message.

Get started

Select an Audience

An Audience is a group of users you specify using up to two behavioral conditions (i.e. activity history as measured by Events and Sessions) and up to five Profile conditions (i.e. user-level properties). If you intend to use Profile Attributes to define an Audience, the Profiles section provides important background.

Audiences can be based on behavior scoped to the device-level or, if your app is assigning an identity to users by passing Localytics a Customer ID, Audiences can be scoped to the user-level. When Audiences are scoped to the user-level, it means Localytics will evaluate a user's total activity across devices based on the Customer ID you have assigned.

You can choose whether all behavioral conditions must be met (AND), at least one of the specified behavioral conditions must be met (OR), or the behavioral conditions must occur sequentially (AND THEN) using the conditional toggle that vertically separates behavioral conditions. Audiences that join Behavioral conditions and Profile conditions drive the most targeted and successful campaigns.

Consider using Audiences to:
  • Target users who abandoned a conversion funnel (using behavioral conditions).
    People who performed event Added to Cart in the past 7 days AND THEN did not perform event Completed Checkout

  • Target users who achieved a milestone exactly 7 days ago (using a Custom Profile attribute).
    People where Registration Date is exactly 7 days ago.

  • Target users whose last observed Session was 30 days ago (using an Auto-Profile attribute).
    People where Last Session Date is exactly 7 days ago.

To illustrate:

Create content & apply a control group

Email messages are extremely flexible. You can use either the Creative Builder within the Localytics UI to construct an email using one of our pre-built responsive email templates - complete with customizable text, images, GIFs, and Calls To Action - or you can generate your own custom creative using HTML, CSS, and Javascript.

Consider using Creatives to:

  • Attract lapsed users back into the app by offering credits, discounts, or special offers.

  • Highlight new features or functionality to users with push-disabled to drive reactivation or conversion. Upload GIFs to make it visually clear and compelling.

  • Send long-form content that provides value to users but can't be surfaced through a push message.

To illustrate:

Schedule and launch

Scheduling campaigns with Localytics is simple but powerful. Our flexible model helps you build anything from a one-off campaign to an automated campaign you can set-and-forget, with frequency caps to ensure you don't over-message users. The interaction of Audiences and Scheduling is particularly powerful - you can create Audiences to power recurring campaigns, where the Audience is refreshed for every execution.

Here is a summary of the features and how to use them:

Campaign Type Feature When to use it
One Time Immediately You have a one-time message you want to send right away
One Time Scheduled You have a one-time message you want to send in the future
Automated Timing You have a message you want to send on a recurring basis (where the qualifying Audience is refreshed just before every send)
Automated Time Zone Delivery You want every user to receive your recurring messages at the same time of day based on the user's local timezone (rather than Localytics delivering all messages simultaneously)
Automated Frequency Since users may be able to qualify for your recurring message more than once (depending on the Audience definition), you want to cap the number of messages a user may receive either within a certain time interval, or ever
Automated Start & Stop You want your recurring campaign to execute from the selected start time until the selected stop time

Consider using Scheduling to:

  • Power a set-it-and-forget-it "drip" campaign. Select an Audience whose first session was 7 days ago and schedule this to execute daily with a frequency cap.
    Send every day at 5:00PM delivered in the user's timezone
    Send only one message ever per device

  • Send a frequency-capped recurring campaign to motivate re-engagement. Select an Audience that hasn't achieved a conversion event in the past 30 days and, since users may enter the Audience more than once, assign a frequency cap to avoid over-messaging.
    Send weekly on Wednesday at 8:00AM delivered in the user's timezone
    Limit to 1 message per 14 days

  • Send messages with highly customized frequency-capping and spacing criteria
    Send every day at 6:00PM delivered in the user's timezone
    Limit to 2 messages per 30 days & Ensure messages are at least 7 days apart

To illustrate:

Do more

A/B testing

Even the best copywriters and app marketers can't predict what content users will respond to best without experimentation. The optimal approach is to test different creatives and let the data tell you which creative users actually prefer.

Localytics makes this dead simple. You can test up to 10 variants - not just an "A" group and a "B" group - and can distribute these variants either equally or assign specific percentages to each variant. Once your campaign is live, you can compare performance for each variant in the campaign performance screen.

Consider using A/B Tests to:

  • Generate multiple hypotheses about the type of content that might succeed and experiment with them.

  • Adjust the distribution of message variants across your Audience. For example, "beta test" a riskier creative by sending it to a small percentage of your Audience.

  • For recurring campaigns, identify winning messages and then modify or delete creatives for unsuccessful variants.

To illustrate:

Deep linking

Your email can optionally include hyperlinks which, if selected, send the user either to an external URL or to a particular screen in your app via a deep link. Importantly, your app must be configured to handle deep links for this to work. For more, see Deep linking in the Key Concepts above.

Your deep link will typically look something like appname://page. Confirm the deep link works independent of Localytics by typing it into a browser on your mobile phone.

Consider using deep linking to:

  • Link customers directly to an in-app destination described in the message, like a product page or article.

  • Point users directly to new features or functionality to drive increased app adoption.

To illustrate:

Personalization

The most compelling campaigns contain personalized content. Localytics powers personalized content by allowing you to store individual user Profiles with default fields like First Name or custom fields you can define like Favorite Category or Exercises Completed. If you intend to personalize messages, read the User Profiles section to understand their full power and flexibility. Personalization utilizes the open-source templating language Liquid, which is explained with more detail in the Liquid templating section.

Localytics creates a user Profile if your app assigns a known identity to users. If a user uses your app without an app-assigned identity, Localytics generates an anonymous Profile tied to the device. In either case, your app can optionally collect observable information about users and pass it to Localytics as a Profile Attribute, which can then be used to personalize messages. To illustrate, if User1234 selects a favorite team, your app can instruct Localytics to store this under a Profile Attribute called Favorite Team and then create push or email messages that dynamically populates the Favorite Team. Similarly, your app can use attributes that are strings, numeric values, dates, or sets of those values. To optimize your personalization strategy, rea more in our User Profiles section to optimize your personalization strategy.

Once your Profile Attributes have been communicated to Localytics, personalizing messages is simple. Click the Profile icon at the top right of the message builder to access the Insert Profile Field menu. You can select any available Profile Attribute to insert it into your message. The scope is set automatically.

Consider using Personalization to:

  • Send emails that are personalized to include the user's name, such as Hey John, this week only save 10%!
    Hey {{ special.first_name }}, this week only save 10%!
    

  • Personalize even further by using a Profile Attribute reporting last item viewed, such as Hey John, this week only save 10% on shoes!
    Hey {{ special.first_name }}, this week only save 10% on {{ app.favorite_category }}!
    

  • Send emails to highlight milestones and create habit loops, such as John, congrats on completing 88 exercises in 2015. Keep it up in 2016!
    {{ special.first_name }}, congrats on completing {{ app.exercises_completed_in_2015 }} exercises in 2015. Keep it up in 2016!
    

To illustrate:

Localization

If you have global users of your app, you should send messages in your users' local language. Localytics automatically detects the language from the settings on a user's device and assigns this as a Profile Attribute. The language is saved as a two-character code using the ISO 639-1 standard. Again, you should review the User Profiles section to understand how Profiles work. Localization uses Liquid templating; for more details read our Liquid templating section.

Achieving Localization is very straightforward. In the same way that you achieve personalization by using Profile attributes to dynamically create messages, you can include instructions that tell Localytics to send different messages based on the language setting on a user's device. A few commonly used languages and their language codes are below, followed by an illustration of how to achieve Localization.

Language Code
English en
French fr
Spanish es

Consider using Localization to:

  • Send messages in a user's native language. For example, Salut, mon amie! for users with French as their device language, Hola, mi amigo! for users with Spanish, and Hello, my friend! as the default for all other users.
    {% if _ll.language == 'fr' %}
    Salut, mon amie!
    {% elsif _ll.language == 'es' %}
    Hola, mi amigo!
    {% else %}
    Hello, my friend!
    {% endif %}
    

  • Send localized messages for the most common foreign languages and use fall-back logic to default to English (or another language) for everyone else.

Liquid templating

The preceding sections covered Personalization and Localization, which are achieved by using special templating to customize messages. This is powered by the templating language Liquid, which can also do much more. Since the data available to use in your templates depends on what Profile data you are tagging, you should review the User Profiles section.

As an example, suppose that your app communicates to Localytics each time an item is added to the cart, resulting in a set of values stored as a Profile Attribute called Items In Cart. Technically, your app will be adding elements to an unordered set which may look like this {Shirt, Socks, Belt, Pants, Shoes}. You could use the Liquid templating language to fetch a random element from the set, e.g. Shirt, or the number of unique items in the set 5, among other things. In short, Liquid templating can be used to extract information from Profile Attributes and insert the resulting value into a message.

Note that if a Profile Attribute(s) specified is not populated for a given user, the Liquid will default to a blank space. To avoid this, include a basic default value as a fallback. See this documentation to learn more. If you want to include an entirely different fallback message in the same campaign to those users, add a condition {% else %} followed by the body of the message. Adding this condition will surface the default message when the Profile Attribute(s) is null for specific users. For more on else / elsif conditions please consult the documentation here.

Consider using Liquid Templating to:

  • Count the number of items that have been captured in a set and display the result in a message, such as You have 5 items in your cart!.
    You have {{ app.items_in_cart | size }} items in your cart!
    

  • Fetch a value from the set and display the result in a message, such as Don't forget the shirt you added to your cart!. Elements within a set don't have a guaranteed order, so be careful if the set order matters for your message.
    Don't forget the {{ app.items_in_cart.first }} you added to your cart!
    

  • Use if-this-then-that logic to construct messages, like Those 5 items in your cart are hot right now. Don't forget to checkout!" Add a default condition to be sent to users that do not have those Profile Attributes defined.
    {% if app.items_in_cart.size == 1 %}
    Don't forget that {{ app.items_in_cart }} in your cart!
    {% elsif app.items_in_cart.size > 1 %}
    Those {{ app.items_in_cart.size }} items in your cart are hot right now. Don't forget to checkout!
    {% else %}
    There are items in your cart. Don't forget to checkout!
    {% endif %}
    

Measure & optimize

Localytics reports on sends, opens, clicks, bounces, unsubscribes, and spam reports. If you send multiple variants, these will be summarized per variant (i.e. creative).

To illustrate:

Inbox campaigns

To run Inbox campaigns you will need to build a page within your app where the inbox will live (iOS and Android).

App Inbox allows you to deliver messages to users through a dedicated inbox inside your app, offering the perfect way to maintain a consistent flow of engaging content. These differ from push and in-app campaigns in three important ways: (1) they allow users to consume content at their leisure, rather than being interrupted inside or outside the app; (2) they can persist after being read, so users can revisit content; and (3) they are scrollable, accommodating longer form content.

Once setup is complete, you create and manage inbox campaigns through the Localytics dashboard, with no additional development work required.

Consider using App Inbox to:

  • Send a promotion, e.g. include a coupon code inside a user’s inbox for the duration of the sale or offer.

  • Encourage upgrades, e.g. send messages reminding users to upgrade to the newest app version.

  • Include longer form content that isn't suitable for push or in-app, e.g. news stories or significant announcements.

Get started

Select an Audience

An Audience is a group of users you specify using up to two behavioral conditions (i.e. activity history as measured by Events and Sessions) and up to five Profile conditions (i.e. user-level properties). If you intend to use Profile Attributes to define an Audience, the Profiles section provides important background.

Audiences can be based on behavior scoped to the device-level or, if your app is assigning an identity to users by passing Localytics a Customer ID, Audiences can be scoped to the user-level. When Audiences are scoped to the user-level, it means Localytics will evaluate a user's total activity across devices based on the Customer ID you have assigned.

You can choose whether all behavioral conditions must be met (AND), at least one of the specified behavioral conditions must be met (OR), or the behavioral conditions must occur sequentially (AND THEN) using the conditional toggle that vertically separates behavioral conditions. Audiences that join Behavioral conditions and Profile conditions drive the most targeted and successful campaigns.

Consider using Audiences to:
  • Target users who abandoned a conversion funnel (using behavioral conditions).
    People who performed event Added to Cart in the past 7 days AND THEN did not perform event Completed Checkout

  • Target users who achieved a milestone exactly 7 days ago (using a Custom Profile attribute).
    People where Registration Date is exactly 7 days ago.

  • Target users whose last observed Session was 30 days ago (using an Auto-Profile attribute).
    People where Last Session Date is exactly 7 days ago.

To illustrate:

Create content

Inbox campaigns consist of two pieces of creative: a listing and a main body. The listing appears on the inbox page within your app and the main body is the full-page content that appears when a user clicks on the listing. Optionally, you can include a listing that is not paired with a main body.

Inbox listings can include a thumbnail image, for which we recommend using a 64x64 PNG, JPG, or GIF file. The Listing preview shown in the Creatives page depicts a generic preview; if your developer has customized your inbox listings (e.g. colors, fonts, etc.), the listing preview will not reflect these customizations. Inbox listings can also include additional instructions in the form of key-value pairs, which are ideal for deeplinking users to other pages in your app.

The main body for inbox messages can be generated codelessly using the Localytics Creative Builder. When creating the main body, you'll need to upload a header image that will span the top width of the main body. We recommend a 600x100 PNG, JPG, or GIF. You may also choose to add a call to action button by checking the box Include action button.

Alternatively, you can generate your own custom creative using HTML, CSS, and Javascript which allows for a more branded look and the ability to add multiple images or buttons. You can upload your creative in one of two formats: (1) a .zip file that must contain an index.html file along with any referenced CSS or images, or (2) a single HTML file with all CSS and base64-encoded images embedded inline. We recommend using a responsive template like this to optimize for different screen sizes.

Consider using Creatives to:

  • Recommend suggested content, e.g. use the inbox to share personalized content based on articles read, videos watched, songs played.

  • Highlight feature announcements, e.g. send a message promoting a new app feature.

  • Cross-promote other apps, e.g. send a message promoting another app in your portfolio.

To illustrate:

Schedule and launch

Scheduling inbox messages is dead simple. You have to only decide when the message should first be available to qualifying end users that open the app and when the message should cease to be available to those users, i.e. the expiration date of the message.

Consider using Scheduling to:

  • Send messages right away to end-users (which will arrive during the next connected Session).

  • Set expiration dates for your Inbox messages.

To illustrate:

Do more

A/B testing

Even the best copywriters and app marketers can't predict what content users will respond to best without experimentation. The optimal approach is to test different creatives and let the data tell you which creative users actually prefer.

Localytics makes this dead simple. You can test up to 10 variants - not just an "A" group and a "B" group - and can distribute these variants either equally or assign specific percentages to each variant. Once your campaign is live, you can compare performance for each variant in the campaign performance screen.

Consider using A/B Tests to:

  • Generate multiple hypotheses about the type of content that might succeed and experiment with them.

  • Adjust the distribution of message variants across your Audience. For example, "beta test" a riskier creative by sending it to a small percentage of your Audience.

  • For recurring campaigns, identify winning messages and then modify or delete creatives for unsuccessful variants.

To illustrate:

Deep linking

Deep linking allows you to direct users who interact with your inbox messages to a particular screen within the app. Importantly, your app must be configured to handle deep links for this to work. For more, see Deep linking in the Key Concepts above.

You can integrate deep linking into your inbox messages in a few different ways. If you choose to have a listing that is not paired with a main body, you can use key-value pairs to link users to another location within your app, similar to how deep linking is achieved with push messages. Additionally, you can communicate additional key-value pairs with your message. Users will not see this data, but your app can use it for anything you want.

Alternatively, you can have a Call To Action in the main body which, if selected, sends the user to either an external URL or to a deep linked screen in your app. If your app is configured to handle deep links, you simply insert the deep link in the Link / Action field.

Consider using deep linking to:

  • Link customers directly to an in-app destination described in the message, like a product page or article.

  • Point users to new features or functionality.

To illustrate:

Measure & optimize

Now that you've sent your campaign and have data flowing into Localytics, you can begin to see how your users have been interacting with the message. This is where that campaign's Goal and conversion event come into play. When navigating to the campaign performance page, you are instantly confronted with a hero metric associated with your Goal. This metric, along with many others surfaced in sections labeled "Overview" "Insights" and "A/B Test" gives you a clear picture of the True Impact your campaign had on your users. Use these metrics to optimize your current and future campaigns to avoid adverse effects from irrelevant campaigns. To learn more about the reported metrics, see Performance metrics under Key Concepts.

Places campaigns

It is important to understand geofence and Places management before creating a messaging campaign using Places. For more information on how to manage these real-world areas, read the section located in Analytics on Places & geofences.

To use Places, make sure your app is configured according to our general recommendations (iOS and Android) and for Places specifically (iOS and Android). You'll need a subscription to Places to use this feature.

Consider using Places campaigns to:

  • Let users attending real-world sporting events know about cross-promotions at the arena.

  • Give users a travel update when they reach an airport.

  • Notify users that they have available coupons or credit when they walk by a store. (You can use Profiles to store information about user-level offers or credit).

Get started

Select an Audience

An Audience is a group of users you specify using up to two behavioral conditions (i.e. activity history as measured by Events and Sessions) and up to five Profile conditions (i.e. user-level properties). If you intend to use Profile Attributes to define an Audience, the Profiles section provides important background.

Audiences can be based on behavior scoped to the device-level or, if your app is assigning an identity to users by passing Localytics a Customer ID, Audiences can be scoped to the user-level. When Audiences are scoped to the user-level, it means Localytics will evaluate a user's total activity across devices based on the Customer ID you have assigned.

You can choose whether all behavioral conditions must be met (AND), at least one of the specified behavioral conditions must be met (OR), or the behavioral conditions must occur sequentially (AND THEN) using the conditional toggle that vertically separates behavioral conditions. Audiences that join Behavioral conditions and Profile conditions drive the most targeted and successful campaigns.

In addition to the Audience (defining who is eligible to see a message), Places campaigns have as a schedule and trigger (which defines when/where they will see it).

Consider using Audiences to:
  • Target users who abandoned a conversion funnel (using behavioral conditions).
    People who performed event Added to Cart in the past 7 days AND THEN did not perform event Completed Checkout

  • Target users who achieved a milestone exactly 7 days ago (using a Custom Profile attribute).
    People where Registration Date is exactly 7 days ago.

  • Target users who haven't recently visited any of your stores.
    People who did not perform event Localytics Place Visited in the past 7 days.

To illustrate:

Create content

Places notifications are most effective if you choose your words carefully to motivate user action. Language that conveys urgency (e.g. time-sensitive deals) and relevancy (e.g. sending this to deal-hunters) will naturally be better at driving latent users back to your app or into the nearby places you care about.

Consider using Places creatives that:

  • Include information specifically relevant to the Places that triggered the message.
    Welcome to Coachella - check out our Day One playlist and share it with your friends!

  • Tell users about offers or content personalized for the specific audience you're targeting.
    Jet-setting around the world? Check out our tips for keeping up your running routine while you're on the road.

  • Provide time-sensitive content, like deals or breaking stories.
    Ready for Spring? Take 10% off in-store this week only with the code SAVE10.

To illustrate:

You can also integrate deep linking into your Places messages. When defining your creative, you can add key-value pairs to link users to another location within your app, similar to how deep linking is achieved with push messages. Users will not see this data, but your app can use it for anything you want.

Schedule and launch

Scheduling a Places message is different than scheduling a push message because unlike push messages, in-app messages are only displayed when a user triggers a specific geofence. As a result, you don't decide when to send out the message, you simply set rules for when and where the message should display. If users in the qualifying Audiences don't trigger a particular geofence while the campaign runs, they won't receive the Places message. Here is a summary of the features and how to use them:

Feature Definition
Places to Target For users in the qualifying Audience, the particular geofences that will cause the Places message to be displayed. If you have multiple geofences grouped under a single label, you can choose the label to target all matching Places at once.
Trigger on Enter If a user in the qualifying Audience goes within the the geofence's radius, the message will be shown immediately (subject to the mobile OS's detection, which may introduce delays of up to a few minutes).
Trigger on Exit If a user in the qualifying Audience leaves the geofence's radius, the message will be shown immediately (subject to the mobile OS's detection, which may introduce delays of up to a few minutes).
Schedule The time range over which the campaign should be active.

Consider using Places triggers and Scheduling to:

  • Trigger messages when the user enters a particular individual geofence.

  • Trigger messages at a set of geofences matching a particular label you have configured, like "Franchises" or "Arenas."

  • Set up a campaign around a concert or sporting event active only for the 24 hours before and after the event.

To illustrate:

Do more

Historical Places Push targeting

Besides realtime Places campaigns, Localytics Places can be used for messaging on powerful combinations of app and historical geographic behaviors. Localytics Push Campaigns are segmented and sent server-side based on historical Analytics - including Places Events - or user Profiles.

To create a historically-targeted Push Campaign, go to Messaging, click the green "+", and select "Push" from the dropdown. Then choose a new audience with behavioral targeting using the Localytics Place Entered or Localytics Place Visited (Exit) event.

Consider using Push Campaigns with historical audiences when:

  • Places behavior is more about segmentation or demographics than timeliness for the campaign.
    Like New England football? Check out the latest Patriots news.
  • The behavior you want to drive in the app would interfere with their experience if they received the message while they were still at the physical location.
    Next time you need your shopping fix, you can buy in-app with our Order Ahead functionality and skip the lines!

A/B testing

Even the best copywriters and app marketers can't predict what content users will respond to best without experimentation. The optimal approach is to test different creatives and let the data tell you which creative users actually prefer.

Localytics makes this dead simple. You can test up to 10 variants - not just an "A" group and a "B" group - and can distribute these variants either equally or assign specific percentages to each variant. Once your campaign is live, you can compare performance for each variant in the campaign performance screen.

Consider using A/B Tests to:

  • Generate multiple hypotheses about the type of content that might succeed and experiment with them.

  • Adjust the distribution of message variants across your Audience. For example, "beta test" a riskier creative by sending it to a small percentage of your Audience.

  • For recurring campaigns, identify winning messages and then modify or delete creatives for unsuccessful variants.

To illustrate:

Deep linking

Deep linking allows you to direct users who open a Places message to a particular screen within the app. Importantly, your app must be configured to handle deep links for this to work. For more, see Deep linking in the Key Concepts above. If operating on SDK 4.0 and above, you will no longer need to write code in your app to manually parse key/value pairs for opening deep links. As long as you have the custom URL scheme registered, the SDK will automatically tag the opened event and launch the deep link. For earlier versions of the SDK, the following will apply.

You achieve deep linking with Localytics by attaching additional instructions to Places messages in the form of key-value pairs. These are invisible to end-users but are received by your app. Your app should be configured such that upon receiving a particular Key, it will fetch the corresponding Value and treat it as a deep link. The Key for your app will likely be a different word than in the illustration below, but your app should have some key that instructs it to properly handle deep links. If you don't know this, ask a developer in your organization.

To include a deep link as part of a Places message, go to the Creatives screen of the message builder, locate the Advanced section, and activate it. This allows you to enter key-value pairs. In the Key field, enter the key that tells your app to handle the corresponding Value as a deep link. In the Value field, enter the deep link, which usually will look something like appname://page. Confirm the deep link works independent of Localytics by typing it into a browser on your mobile phone. If it works successfully and you've included the appropriate Key, users that receive the Places message and open it will be directed to the deep linked screen.

Consider using deep linking to:

  • Send your users to a specific story, product, or profile within your app.

  • Send users to a particular point within an activation or conversion funnel, e.g. to the registration page.

  • Dynamically generate a deep link with Profile Attributes to provide maximum personalization, e.g. sending each user to the product that they last viewed.

To illustrate:

Measure & optimize

Now that you've sent your campaign and have data flowing into Localytics, you can begin to see how your users have been interacting with the message. This is where that campaign's Goal and conversion event come into play. When navigating to the campaign performance page, you are instantly confronted with a hero metric associated with your Goal. This metric, along with many others surfaced in sections labeled "Overview" "Insights" and "A/B Test" gives you a clear picture of the True Impact your campaign had on your users. Use these metrics to optimize your current and future campaigns to avoid adverse effects from irrelevant campaigns. To learn more about the reported metrics, see Performance metrics under Key Concepts.