News Feed

The Appboy News Feed is a targeted, dynamic stream of rich content. It offers a powerful way to reach users with continuously updated content that does not require additional development work. The feed includes the ability to deep link within the app, link directly to the App Store, Google Play etc. or direct users to a web view.


Note: This unique Appboy UI element must be enabled during integration. Make sure to discuss it with your developers.

News Feed Cards

News Feed cards allow a non-technical marketer to provide new content to a user in-app on a daily basis. This content can be targeted at various segments and scheduled in exactly the same way as other Appboy messages. Each card consists of a title, short summary, an image and optionally a URL.

Note: Appboy improves load times by using a global CDN to host all News feed images.

Note: News Feed image uploads must be less than 5MB and either JPG, PNG, or GIF.

Standard News Feed Cards

Classic Cards


Standard news feed cards consist of:

  • 110x110 image
  • Title
  • Body Text
  • Link (In-App/Web)

Captioned Image Cards


Captioned Image cards consist of:

  • 600x450 image
  • Title
  • Body Text
  • Link (In-App/Web)


Banner cards consist of:

  • 600x100 image
  • Link (In-App/Web)

Cross Promotions Cards


Cross promotion cards consist of:

  • Cross Promoted App Advertisement
    • Note:You may not advertise apps which are the property of companies other than your own.

News Feed Ordering

  • Cards in the feed are ordered first by whether or not they have been seen by the user, unseen items are at the top of the feed.
    • A card is considered read if it has received an impression in the feed.
    • Impressions are only counted if the card is viewable in the feed (ie, if a user does not scroll down to read a card, an impression is not counted).
  • Cards are then ordered by the date and time of creation, where more recent items are first.

Use Cases

  • Advertising app updates
  • “Drip Marketing” Welcome Campaigns
  • Teasing out a user’s willingness to pay.
    • Offering a schedule of steadily increasing discounts using targeted News Feed cards can help you see exactly how much your service is worth to different user segments.
  • Achievements and badges
    • When a user completes a noteworthy task or takes a desired action after being targeted by a marketing campaign, you can isolate that segment in order to recognize their accomplishment with a News Feed card.
      • You might even want to tie a specific reward to this acknowledgement such as an in-app discount.
  • Prompting users to share to various social networks.
  • Highlighting other apps or content your company has created via cross-promotion cards.
  • “Deep-linking”
    • You can use protocol URLs to point users at any resource housed within your app.
    • For example, a video messaging app might want to have a News Feed card point at a video that is elsewhere within the app.
    • You could even potentially use this to design your entire app navigation scheme around our News Feed!

Best Practices

  • Use the News Feed to help make your app feel dynamic and regularly updated by showcasing new content.
  • Provide announcements that encourage interaction, highlight news and promote sales.
  • Take advantage of the visual space by incorporating images and graphics that stand out.
  • Customize the News Feed to reflect your brand’s identity and create a seamless app experience.
  • Keep in mind that targeted modules can immediately inspire action within the app, and protocol URLs can direct attention to different section of the app, encouraging specific behavior like reviews, purchases and more.
  • Develop a schedule for campaigns like onboarding etc., and determine the proper cadence and frequency of messaging.
  • Diversify the type of templated card announcements to keep the News Feed interesting
  • Strengthen and reinforce campaigns by integrating other multi-channel messages in the News Feed
  • Segment users and tailor certain announcements to inspire specific action.

Analytics Dashboard

Similar to scheduled campaigns, the News Feed tool comes with an analytics dashboard to monitor impressions, clicks, and clickthrough rates. Clicking on a specific News Feed message in your dashboard brings up a host of visual analytics to sort through. At the top of the page, you can select your data date range and see a quick visualization of your most important metrics. Additionally, you can see specifics about this News Feed message, such as when it was sent and who it was sent to.


By scrolling down the page, you can see a larger breakdown of your clicks and impressions day-by-day. Total clicks/impressions are easily compared with unique clicks/impressions through line charts, while a clickthrough rate is presented as an interactive bar chart.


Feed Impression Segments

Appboy automatically tracks when users view the feed and how many times they have viewed it. There are two filters available:

  • Last Viewed News Feed
  • News Feed View Count

‘Last Viewed News Feed’ is an effective way to use other channels to draw users back into the feed. This can be easily done with push and in-app notifications. Appboy has seen over 100% increases in news feed impressions with effective targeting. As awareness of the feed increases, these benefits are sustained.

‘News Feed View Count’ can be used to target users who have never viewed the feed or seldom viewed the feed to encourage more impressions of your cards.

Consider, using these filters in tandem or with other filters to create an even more targeted call to action.

Clicked Card Segments

You can create segments based on how users have interacted with specific cards in the feed. The filter is in the Retargeting section of the filter list and called Clicked Card.

Has Clicked Card

  • Works well to retarget users who have clicked on a card, but not followed through on your call to action.
  • It is also useful to retarget users with related content that may of interest to them.

Has Not Clicked Card

  • This version of the filter can be used to automatically remove cards from a user’s feed after they click the card.
    • To set this up, after you create a card go back and edit the target segment to include ‘Has not clicked YOUR NEW CARD’.
    • After a user clicks the card, the card will automatically leave the feed when the user’s next session starts.
    • Avoid over-using this targeting because user’s may end up with empty feeds. Best practice is to use a combination of static and automatically removed content.
  • It also works well to retarget users who do not click on a card to follow up with another call to action.

has not clicked card

Integration Example


Shape uses the News Feed to deliver relevant information to its users. The SDK integration remains entirely transparent: there is no mention of Appboy in the app itself and the News Feed module has a design aesthetic that is consistent with the rest of the app.

You can view more examples of News Feeds in our Client Integration Gallery.


Being able to communicate with your users whether or not they’re “in-app” can be extremely useful, making push notifications a powerful tool. But with power comes responsibility, and used incorrectly, they can be potentially invasive. To escape being pushy, follow the best practices and use cases below to make sure your push messages inspire engagement rather than annoyance.

Message Format


  • Message Length:
    • iOS Lock Screen: 110 Characters
    • iOS Notification Center: 110 Characters
    • iOS Banner Alert: 62 Characters
    • iOS Pop Up Alert: 235 Characters
  • Payload Size: 2 kilobytes
  • Number of Lines:
    • iOS Lock Screen: 4 Lines
    • iOS Notification Center: 4 Lines
    • iOS Banner Alert: 2 Lines
    • iOS Pop Up Alert: 8 Lines
  • Customizable UI: No
  • Deep Link Capable: Yes

iOS Example


iOS Large Image Format Example

iOS Rich Push

iOS Rich Push On Hard Push


  • Message Length: Depends on Device
  • Payload Size: 4 kilobytes
  • Number of Lines: 1 Line Preview, Expandable to 8
  • Customizable UI: Yes
  • Deep Link Capable: Yes

Android Example


Large Image Format Example

Large Android Image

  • Large image notifications display best when using an image of at least 600x300 pixels

Windows Universal

  • Message Length: Depends on Device
  • Payload Size: 3 kilobytes
  • Number of lines: 1-3 Lines
  • Customizable UI: No
  • Deep Link Capable: No

Windows Universal Example


Windows Phone 8

  • Message Length: Varies. If only title is set, about 40 characters can be displayed. If only content is set, about 47 characters can be displayed. If title and content is set, then about 41 characters can be displayed.
  • Payload Size: 5 kilobytes
  • Number of lines: 1
  • Customizable UI: No
  • Deep Link Capable: No

Windows Phone 8 Example


Use Cases

Attracting New Users

Initial Onboarding

Until users takes the initial steps towards using your app (such as registering an account), their value is severely limited. Use push notifications to urge users to complete these steps so they can begin using your app in full.

First Purchases

After users are comfortable using your app, you can use push notifications to help convert them into in-app purchasers.

Re-Engagement Campaigns

If you don’t have an email address and your users aren’t using the app, this may be the only hope you have of bringing them back. Be warned that these can be taken negatively if they’re poorly timed or not relevant to the user.

New Features

Push notifications can be effective in notifying disengaged users about new features that might attract them back to your app.

Time-Sensitive Offers

If you have a clock ticking on an offer, sometimes Push is a great way to let your users know about it before it expires. These messages generally carry a high sense of urgency and are optimal for reminding recently-lapsed users about your app.

Example: Maybe your app is a game and you offer your users an in-game currency bonus if they maintain a streak of playing the game daily. Alerting a user that that streak is in danger of being broken could be a reasonable push if they’ve exceeded a certain number of days.

For more information on re-engaging lapsed users, see our Quick Wins page on the topic.

Note:Push should be formatted in plain-text. Key-value pairs allow for “Deep-linking” to external URLs or in-app features.

Best Practices

Develop a Push Cadence

Developing a steady rate at which you communicate with your users is important.

Push can seem invasive to an end-user if used improperly. For example, if a user received a push for the first time ever 20 days after they last used the app they’re not going to be happy. They are more likely to uninstall than re-engage.

If you routinely and positively communicate with your users via push over time, they will come to associate positive experiences with your messages.

If you send a push 20 days since their last session they might just remember the good ol’ days and come back!

Higher standards for content and relevancy with Push.

Push notifications can be abrasive. They interrupt the flow of whatever the user is doing whether or not they are within an app. If you’re going to tell a user to drop what they’re doing for your message, you should have a good reason.

Time-sensitive and location-based notifications are best sent via Push Notifications; e.g “Severe weather coming, head for a covered area” or “Flash sale starts now until Wednesday at 11:59 PM ET.”

Detailed Push Preferences

Push notifications should be treated with care to target users with timely and relevant notifications. Appboy will collect useful device and usage information that can be used to target relevant segments. This should be supplemented with custom events and attributes specific to your app. Using that data you can carefully target messages to increase open rates and decrease instances of users disabling push.

Circa Message Settings

Additionally, you can create a settings page in your app that allows users to directly tell you which notifications they want to receive. This can be set as a boolean attribute in Appboy that corresponds to the app setting status. For example, a news app could have subscription settings for the following:

  • Breaking News
  • Sports News
  • Politics
  • Business News

When the news app wants to create a campaign targeting only users interested in Politics, they simply add the ‘Subscribes to Politics’ attribute filter to the segment. When set to true, only users who subscribe to notifications will receive them.

Example of Opt-In Prompts

The general stats that you see for push enabled will relate to whether the user has approved notifications with the OS. If users disable notifications on iOS they’ll be automatically removed from our system since Apple won’t allow the push token to be sent. Android subscribes users to notifications by default.

Documentation for setting custom attributes:

Android Push Priority

Android push notifications provide the option of dictating where notifications are displayed relative to other apps’ notifications. When composing the message for your push campaign, select “Notification Priority” in the settings tab to set a priority for your notification.

Dashboard Push Priority Location

The provided options correspond to different priorities with which the notification will be displayed if a receiving user has multiple notifications. A more in-depth explanation of Android Push Priority and the priority options can be found here.

Android Push Category

Android push notifications provide the option to specify if your notification falls into a predefined category. The Android system UI may use this Category to make ranking or filtering decisions about where to place the notification in the user’s notification tray.

Dashboard Push Priority Location

Category Description
None Default
Alarm Alarm or timer
Call Incoming call (voice or video) or similar synchronous communication request
Email Asynchronous bulk message (email)
Error Error in background operation or authentication status
Event Calendar event
Message Incoming direct message (SMS, instant message, etc.)
Progress Progress of a long-running background operation
Promotion Promotion or advertisement
Recommendation A specific, timely recommendation for a single thing
Reminder User-scheduled reminder
Service Indication of running background service
Social Social network or sharing update
Status Ongoing information about device or contextual status
System System or device status update. Reserved for system use.
Transport Media transport control for playback

See Android Documentation for more info

Android Push Visibility

Android push notifications provide an optional field to determine how a notification appears on the user’s lock screen. Notifications can be set to appear on the lock screen (Public), to appear with the message “Contents Hidden” (Private), or to be hidden entirely (Secret).

Additionally, Android users can override how push notifications appear on their lock screen by changing the notification privacy setting on their device. This setting will override the Visibility from the push notification.

Dashboard Push Priority Location

Note that regardless of the Visibility, all notifications will be shown on the user’s lock screen if the notification privacy setting on their device is Show all content (default setting). Likewise, notifications will not be shown on their lock screen if their notification privacy is set to Do not show notifications. The Visibility only has an effect if their notification privacy is set to Hide sensitive content. In that case, the notification will be displayed as follows:

  • Public - Notification is shown on the lock screen
  • Private - Notification is shown with “Contents hidden” as the message
  • Secret - Notification is not shown on the lock screen

The Visibility has no effect on devices earlier than Android Lollipop 5.0.0; all notifications will be shown on such devices.

See Android Documentation for more info

Creating Custom Opt-In Prompts

Even if you keep best practices in mind when designing and sending push messages, some users may turn them off before realizing any of the benefits that they would provide. Users may have had previous negative experiences with spammy, irrelevant push messages from other apps and now will decline any request to receive push messages from any app.

Furthermore, the legal environment surrounding electronic messaging in some locales is becoming increasingly strict. For example, Canada’s Anti-Spam Legislation requires explicit consent from users to send them marketing-related messages. Other countries may make similar legislative moves, so acquiring that explicit consent from your users should be a priority. Not having a double opt-in system in place now may leave you with time-consuming migration to a compliant system in the future.

Creating an opt-in prompt that clearly lists and demonstrates the benefits of push can only help you, given the evolving attitudes of both consumers and governments toward push messaging. Instead of ambushing your users with a permission request when they open the app for the first time, explain the benefits of your push messages and THEN ask for permission.

Breaking News 1

Breaking News 2

Adding a simple pop-up to prompt user action can allow you to effectively request permission from your users more than once, if needed. Relying on iOS’s permission request alone means that most users will never think twice about enabling your push messages.

For example, the Fandango app has a pop-up that states the benefits of enabling push notifications in a clear and concise manner. After recieving this notification, users have enough information to decide if they will find Fandango’s pushes valuable and can act accordingly.


Another example of an app that does a great job with custom opt-in prompts is textPlus. Upon downloading textPlus, a user receives a pop-up prompt that explains the benefits of push notifications and walks the user through the process of enabling them.


After the user clicks “Next,” the user receives the real iOS push prompt. If the user doesn’t enable push notifications at this stage, then he will have to enable them in Settings. textPlus makes this easier for users to do by featuring a reminder on their Inbox page.


If users click “Turn on,” they are presented with detailed steps for how to enable push notifications. This removes some of the effort involved in turning on push notifications


Another app that does a wonderful job of priming its’ users to accept push notifications is Hopper. See their Medium article on how to best onboard when it comes to push.

Note: If you’ve implemented a custom push prompt as described above in an iOS app, make sure that you’re reregistering with APNs every time the app runs after they grant push permissions to your app. Apple advises this as device tokens can change arbitrarily.

Additional information on managing user subscriptions is available here.

Sunset Policies

Even when you make sure to send only relevant, timely push notifications, some users may still be unresponsive to them and find them spammy. If a user shows a history of repeatedly ignoring your push notifications, it’s a good idea to stop sending them pushes before they become annoyed with your app’s communications or uninstall your app altogether. To do this, create a sunset policy that eventually stops sending push notifications to users who haven’t had a direct or influenced open for a long period of time. You can read about the advantages of a sunset policy and learn how to create one within our platform here.

Before you stop sending push notifications to a segment of users, you should deliver one final notification that explains why they will no longer receive pushes and gives them a chance to demonstrate their interest in continued pushes by opening that notification. After the sunset policy goes into effect, use an in-app message and/ or Newsfeed card to remind these users that while they will no longer receive pushes, in-app messaging channels will continue to deliver interesting, helpful information.

Although you may be reluctant to stop sending pushes to users who originally opted in to them, keep in mind that there are other messaging channels that can more effectively reach these users, especially if they have previously ignored your pushes. If the user opens your emails, then email campaigns are a good way to reach him outside of your app. If not, then in-app messages and News Feed cards are the best way to deliver content without risking the user uninstalling your app.

Conversion Tracking

When assigning conversion events to a push campaign, you’ll have the option to track app opens for a certain period after the campaign is received. Setting app opens as a conversion event provides different insight from the results statistics you normally receive after after a push campaign. While all push campaigns results break down a message’s direct opens and opens (which include both direct and influenced opens), conversion tracking will track any type of open, whether it is direct or influenced.

In addition, by using the conversion event “opens app,” you are tracking app opens that occur before that conversion deadline (for instance, 3 days). This differs from an influenced open in that the time a user has to register an influenced open can vary from individual to individual, and is on each user’s past engagement behavior. For more information, see this deep dive on influenced opens.

Push Reporting

The Appboy SDK provides you with a detailed report of each of your push campaigns. Navigate to the ‘Campaigns’ tab on your dashboard and click on the ‘Details’ tab of your desired campaign as shown below:

Campaign Details

On this page, you will be able to comprehensively view and analyze the success of your campaign in an organized format.

Campaign Data

Campaign Data

Campaign Data

Statistic Description
Bounces The push notifications sent to these users were undeliverable. These users have been automatically unsubscribed from all future push notifications. See Bounced Push Notifications.
Direct Opens Instances in which a user opened your app by interacting directly with a push notification.
Opens Instances including both Direct Opens (defined above) and Influenced Opens in which the Appboy SDK has determined, using a proprietary algorithm, that a push notification has caused a user to open the app.

Note: Delivery of notifications is a “best effort” by APNs. It is not intended to deliver data to your app, only to notify the user that there is new data available. The important distinction is that we will display how many messages we successfully delivered to APNs, not necessarily how many APNs successfully delivered to devices.

Bounced Push Notifications

Apple Push Notification Service

Bounces occur in the APNs when a push notification attempts delivery to a device that does not have the intended app installed. The APNs provides a feedback service that stores a list of device tokens, where a device’s token is added to the list when a bounce occurs.
Note: Push notifications that expire before delivery are not considered as failed and will not be added to the feedback service.

Google Cloud Messaging

GCM bounces could occur in three cases:

  • Uninstalled Applications

When a message attempts delivery to a device and the intended app is uninstalled on that device, the message will be discarded and the device’s registration ID will be invalidated. Any future attempts at messaging the device will return a NotRegistered error.

  • Backed Up Applications

When an application is backed up, its registration ID could become invalid before the application is restored. In this case, GCM will no longer store the application’s registration ID and the application will no longer receive messages. As such, registration IDs should not be saved when an application is backed up.

  • Updated Applications

When an application is updated, the previous version’s registration ID may no longer work. As such, an updated application should replace its existing registration ID.

For more information, refer to the Google Developers documentation on GCM.

In-App Messages

Message Types

With the ability to leverage multiple in-app message formats, you can now choose a layout that best suits your content and campaign goal. Because these formats look and interact with your users differently, they are best suited for different use cases. Here’s some guidelines and ideas to help you choose the right message type:


These are the most engaging, but also the most intrusive since they cover your user’s entire screen. They are great for displaying large, rich images, and can be useful in conveying very important information, such as crucial new features and expiring promotions. Since they are more disruptive of the user experience, use these sparingly for top priority content.

Full-Screen Message

Customizable Features

  • Header and body text
  • A large image
  • Up to two call to action buttons with separate on click behavior and deep links
  • Different colors for the header and body text, buttons and background
  • Key/value pairs

These messages aren’t as intrusive as full-screen messages, as they still allow users to see part of your app’s UI. Since they still contain buttons and images, modal messages may be a better option than slideups if you desire a more interactive, visual campaign. These are great for medium priority content, such as app updates and non-urgent deals and events.

Modal Message

Customizable Features

  • Header and body text
  • An image or customizable badge icon
  • Up to two call to action buttons with separate on click behavior and deep links
  • Different colors for the header and body text, buttons and background
  • Key/value pairs

Traditional Slideup

These are the least intrusive message type, though they can be more or less attention-grabbing depending on your usage of colors and badge icons. This may be the message format to use when onboarding new users and directing them towards particular in-app features, as they don’t pause the app experience and allow for continuous exploration.

Slideup Message

Customizable Features

  • Body text
  • An image or customizable badge icon
  • Different colors for slideup background, text and icon
  • Message close behavior
  • Slideup position (top or bottom of the app screen)
  • Key/value pairs

HTML5 Custom Message

While Appboy’s out-of-the box in-app messages can be customized in a variety of ways, you can gain even greater control over the look and feel of your campaigns using messages designed and built using HTML5. With some simple configuration, you can unlock custom functionality and branding to match any of your needs.

HTML5 In App Message

Select the “Custom HTML” message type in your in-app message campaign composer. From here, you’ll see a field to input the HTML for your custom in-app message, as well as a file uploader section. This uploader accepts zipped files that should include all of the assets your HTML references (fonts, images, styles, etc.). Since the assets file and HTML code are uploaded separately, it should not be expected that the HTML will automatically populate per asset file upload. Also, as we do not currently support a preview of your HTML in-app messages, we recommend sending yourself a test HTML message before launching this type of campaign to your users.

HTML5 in-app messages allow for greater control over the look and feel of a message, and anything supported by HTML5 is also supported by Appboy. For example, Soundcloud uses HTML5 in-app messages to conduct a user satisfaction survey:


HTML in-app messages can trigger custom Appboy actions when users click on elements with links. The supported link schemes are:

Supported Scheme Corresponding Action Supported Query Strings
Normal Web URL or Deep Linking For web URLs, Appboy will open the new content of the link in a webview within your app by default, or in an external browser when query abExternalOpen is true. The HTML5 in-app message will be dismissed before opening the link. For deep linking, Appboy will open your URL regardless of the value of abExternalOpen. abExternalOpen and abButtonId
appboy://close Appboy will dismiss the HTML in-app message. This click won’t be counted in analytics. None
appboy://feed Appboy will dismiss the HTML in-app message and display a modal News Feed. abButtonId
appboy://customEvent Appboy will log a custom event and will NOT dismiss the HTML in-app message. name
All additional queries will be set as properties of the custom event.

You can customize your link actions by appending the optional URL query strings below to your link:

Query String Name Value Action
abExternalOpen {true, false} When this query string parameter is absent or set to false, Appboy will try to open the web link inside the host app; otherwise, the web link is opened in an external browser.
abButtonId {0,1} Appboy will use the value specified as the button’s ID for analytics tracking
( *
name Arbitrary string This represents the custom event name for use with appboy://customEvent
For example: appboy://customEvent?name=eventName

*Analytics tracking is enabled by default for all links that have the abButtonId query (see above). A link with abButtonId=0 will be represented as Button 1 on the Dashboard, while a link with abButtonId=1 will be represented as Button 2.


  • appboy://close
    • sample close button: <a href="appboy://close">Close</a>
  • appboy://feed?abButtonId=0
  • appboy://customEvent?name=eventName&property1=value1&property2=value2
    • This would log an event called eventName with the properties property1=value1 and property2=value2.

If you are interested in customizing your in-app messages, please make sure your design or development team is aware of these parameters.

HTML5 In App Message Templates

We’ve designed a set of six HTML5 in app messages templates to help you get started. Check out our Github repository which contains detailed instructions on how to use and customize these templates for your needs.

Customizable Features

  • Fonts
  • Styles
  • Images + Videos
  • On-click behaviors
  • Interactive Components

In-App Message Specs

Character and Image Limits:

  Slideup Modal Full-Sceen
Max Character Count 140 140 240
Max Image Size 5MB 5MB 5MB

iPhone 5 Specs:

iPhone 5 Specs

iPhone 6 Specs:

iPhone 6 Specs

In-App Message Behavior

How to Create an In-App Message

In-app messages are created on the dashboard in 3 ways: (1) messaging campaigns, (2) attached to news feed items and (3) the Messaging API.

In-App Message Delivery Rules

With the move away from original in-app messages, Appboy released support for in-app messages triggered off of specific actions. This allows for in-app messages to be delivered on any screen, any user session, or after any specific user action. So long as a custom event is logged via the SDK, it can be used to trigger an in-app message at any point in a user flow.

Messages are sent based on the start date/time that was listed in the campaign creator. If two in-app messages should be delivered at the same time, you can set a priority to determine the orider in which the messages should display.


Use Cases

Simple and quick no-action-required messages are best sent via in-app messages.


  • Quick tour of new app features.
  • Welcoming users back after a long absence.
  • Reminding users of where they left off in a given game.
  • Quick announcements (e.g., “Patriots are Super Bowl Champions!”)
  • Personalized, thoughtful notices (“Merry Christmas,” “Happy Birthday” etc.)
  • Prime users to accept a push prompt.


In the details for an in-app message campaign, you can find detailed performance statistics. Below is an example campaign statistics page.

Campaign Details

It is important to understand the significance of and difference between the Current Audience, Unique Recipients, and Impressions.

  • Current Audience refers to the number of users eligible to receive the message based on segmentation filters and triggers you set up in the campaign. A user would be counted multiple times in the Current Audience if they receive the campaign more than once.
  • Unique Recipients represents the number of users whose SDK has received the message. As in-app messages are not delivered to the user until a new session is started, this number will climb up from zero as users in the Current Audience open the app.
  • Impressions are the number of users whose devices have reported that the message has been displayed.

For an example of how Current Audience and Unique Recipients differ, imagine an in-app message campaign targeting a segment with 15K users. At the moment the campaign is launched, the Current Audience would be 15K. After an hour, if 5K users from the segment have started a new session, the number of Unique Recipients would only be 5K.

Impressions and Unique Recipients should be very similar numbers, however they can differ if you have customized the time in-app messages are displayed, in which case the impression can be recorded after the start of a new session, or if some users have recorded an impression but closed the app before the impression was sent to our servers, so the impression will be logged during their next session.

Previously, Unique Recipients were defined similarly to Current Audience. As Unique Recipients are used as the denominator for the conversion rate, conversion rates for current campaigns may be higher than those in older campaigns.

Best Practices

  • This type of message is best for users who regularly visiting your app, as your audience will only see the greeting when the app is opened.
  • Compared to an email correspondence or News Feed card, an in-app message generally appears for a set amount of time, so the text should be concise.
  • They can be particularly effective in driving feature discovery, encouraging and rewarding discovery or upselling via in-app purchases.
  • Add protocol URLs to direct your audience to another part of your app and personalize their experience.
  • For in-app messages containing an image, Appboy improves load times by using a global CDN to host the image.
  • In-app messages are great for priming users to accept a permission request (i.e. push priming).
  • The aspect ratio of images are maintained and fill whichever dimension that we hit the boundary for first. No part of the image that is positioned within the image safe zone will be cropped. We recommend that images fit on a 16:10 screen, which means:
    • A portrait fullscreen with text: 5:4 image
    • Portrait fullscreen (with image only): 10:16 image
    • Landscape fullscreen with test: 16:5 image
    • Landscape fullscreen (image only): 16:10 image


Email is a tried and tested approach for communicating with your users. Email is extremely adaptable and can reach users across a variety of platforms – mobile or otherwise – with dynamic HTML content.

Use Cases

  • Because email can reach users outside of the app, including those who have not installed the app, emails are well-suited for re-engagement.
  • Email campaigns are also useful for onboarding new users and encouraging them to turn on push notifications or share the app via social networks.
  • For content that requires more than a simple push or slide, emails allow for rich and dynamic HTML messages.
  • Using email allows for the placement of multimedia content like videos and images that engage users.
  • Emails are convenient for sending monthly/weekly newsletters to maintain user engagement.
  • Transactional emails notify users of recent purchases and deliver important product and shipping information.

Getting Started

IP Warming

What is IP Warming?

IP warming is an extremely important part of beginning to send email via a whitelisted, dedicated IP with any ESP (Email Service Provider). IP Warming is designed to help you establish a positive reputation with ISPs (Internet Service Providers). Every time a new IP address is used to send email, ISPs programmatically monitor email from it in order to verify that it isn’t being used to send spam to users.

What if I don’t have time to warm IPs?

Unfortunately, IP warming is not optional. If you fail to warm IPs appropriately, and the pattern of your email causes any suspicion, any or all of the following may happen:

  1. Your email delivery speed could be significantly throttled or slowed.
    • ISPs throttle email delivery when suspicion of spam arises so that they can protect their users. For example, if you send to 100000 users the ISP might deliver the email only to 5000 of those users over the first hour. The ISP then monitors measures of engagement such as open rates, click rates, unsubscribes, and spam reports.
    • If a significant number of spam reports occur, they might choose to relegate the remainder of that send to the spam folder rather than delivering it to the user’s inbox.
    • If engagement is moderate, they may continue to throttle your email to collect more engagement data to determine whether or not the mail is spam with more certainty.
    • If the email has very high engagement metrics, they may cease to throttle this email entirely. They use that data to create an email reputation that will eventually determine whether or not your emails are filtered to spam automatically.
  2. Your domain and or IP could be blacklisted by the IPs at which point all of your email will begin going directly to the spam folder of your user’s inbox.
    • If this occurs, the response codes in the Appboy Developer Console will contain information about what websites to visit in order to appeal to these ISPs to get off those lists.

IP Warming Best Practices

All of the above consequences are entirely avoidable if you follow the following guidelines:

  1. Start by sending small volumes of email, and increase the amount you send each day as gradually as possible.
    • Abrupt, high volume email campaigns are regarded with the most skepticism by ISPs. Therefore, you should begin by sending small amounts of email and scale gradually towards the volume of email you ultimately intend to send. Regardless of volume, we suggest warming up your IP to be safe. Please see the schedule below for details.
  2. Ensure that your first content is highly engaging, and maximizes the likelyhood that users, click, open and engage with your email.
    • Always prefer well targeted emails to indiscriminate blasts when warming IPs.
  3. When IP warming is complete, continue sending on as consistent a cadence as possible. IPs can cool down if volume stops or significantly decreases for more than a few days.
  4. Use features like Appboy’s Local Time Zone delivery to automatically spread email sends across a day rather than sending them as a mass blast at a single specific time.
  5. Ensure that your email list is clean, and doesn’t have old or un-verified emails. Ensuring that you’re both CASL and CAN-SPAM compliant is ideal.
  6. Carefully monitor your Sender Reputation while you conduct the IP warming process. The following metrics are important:
    • Bounce rates - If any campaign bounces at more than 3-5%, you should to evaluate the cleanliness of your list by using an email list cleaning service such as 250OK, ReturnPath, or BriteVerify. Additionally you should consider implementing a Sunset Policy to stop emailing unengaged or dormant email addresses.
    • Spam Reports - If any campaign is reported as spam at a rate of more than 5-10%, you should re-evaluate the content you’re sending, and ensure that it is targeted to an interested audience, and is appropriately worded to pique their interest.
    • Sender Reputation Scores - The following services are useful for checking how your reputation is progressing: ReturnPath’s SenderScore & Cisco’s IronPort SenderBase

IP Warming Schedules

We strongly recommend adhering to this IP warming schedule strictly in order to ensure deliverability. It’s also important that you don’t skip days as consistent scaling improves deliverability.

Day # of Emails to be Sent
1 50
2 100
3 500
4 1,000
5 5,000
6 10,000
7 20,000
8 40,000
9 70,000
10 100,000
11 150,000
12 250,000
13 400,000
14 600,000
15 1,000,000
16 2,000,000
17 4,000,000
18+ Double Daily Until Desired Volume

Once warming is complete, and you’ve reached your desired daily volume you should aim to maintain that volume on a daily basis. Some fluctuation is alright, but reaching the desired volume, then only doing a mass blast once a week may have negative consequences for your deliverability and sender reputation. Lastly, most ISPs only store reputation data for 30 days. If go a month without sending, you will have to repeat the IP warming process.

How to Limit Sends During Warming

Appboy’s built-in user limiting feature serves as an useful tool to help you with warming your IP address. After you choose your desired messaging segments during campaign creation (Step 3: Target Users), select the ‘Advanced Options’ dropdown in order to limit your users. As your warming schedule continues, you can gradually raise this limit to increase the volume of email you send.

Limit Users

Subdomain Segmentation

Many ISPs and email access providers no longer only filter by IP address reputation. These filtering technologies now also account for domain-based reputation. This means that filters will look at all data associated with the sender’s domain and not just single out the IP address. For this reason, in addition to warming up your email IP we also recommend having separate domains or subdomains for marketing, transactional, and corporate mail. We recommend segmenting your domains such that corporate mail is sent through your top level domain, and marketing and transactional mail are sent through different domains or subdomains.

Note: Subdomain segmentation is especially important for large-volume senders. These senders should work with their Customer Success Manager while setting up their account to ensure they are adhering to this practice.

Sunset Policies

While you may be tempted to send campaigns to as many users as you can, there are situations where it’s actually wise to discontinue messages to unengaged users. For instance, in the case of emails, ISP and mailbox providers may view your messages as unimportant when users mark them as spam or ignore them. Over time, ISP and mailbox filters might automatically sort your emails into a spam or low priority folder for all recipients, even engaged ones. To prevent this from happening, you need to create a sunset policy that ensures your emails aren’t delivered to inactive recipients. Appboy’s segmentation filters help prevent your messaging from appearing spammy or irrelevant by letting you easily implement sunset policies for emails, pushes, in-app notifications, and News Feed cards.

Here are some things to consider when you create a sunset policy:

  • What counts as an “unengaged” user? Is engagement defined by clicks and opens, purchases, app usage, or a combination of these behaviors?
  • How long does the lapse in engagement need to be for you to stop sending messages?
  • Will you deliver any special campaigns to users before excluding them from your segments?
  • Which messaging channels will your sunset policy apply to?

To incorporate sunset policies into your campaigns, create segments that automatically exclude users who have marked your emails as spam or have not interacted with a your messages for a certain period of time. To set up these segments, choose the “Has Marked You As Spam” and/ or “Last Engaged With Message” filters. When you apply the “Last Engaged With Message” filter, you can specify the type of messaging (push, email, or in-app notification) that the user has or has not interacted with, as well as the number of days it has been since the user last interacted. After you create a segment, you can then choose to target this segment with any messaging channel.

Sunset Policy

While Appboy’s platform automatically stops sending emails to users who have marked you as spam, the “Has Marked You As Spam” filter allows you to also send these users targeted push messages, in-app notifications, and News Feed cards. This filter is useful for retargeting campaigns - for instance, you can send unengaged users messages or News Feed updates that remind them of the features and deals that they are missing out on when they don’t open your emails.

Sunset policies can be especially helpful in email campaigns that target lapsing users. While these campaigns focus on segments that have not interacted with your app for a period of time, they can put the deliverability of your emails at risk if they repeatedly include unengaged recipients. Sunset policies allow you to target lapsing users without landing in the spam folder.

Managing Email Subscriptions

Make sure you are familiar with the tools that Appboy provides for managing users’ email subscriptions and targeting campaigns at users with particular subscription states. These tools are critical for compliance with anti-spam laws.

Unsubscribed Email Addresses

Appboy will automatically unsubscribe any user that either manually unsubscribes from your email or marks an email as spam. These users won’t be targeted by future emails.

If a user unsubscribes and later changes her email, her new email will also be unsubscribed. In other words, once an external user ID is associated with an unsubscribe, future email addresses for that user ID will also be unsubscribed.

Bounces & Invalid Emails

If an email address hard bounces (due to the fact that the email is invalid or doesn’t exist) or is blocked (for instance, if your IP is being blacklisted by a particular ISP), then we will mark the user’s email address as invalid and will not attempt to send further emails to that email address. If that user changes her email address, we will resume sending emails to her, as their new email may be valid. Soft Bounces (inbox full, etc) are automatically retried for 72 hours.

Duplicate Emails

Appboy automatically checks for and removes duplicate email addresses when an email campaign is sent. Even if multiple user profiles share a common email address, that address will not receive multiple messages.

Email Reporting

The Appboy SDK provides you with a detailed report of each of your email campaigns. Navigate to the ‘Campaigns’ tab on your dashboard and click on the ‘Details’ tab of your desired campaign. On this page, you will be able to comprehensively view and analyze the success of your campaign in an organized format.

Campaign Data

Campaign Data

Additionally, Appboy allows you to see how successful different links are within a single email campaign. Clicking on “View Heat Map” brings up a visual view of your email that shows you where and with what frequency users are clicking on certain links.

Campaign Data

Email Analytics Glossary

Statistic Description
Bounces A bounce occurs when an email address has a soft or hard bounce. Whereas a soft bounce will occur if a user’s mailbox is full, the server is down, or a message is too large for a recipient to open, a hard bounce happens if an email address is invalid or doesn’t exist. Appboy automatically will not attempt to resend to a hard bounced email address, but we will retry soft bounced emails.
Emailable Users who have an email address on record and have either opted in or not explicitly opted out of email messages.
Clicks A campaign’s total number of unique successfully delivered emails that recorded a click.
Click Rate The percentage of successfully delivered emails within a campaign that recorded a click.
Opens A campaign’s total number of unique successfully delivered emails that recorded an open.
Open Rate The percentage of successfully delivered emails within a campaign that recorded an open.
Spam The number of users that marked your email as spam. The ISP notifies our email delivery system which associates the spam report with your campaign. Appboy automatically unsubscribes users that marked an email as spam, and those users won’t be targeted by future emails.
Unsubscribe The total number of users who clicked the unsubscribe link in an email campaign.

Note: Appboy records email sends from within our dashboard in real time, and collects campaign conversion data via our SDKs and APIs in real time. Open and Click data comes from our ESP partners, and may be delayed by up to 24 hours.

Unsubscribed Email Addresses

Appboy will automatically unsubscribe any user that either manually unsubscribes from your email or marks an email as spam. These users won’t be targeted by future emails.

If a user unsubscribes and later changes her email, her new email will also be unsubscribed. In other words, once an external user ID is associated with an unsubscribe, future email addresses for that user ID will also be unsubscribed.

Bounces & Invalid Emails

If an email address hard bounces (due to the fact that the email is invalid or doesn’t exist) or is blocked (for instance, if your IP is being blacklisted by a particular ISP), then we will mark the user’s email address as invalid and will not attempt to send further emails to that email address. If that user changes her email address, we will resume sending emails to her, as their new email may be valid.

Duplicate Emails

Appboy automatically checks for and removes duplicate email addresses when an email campaign is sent. Even if multiple user profiles share a common email address, that address will not receive multiple messages.

General Email Tips

Style Guidelines

Address Styling

  • The Subject Line is one of the first things that recipients will see upon receiving your message.
    • Keeping it to 6 to 10 words will yield the highest open rates.
    • There are also different approaches to creating a good subject line, ranging from asking a question to pique the reader’s interest or being more direct, to personalizing it as to engage your clientele.
    • Don’t just stick with one subject line, try new ones out and gauge their effectiveness.
    • Subject line should be no more than 35 characters to display appropriately on mobile.
  • The “From Field” should clearly show who the sender is.
    • Try not to use an unknown person’s name or an uncommon abbreviation, instead try using something recognizable like the company name.
    • If using a person’s name suits your company methods of personalizing email, stay consistent and retain the same “From Name” to develop a relationship with the recipient.
    • “From” name should be no more than 25 characters to display appropriately on mobile.

Body Styling

  • Many people use Email Previewing, either in Gmail or Outlook.
    • The body preview viewing area allows for around 300 pixels of content to be shown.
    • It is recommended that the email communicate the main point of the message efficiently within that space, engaging the reader’s interest to encourage opens.
  • No-reply email addresses are generally not recommended for multiple reasons as they disengage your readers.
    • Many recipients reply to the email to unsubscribe, so if they are not allowed to do that, the next course of action is more often than not marking the email as spam.
    • Getting out of office replies can actually provide valuable information, increasing open rates and decreasing spam reports (by removing those who don’t want to be emailed).
    • On a personal level, a no-reply can appear impersonal, lazy and arrogant to recipients (suggesting “You aren’t worth my time”), and may turn them off from receiving further email from your company.
  • Call to actions come into play once readers have opened your email.
    • Point your readers in the right direction, whether you want them to subscribe, purchase a product or visit your website.
    • Use strong words so that the reader knows exactly what you are asking of them, but make sure it reflects your company’s brand voice and that every call to action exhibits some sort of value to the consumer.
    • Pre-header should be no more than 85 characters and have some sort of descriptive call to action that supports the subject line.
  • Email and landing sites to which you direct your users to should be mobile optimized:
    • No interstitial boxes
    • Large form-fields
    • Easy navigation
    • Large text
    • “Finger Friendly”
    • Generous white space
    • Short concise body copy
    • Clear calls to action

Deep Linking

A high percentage of emails are read on mobile devices. Utilizing deep linking is a great practice for engaging with these mobile email recipients. With push notifications and in-app messages, a deep link takes the user directly to a specified destination within an app. Email, on the other hand, gives no way of knowing whether recipients have the app installed. As such, providing a deep link to the app could link to an error message for these recipients who do not have the app.

Technical Guidelines & Notes

Email Validation

Appboy automatically adjusts inputted email addresses in the following ways:

  • Switches any ‘.con’ suffix to ‘.com’
  • Removes dots on either side of the ‘@’ symbol
  • Trims any whitespace

Email addresses targeted via the Appboy servers must be validated per the RFC 2822 standards. If an email is bounced, Appboy automatically unsubscribes the corresponding email address but does not remove the email address from user profiles.

General Technical Guidelines

  • If you would like one email template for both mobile and desktop, keep the width below 500 pixels.
  • Try to keep the size of the email under 25kb for just text, or 60kb with images.
  • Use inline style sheets to format your email as CSS or it will not be recognized by Email Service Providers (ESPs).
  • Images uploaded to the email template must be less than 5MB and either PNG, JPG, GIF.
  • Always use alt-tags for images in case they don’t appear in the email (blocked, fail to load, etc.)
  • Don’t set heights and widths for images as this will cause unnecessary white space in a degraded email.
  • Div tags should not be used as most email clients do not support their use. Instead use nested tables.
  • Don’t use Javascript because it does not work with any ESP.
  • Appboy improves load times by using a global CDN to host all email images.

Disallowed HTML Tags

  • The following HTML tags are disallowed as they may potentially let malicious code run in the browser. As a result, end user mail clients often filter emails which contain them.
    • <!doctype>
    • <applet>
    • <bgsound>
    • <embed>
    • <frameset>
    • <iframe>
    • <ilayer>
    • <layer>
    • <link>
    • <meta>
    • <object>
    • <script>
    • <title>
    • <xml>
  • The following HTML attributes are disallowed as well:
    • <animationend>
    • <animationiteration>
    • <animationstart>
    • <data-bind>
    • <fscommand>
    • <onabort>
    • <onabort>
    • <onactivate>
    • <onafterprint>
    • <onafterupdate>
    • <onbeforeactivate>
    • <onbeforecopy>
    • <onbeforecut>
    • <onbeforedeactivate>
    • <onbeforeeditfocus>
    • <onbeforepaste>
    • <onbeforeprint>
    • <onbeforeunload>
    • <onbeforeupdate>
    • <onbegin>
    • <onblur>
    • <onbounce>
    • <oncanplay>
    • <oncanplaythrough>
    • <oncellchange>
    • <onchange>
    • <onclick>
    • <oncontextmenu>
    • <oncontrolselect>
    • <oncopy>
    • <oncut>
    • <ondataavailable>
    • <ondatasetchanged>
    • <ondatasetcomplete>
    • <ondblclick>
    • <ondeactivate>
    • <ondrag>
    • <ondragdrop>
    • <ondragend>
    • <ondragenter>
    • <ondragleave>
    • <ondragover>
    • <ondragstart>
    • <ondrop>
    • <ondurationchange>
    • <onemptied>
    • <onend>
    • <onended>
    • <onerror>
    • <onerror>
    • <onerrorupdate>
    • <onfilterchange>
    • <onfinish>
    • <onfocus>
    • <onfocusin>
    • <onfocusout>
    • <onhashchange>
    • <onhelp>
    • <oninput>
    • <oninvalid>
    • <onkeydown>
    • <onkeypress>
    • <onkeyup>
    • <onlayoutcomplete>
    • <onload>
    • <onloadeddata>
    • <onloadedmetadata>
    • <onloadstart>
    • <onlosecapture>
    • <onmediacomplete>
    • <onmediaerror>
    • <onmessage>
    • <onmousedown>
    • <onmouseenter>
    • <onmouseleave>
    • <onmousemove>
    • <onmouseout>
    • <onmouseover>
    • <onmouseup>
    • <onmousewheel>
    • <onmove>
    • <onmoveend>
    • <onmovestart>
    • <onoffline>
    • <ononline>
    • <onopen>
    • <onoutofsync>
    • <onpagehide>
    • <onpageshow>
    • <onpaste>
    • <onpause>
    • <onplay>
    • <onplaying>
    • <onpopstate>
    • <onprogress>
    • <onpropertychange>
    • <onratechange>
    • <onreadystatechange>
    • <onredo>
    • <onrepeat>
    • <onreset>
    • <onresize>
    • <onresizeend>
    • <onresizestart>
    • <onresume>
    • <onreverse>
    • <onrowdelete>
    • <onrowexit>
    • <onrowinserted>
    • <onrowsenter>
    • <onscroll>
    • <onsearch>
    • <onseek>
    • <onseeked>
    • <onseeking>
    • <onselect>
    • <onselectionchange>
    • <onselectstart>
    • <onshow>
    • <onstalled>
    • <onstart>
    • <onstop>
    • <onstorage>
    • <onsubmit>
    • <onsuspend>
    • <onsyncrestored>
    • <ontimeerror>
    • <ontimeupdate>
    • <ontoggle>
    • <ontouchcancel>
    • <ontouchend>
    • <ontouchmove>
    • <ontouchstart>
    • <ontrackchange>
    • <onundo>
    • <onunload>
    • <onurlflip>
    • <onvolumechange>
    • <onwaiting>
    • <onwheel>
    • <seeksegmenttime>
    • <transitionend>

Implementing ‘ALT’ Tags

Since spam filters watch for both an HTML and a plain text version of a message, utilizing plain text alternatives is a great way to lower your spam score. In addition, ALT texts can serve to complement and in some cases stand in lieu of images included in your email body that may have been filtered out by a user’s email provider.

Content Specific Email Tips & Tricks


  • Provide tips to help users get started.
  • Showcase only the most essential features - too much information can be overwhelming and potentially confusing if the user is still unfamiliar with your app.
  • Provide links to your documentation and let users know how they can get support.
  • For more tips, check out our page on User Onboarding.
  • Try to always send a welcome email after a user signs up. Below is an example from LivingSocial that contains simple but clear calls to action and lets users know about a deal:

LivingSocial email

Sale and Promotional

  • Within seconds of opening your email, users should know the value of the promotion (what the discounts are and what is on sale) and how long the offer lasts.
  • Provide graphics to illustrate any products that you’re promoting.
  • Keep your copy concise and simple so that it doesn’t clutter your email and distract users from the essential content.
  • Make your call to action clear and give recipients an easy way to immediately participate in the promotion.
  • If you’re recommending certain products, try to present them as curated, personal suggestions that the user may like.
  • Use social proof to promote your products. Show users any items their friends have liked or purchased.
  • If you’re promoting a limited time offer, be sure to let users know! Ideeli does a great job at conveying urgency in this email:

Ideeli email


  • If the user just made an in-app purchase, you should thank them and provide any tips that can help them make the most of that purchase.
  • If the user just made an out-of-app purchase, provide them with shipping confirmation and a way to ask questions about their shipment.
  • Asking users to give feedback after a purchase is a good way to solicit input without being pushy. Because you’ve just provided users with a service, they may be more likely to share their thoughts. Here’s an example of an email from

Restaurant email


  • Keep your tone friendly.
  • This may be your last chance to win users back, so be sure to include content that showcases your app’s value.
  • If the user has been relatively inactive since installing, offer helpful hints for getting started.
  • For social apps, keep users updated on their friends’ activities.
  • Offer discounts or any other incentives that may bring users back.
  • Try to make your message personal to show the user that he is still valued. Rue La La, for instance, frames its retention email as a note from its CEO:

Ruelala email


  • Email can help you build up a social fanbase by directing recipients toward your Facebook, Twitter, Instagram, Pinterest, Youtube channel, etc.
  • Include links to your social media accounts within the email to make it easy for users to connect.
  • Make it fun! Try running a photo contest, promoting a hashtag, or having a giveaway. Below is an email from Hailo that offers a reward for participating in photo challenges:

Hailo social email


  • Send updates of new or improved features to all of your users.
  • Updating users on new features is also a re-engagement tool because it reminds lapsing users of your app’s value.
  • If your feature requires an explanation or demo, include a link in the message. Here’s an example by


Spam Regulations

There are a number of laws that regulate senders of electronic communications, including email, push notifications and SMS. You should always be aware of local regulations that may affect you or your users. Appboy is providing relevant information based on our own research, but you should also refer to the full text of these laws for complete and up-to-date details.


The CAN-SPAM Act of 2003 regulates email senders in the U.S. sending “any electronic mail message, the primary purpose of which is the commerical advertisment or promotion of a commercial product or service.” You can read more details on the FTC site.

There are 7 key requirements for CAN-SPAM:

  1. Don’t use false or misleading header information (ie, “From”, “To” and “Reply-To”)
  2. Don’t use deceptive subject lines
  3. Identify the message as an ad
  4. Tell recipients where you’re located (ie, physical address)
  5. Tell recipients how to opt out of receiving future email from you
  6. Honor opt-out requests promptly
  7. Monitor what others are doing on your behalf

Transactional emails are exempt from these rules with the exception of #1.

Canadian Anti-Spam Law (CASL)

On July 1, 2014, the Canadian Anti-Spam Law (CASL) goes into effect for emails sent to Canadian residents. You can read the full text of the law here. The law essentially says that Canadian recipients of both email and push notifications need to provide “expressed or implied” consent to your communication with them.


There are a couple key differences between CASL and CAN-SPAM, most notably:

  • CASL applies to where the message is received, so senders outside of Canada are affected
  • Message recipients must up opt-in, instead of opt-out


While CASL has a three-year transition period, ending July 1, 2017, the Canadian Radio-Television and Telecommunications Commission (CRTC), the Competition Bureau and the Office of the Privacy Commissioner of Canada may begin investigation and litigation during this period. At the end of the transition period, individuals may also litigate against entities they believe to be sending spam.

Exempt Messages

The following types of messages are exempt from the requirements of CASL:

  • Messages opened outside of Canada
  • Messages to family members or other personal relations
  • Messages to individuals associated with your business, including employees or contractors
  • Messages providing warranty information, product recall information or safety or security information about a product or service the recipient has used or purchased
  • Messages providing notification of factual information about subscription, membership or account
  • Messages delivering a product or service, including product updates or upgrades

Note: This is not the complete list of exemptions. Please view the full text of the law for more details.

Messages that do not fall under one of the exemptions require “expressed or implied” consent from the message recipient.

Implied consent is based on previous activity with a user through an existing business or non-business relationship. Messages can be sent based on implied consent during the transition period. After July 1, 2017, express consent is required, unless the implied consent is still valid (ie, the 2 years after a purchase was made).

  • The recipient of a message has purchased or leased a product, good, service or completed other business with your organization in the last 2 years
  • The electronic address has been published and does not explicitly forbid unsolicited emails

Implied consent is only valid for 6 months if the recipient does not become a customer.

Express consent is written or oral confirmation from the message recipient and only valid if the message includes a clear and simple description of:

  • Why consent is being sought
  • The person or organization seeking consent

Spam Filters

Just because your emails have successfully sent doesn’t mean that they have necessarily been seen. There is no cure-all solution to avoid all spam filters because each filter is unique in how they evaluate the “spamminess score” of an email. However, here are some tips to avoid having your emails labeled as “spam”:

  • Get Permission: A double opt-in process consists of sending a follow up email with a confirmation link after an initial opt-in. Using this provides validation that recipients want to receive your content. You can also take this even one step further by asking users to add you to their address book. Also be sure to grow your email lists organically: purchased lists often tend to be stale!

  • Build Your Reputation: Make sure you set expectations when people are signing up to receive your emails. Be explicit about what you will send and how often you will send it. Then, encourage users to interact with your email campaigns by providing valuable content. Having personalized and relevant content decreases the probability of your recipients marking the messages as spam.

  • Maintain Your Reputation: Be in constant contact with your users to prevent your email lists from becoming stale. Waiting too long to send a message may cause the recipient to forget about you and mark you as spam. Keep your email lists up to date by implementing a sunset policy to remove email addresses that bounce. Bounce rates are a key factor used by ISPs to evaluate a sender’s reputation.

  • Check and Test: Make sure your message does not contain anything that can trigger spam filters. This includes superfluous tags from external text editors like Microsoft Word, abnormal text formatting, over-usage of ! and ? as punctuation, writing in ALL CAPS, and spam trigger words (see here for a list of common trigger words). Send emails with varying content using Appboy’s multivariate testing capabilities to make sure your emails are not going to spam.

Messaging Channel


The quality of your email list is especially important. A handful of bad emails on your list can ruin your delivery for a million good users. Collecting a list of bad emails generates bounces, blacklisting, spam trap hits, and tanks your response rates. Culling emails that have no activity on a regular basis, and removing obvious bounces are the first step. Whether you implement a opt-in (check the box), opt-out (uncheck the box), confirm opt-in (an email that says thanks for signing up, and gives an unsubscribe link), or double opt-in (an email that that requires a click to confirm), what you want to think about is list quality.

iOS and Windows

In iOS, your users have always been asked to opt-in to push notifications. The iOS dialog boxed simply pops up on entry to the app and asks the user to opt-in for notifications to your app. The app user sees the same message pop-up the moment they open an app for the first time, so everyone who is on your iOS list for push notifications has, by definition, opted-in. Windows also requires explicit opt-ins by the user.


In Android, your users can assume to be opted-in by the implied opt-in that is stated in your privacy policy or end user license agreement. You may want to implement an expressed opt-in process perhaps in an initial screen just as the user starts the app for the first time. Follow Appboy Academy’s Push Best Practices page for more details. You can also orient the user as to what types of push notifications they will receive, thereby increasing the opt-in rate.

User Onboarding

User onboarding can impact the entire user experience, and you only get one shot to welcome a new user. Use these guidelines to ensure your app’s onboarding process is turning new users into active ones.

User Onboarding Goals

There are several goals that your user onboarding experience should accomplish:

  • Teach users how to use your app’s basic features in an effortless way.
  • Establish your app’s value and capabilities - let users experience a WOW moment.
  • Solidify the user’s trust and interest.
  • Give the user incentives to keep using the app.
  • Allow users to begin discovering your app quickly.
  • Make users feel welcome.

Questions To Help You Get Started

Whether you are creating a user onboarding experience for the first time or revamping your current one, here are some questions to guide you through the process:

  • Who is considered a “new” user? Which segments will this onboarding process be targeted at?
  • What are your app’s basic features and how can you demonstrate them to your users in a quick, fun way?
  • How can you convey your app’s value and brand?
  • How can you ask for user data and personal information in a way that doesn’t feel intrusive or demanding?
  • What types of messaging will you send users during the onboarding process?

Best Practices

Creating Segments

Remember that onboarding is a process. You need to not only target users who are completely new but also ones who have used your app for only a week. If you aren’t able to highlight all the features you want during the initial onboarding experience, introduce more the next time your user opens the app. To do this, create multiple segments that target users at different stages of the onboarding process.

Designing Simple Introductions

When a user opens your app for the very first time, you want to show them how to use your basic features in a quick, simple manner. You need to teach users how to navigate your app without taking so long that they become impatient.

Here are some things to keep in mind when designing an introduction:

  • The format of your introduction shouldn’t be time consuming, since users are probably eager to discover your app. For instance, instead of creating a long video tutorial, consider condensing the information into a few pages that readers can slide through.
  • Focus on introducing users to basic and important features during their first session. You will have opportunities to show them more features in their next few sessions.
  • Keep the copy simple and concise.
  • Use graphics, if possible, to show users how to navigate your app.
  • Address any concerns the user may have. For instance, if you ask users for their email, it may help to also tell them that you won’t share their address with any other parties.
  • Demonstrate your app’s value before asking users for their information. If your app involves a registration process, for example, your user will be more eager to undergo it after seeing what your app has to offer. Prompting users the second they open the app may scare away those who don’t want to put in the effort to register without knowing what your app can do. Learn more strategies for asking users for data on our page on Data Opt-ins.

Hailo does a great job at onboarding new users. When users open the app for the first time, they are led through a short Hailo Tour before being shown the registration page.

1. Hailo Tour Step 1 - Quickly re-emphasize app’s purpose.

Hailo Step 1

2. Hailo Tour Step 2 - Show users how to use the most basic features.

Hailo Step 2

3. Hailo Tour Step 3 - Address payment, which is something most users are probably wondering about.

Hailo Step 3

4. Hailo Tour Step 4 - Show users what to expect after they’ve hailed a cab.

Hailo Step 4

5. Hailo Tour Step 5 - Point out another helpful feature.

Hailo Step 5

6. Hailo Tour Step 6 - Include a friendly hint.

Hailo Step 6

7. Hailo Tour Registration Page - Prompt users with a clear call to action after showcasing the app’s value.

Hailo Step 7

Taking Advantage Of The News Feed

The News Feed is an extremely powerful tool in the user onboarding process. It hosts rich content within your app, so users seeking more guidance or more advanced tips can easily access them. While your introduction should be simple and brief so users can dive into your app, the News Feed is there for when users have finished their initial exploration and are ready to discover advanced features and become a more involved member of your app’s community.

Welcome new users to your app with a branded News Feed card. Keep the News Feed updated with relevant information, hints and deals targeted towards users who are at different steps of the onboarding process. For instance, a user who is in his second week would see hints about advanced features, while a user who is in his third or fourth week may be targeted with conversion campaigns.

Requesting User Data

Requesting user for data during the onboarding process can be tricky. Read our tips on our Data Opt-in page.

Because it’s best practice to ask users for data after providing them with value, we recommend that you do not ask users to grant location or push access the second they open your app for the first time. There is a higher chance that the user will deny you access. If this information is essential to the onboarding process, request it with a custom opt-in prompt.

Using Multi-Channel Messaging

Use multi-channel messaging to create an engaging onboarding campaign. Combine in-app messages, push notifications and emails with News Feed content to capture your users’ attention right away.

In-App Messages

  • You do not need to request the user’s permission to send in-app messages, so you can send them even when you don’t have any user data.
  • They are useful for driving in-app discovery because they can deep link to your News Feed or a specific page within your app.
  • In-app messages can be used to provide brief tips and updates.
  • Before users give you permission to access data or push notifications on their devices, you should prime them to increase the likelihood they convert.

Push Notifications

  • If a new user has push enabled and has only used your app once, you can send him a notification a couple days after his first session to remind him to come back into your app.
  • New users are still in the process of developing trust in your app’s communications. Don’t send too many push notifications, or users may perceive your app as spammy.
  • Like in-app messages, push notifications can [deep link] to specific pages within your app, making them a good tool for encouraging users to re-open your app.
  • Our Push Best Practices page has more information on creating custom opt-in prompts.


  • If new users provide their email address, send them a welcome message right away to thank them for signing up.
  • Because emails allow for rich content, you can include images and helpful hints.

Here’s an example of a welcome email that Hailo sends to users after their first session:

Hailo email

nav_title: Client Integration Gallery —-

Client Integration Gallery

This gallery showcases examples of messaging that our clients have sent.

Urban Outfitters

Urban Outfitters











Baby Bundle

Baby Bundle






Note: This is a custom in-app message style created by the Saucey team.



Note: This is a custom in-app message style created by the iHeartRadio team.

iHeartRadio In-App Message



MMA Junkie

MMA Inapp


UppTalk Inapp

Trivia Crack

Trivia Crack





Urban Outfitters

Urban Outfitters Push

Urban Outfitters Push


Saucey Push


Textplus Push


MapQuest Push


Hailo Email


Textplus Email

Web Notifications

These in-browser and web push notifications were delivered using Appboy’s Web SDK.

Appboy Example - In-Browser Modal Message

Web modal

Appboy Example - In-Browser Slider

Web slider

Appboy Examples - Web Push

Web Push Music

Web Push News


With Appboy’s Web SDK, you can collect session data, identify users (with the same set of attributes that we support across our other platforms), and record purchases and custom events via a web/mobile browser. Implementing Appboy’s Web SDK enables you to create a more complete view of your users across web and mobile channels. You can also use the Web SDK to engage with your users by sending in-app web messages and web push notifications.


For information on integrating the Appboy Web SDK, see our documentation. After implementing the Web SDK, your website will appear as an app in your app group and will be grouped with your mobile apps.


In-App Web Messaging

You can send web messages to engage with users directly in their web/mobile browser. Web messages are sent as in-app messages, and can also be sent as slideup, modal, or fullscreen types. For more information on composing an in-app message, see our page on creating an in-App message. Check out a sample web in-app message sent by Appboy below.


Web Push

Web push is another great way to engage with users of your web application. Customers visiting your website via Chrome, Safari, and Firefox can opt-in to receive web push from your web application whether or not the web page is loaded. This feature is also supported on Android Chrome allowing for mobile web notifications. Web push works the same way app push notifications operate on your phone. For more information on composing a web push, see our page on creating a push notification. See below for a sample web push sent by Appboy.


Users of your web application need to opt-in to receive web push. See below.


Note: Private browsers do not currently support web push.

Delivery Rules

By default, a campaign containing an in-app message will send an in-app web message as well as an in-app mobile message. To send an in-app message exclusively to web or mobile, you will need to segment your campaign accordingly.

Segmenting for Web Users

You can create a segment of your web users by selecting only your website’s app icon in the Apps Used section.


This will allow you to target users based on their behavior on the web only. If you wanted to target web users to encourage them to download your mobile app, you’d create this segment as your target audience. If you wanted to send a messaging campaign that included a mobile in-app message but not a web message, you would simply uncheck your website’s icon in your segment.