Platform Features

Appboy provides a comprehensive user engagement solution for your mobile apps. The Appboy platform has three primary components:

Mobile SDK: The Appboy mobile SDK is integrated into your iOS or Android mobile applications and provides powerful marketing, customer support, and analytics tools.

Dashboard: The dashboard controls all of the data and interactions at the heart of the Appboy platform. Marketers can use the site to manage notifications, setup targeted messaging campaigns, and view analytics or feedback. Developers can use the dashboard to manage settings for integrating apps, such as API keys and push notification credentials.

Data API: The Appboy Data API provides a web service where you can record actions taken by your users directly via HTTP, rather than through the mobile SDKs. This allows you to add custom events for segmentation purposes directly from a web-based application.

Granular Targeting and Analysis

App Analytics

The Appboy dashboard displays graphs that are updated in real-time based upon a number of analytics metrics as well as custom events which you instrument in your application.

User Segmentation

Segmentation allows you to create groups of users based on powerful filters of their in-app behavior, demographic data, social data, etc. Appboy also allows you to define any in-app user action as a “custom event” if the desired action is not captured by default. The same is true of user characteristics via “custom attributes”. Once a user segment is created on the dashboard, your users will move in and out of the segment as they meet (or fail to meet) the defined criteria. For example, the below image shows a segment which includes all users who have spent money in-app and last used the app more than two weeks ago.

Segmentation Example

Multi-Channel Messaging

Once you have defined a segment, Appboy’s messaging tools allow for multi-channel communication with your users. For example, send a push notification and email to the example segment defined in the previous section. Messaging channels are best used in concert and with regularity to re-engage lost users, retain active users, and energize your brand ambassadors. Moreover, you can use our advanced scheduling options to automate campaigns to specific groups of those users going forward.

News Feed

When your app opens, the Appboy SDK automatically pulls down the user’s news feed – a set of News Items and Cross-Promotions cards that are controlled on the Appboy dashboard. By making a call to the Appboy library, you can display the news feed when a button or action is triggered in your app, providing an in-app notification center that can be updated by non-technical team members without having to change your code or database.

  • Appboy will track how many clicks and impressions each card in the news feed receives
  • You can schedule a specific time-frame when cards will display, allowing for deep dayparting
  • Cards within the news feed may be targeted at user segments just like any other message
  • In-app messages will automatically appear when a user has new items in their news feed
  • News Feed Items can “Deeply Link” to in-app content enabling the marketer to provide individualized content navigation for each user. Every process from onboarding, to the surfacing of rich in-app content can be behaviorially targeted and customized using the News Feed and “Deep Links”

News Feed Dashboard

Cross Promotion Cards

Cross-Promotions are a type of news feed card which display content from the App Store or Google Play that you have recommended to users. Cross-promotions are a wonderful way to leverage your user data to accelerate the adoption of other content within your network by moving audiences from one of your apps to another.

  • Touching a Cross-Promotion will bring users to the relevant store so that they can download the content
  • Users will only see Cross-Promotions for their device’s platform in the news feed
  • In iOS, you may recommend books, music, or other content available in the App Store in addition to apps

News Feed User Interface

Here is an example news feed that a user might see in a sports app working to engage their fans:

News Feed User Interface

Push Notifications

Appboy supports the Apple Push Notification Service (APNs) for iOS and Google Cloud Messaging (GCM) for Android. Push notifications can be triggered by the publication of messaging campaigns, news items, and replying to user feedback.

Example Push Dashboard

In-App Messaging

Appboy provides unobtrusive in-app notifications via our custom-built native user interface. Messages can be presented at any time of your choosing (e.g., when users start a new session or complete a specific action) ensuring that your message arrives at the most effective time to engage the user. See our academy section on creating an in-app message for more details.

Slideup Example

Email

Send your users rich HTML messages by adding your existing HTML templates or or using our rich text editor. Appboy makes it easy to include email as part of your mobile engagement strategy.

Email Dashboard

Webhooks

Appboy’s webhooks allow you to trigger non-app actions such as SMS text message delivery. You can use webhooks to provide other systems and applications with real-time information. The flexibility of this feature allows you to send information to any endpoint.

Webhooks

Feedback

The Appboy SDK provides a feedback widget that can be added to your app to allow users to leave feedback. Feedback is managed on the dashboard, where you can add internal notes and respond to users via multiple messaging channels. We show the user’s Appboy profile side-by-side with their feedback so you can easily see the user’s device, OS version, app version, and behavioral data. This minimizes the work your support team has to do to understand technical issues.

Feedback Response Dashboard Interface

Feedback Response Dashboard

In Android, you can also configure the SDK to send feedback programmatically if you prefer to use your own UI elements. The Appboy library exposes hooks that let you submit feedback through the SDK, allowing you to leverage your existing UI framework. This feedback can still be viewed and replied to on the dashboard.

App Group Configuration

Appboy organizes your apps via “App Groups.” Think of each of these app groups as an individual title. For example, you should group the iOS and Android version of the same application or a free and paid version. These two apps should be in the same group to allow for ease of navigation, segmentation, and messaging across both platforms.

Time Estimate: 4 Minutes

Creating your App Group in “My Apps”

Step 1: Click on the “ Add App Group” button in the sidebar

Add App Group

Type the name of your app group into the form.

Once you have created your app group, you will be taken to the app settings page. Generally, you can access this page by navigating to the apps tab at the top of the page and pressing the icon on the sidebar.

Appboy App Settings

Step 2: Add Your Apps

Using the form at the top right of your screen, select your platform, type in the name of your app, and click “Add App”

  • If your app has not been published yet, you can add the app by simply typing the name
  • Once your app is published, you will be able to update the iTunes ID or Android package name for automatic name and image refreshes
  • After adding your app, you will have access to its API key, which you will need to complete SDK integration.
    • You must create separate app instances for each version of your your app on each platform. For example, if you have Free and Pro versions of your app on both iOS and Android you will have 4 app instances within your app group and must use the appropriate API key that is generated for each app.

Appboy API Input

Step 3: Add a Testing App Group

Appboy recommends that you create a “Testing App Group” for integration and campaign testing. The App Group feature can also be utilized for app testing by completely sandboxing certain users from your production instance. Simply create a new app group and remember to switch your API codes so your production environments are not corrupted with false data. When you publish your application, be sure to change the API key that Appboy is using to match that of your “Production App Group” rather than your “Testing App Group”

App Testing Groups

User Data Collection

Before completing your Appboy implementation, ensure that you have a conversation between your marketing team and your development team regarding your marketing goals. When deciding what you want to track, and how you want to track it with Appboy, it’s useful to consider these goals and work backwards from there. Please reference our case of a Taxi/Ride-Sharing App at the end of this guide for an example of this process.

This best practice guide will help you to understand exactly what Appboy considers to be a “Custom Event” vs. a “Custom Attribute”.

Automatically Collected Data

The following events and attributes are captured and updated automatically by the Appboy SDK as part of the Session Start and Session End data points, or by the Appboy backend. You don’t need to record them separately as Custom Events or Custom Attributes.

Usage Information

  • First Used App (Date)
  • Last Used App (Date)
  • Total Session Count (Integer)
  • Number of Feedback Items (Integer)
  • Number of Sessions in the Last Y Days (Integer and Date)
  • Email Available (Boolean)
  • News Feed View Count (Integer)

Campaign Retargeting

  • Last Received Any Campaign (Date)
  • Last Received Email Campaign (Date)
  • Last Received Push Campaign (Date)
  • Last Viewed News Feed (Date)
  • Clicked Card (Integer)
  • Received Campaign
    • This filter allows you to target users based on their having (not) received a previous campaign.
  • Received Campaign with Tag
    • This filter allows you to target users based on their having (not) received a campaign that currently has a tag.
  • Retarget Campaign
    • This filter allows you to target users based on whether or not they have opened, or clicked on a specific email, push, or slideup in the past

Device Information

  • Location Available (Boolean)
  • Most Recent Location (if location permission is granted to your app)
  • Push Enabled (Boolean)
  • Device Locale
  • Language (taken from Device Locale)
  • Country (first taken from IP Address. If this is not available, taken from Device Locale)
  • Most Recent App Version
  • Device Model
  • Device OS Version
  • Device Resolution
  • Device Wireless Carrier
  • Device Time Zone
  • Device Identifier
  • Uninstalled (Date and Boolean)

Custom Events

Custom Events are actions taken by your users; they’re best suited for tracking high-value user interactions with your application. Logging a custom event can trigger any number of follow-up campaigns with configurable delays, and enables the following segmentation filters around the recency and frequency of that event:

Segmentation Options Dropdown Filter Input Options
Check if the custom event has occurred more than X number of times MORE THAN INTEGER
Check if the custom event has occurred less than X number of times LESS THAN INTEGER
Check if the custom event has occurred exactly X number of times EXACTLY INTEGER
Check if the custom event last occurred after X date AFTER DATE
Check if the custom event last occurred before X date BEFORE DATE
Check if the custom event last occurred more than X days ago MORE THAN NUMBER OF DAYS AGO (Positive) Integer)
Check if the custom event last occurred less than X days ago LESS THAN NUMBER OF DAYS AGO (Positive) Integer)
Check if the custom event occurred more than X (Max = 50) number of times MORE THAN in the past Y Days (Y = 1,3,7,14,21,30)
Check if the custom event occurred less than X (Max = 50) number of times LESS THAN in the past Y Days (Y = 1,3,7,14,21,30)
Check if the custom event occurred exactly X (Max = 50) number of times EXACTLY in the past Y Days (Y = 1,3,7,14,21,30)

Appboy notes the number of times these events have occurred as well as the last time they were performed by each user for segmentation. On the custom events analytics page you can view in aggregate how often each custom event occurs, as well as by segment over time for more detailed analysis. This is particularly useful to view how your campaigns have affected custom event activity by looking at the gray lines Appboy overlays on the time-series to indicate the last time a campaign was sent.

custom_event_analytics_example.png

Note: Incrementing Custom Attributes can be used to keep a counter on a user action similar to a custom event. However, you will not be able to view custom attribute data in a time-series. User actions which do not need to be analyzed in time-series should be recorded via this method.

Custom Event Properties

With Custom Event Properties, Appboy allows you to set properties on custom events and purchases. These properties can than be used for further qualifying trigger conditions, increasing personalization in messaging, and generating more sophisticated analytics through raw data export. Property values can be string, numeric, boolean, or Date objects.

For example, if an eCommerce application wanted to send a message to a user when he/she abandons their cart, it could additionally improve its target audience and allow for increased campaign personalization by adding a Custom Event Property of the ‘cart value’ of users’ carts.

customEventProperties.png

Custom Event Properties can also be used for personalization within the messaging template. Any campaign using Action-Based Delivery with a trigger event can use custom event properties from that event for messaging personalization. If a gaming application wanted to send a message to users who had completed a level, it could further personalize the message with a property for the time it took users to complete that level. In this example the message is personalized for three different segments using conditional logic. The Custom Event Property called time_spent, can be included in the message by calling {{event_properties.${time_spent}}}.

custom_event_properties_gaming.png

Custom Event Properties are designed to help you personalize your messaging or build granular Action-Based Delivery Campaigns. If you would like to create segments based on event property recency and frequency, please reach out to your Customer Success Manager, as this may incur additional data costs.

Custom Attributes

Custom Attributes are best for storing attributes about your users, or information about low-value actions within your application. You should keep in mind that we don’t store time-series information for Custom Attributes, so you’re not going to get any graphs based upon them like the above example for Custom Events.

Custom Attribute Data Types

Custom Attributes are extraordinarily flexible tools that allow for great targeting. The following data types may be stored as custom attributes:

Strings (Alpha-Numeric Characters)

String attributes are useful for storing user input, such as a favorite brand, a phone number, or a last search string within your application. Strings attributes can be up to 256 characters long.

Segmentation Options Dropdown Filter Input Options
Check if the string attribute exactly matches an inputted string EQUALS STRING
Check if the string attribute partially matches an inputted string OR Regular Expression MATCHES REGEX STRING OR REGULAR EXPRESSION
Check if the string attribute does not partially match an inputted string OR Regular Expression DOES NOT MATCH REGEX STRING OR REGULAR EXPRESSION
Check if the string attribute does not match an inputted string DOES NOT EQUAL STRING
Check if the string attribute exists on a user’s profile EXISTS N/A
Check if the string attribute does not exist on a user’s profile DOES NOT EXIST N/A

Note: We use Perl compatible regular expressions (PCRE).

Arrays

Array attributes are good for storing related lists of information about your users. For example, storing the last 100 pieces of content a user watched within an array would allow specific interest segmentation.

Custom attribute arrays are one-dimensional sets; multi-dimensional arrays are not supported. Adding an element to a custom attribute array appends the element to the end of the array, unless it’s already present, in which case it gets moved from its current position to the end of the array. If the array contains its maximum number of elements, the first element will be discarded and the new element added to the end. Below is some example code showing the array behavior in the web SDK:

var abUser = appboy.getUser();
// initialize array for this user, assuming max length of favorite_foods is set to 4.
abUser.setCustomUserAttribute('favorite_foods', ['pizza', 'wings', 'pasta']); // => ['pizza', 'wings', 'pasta']
abUser.addToCustomAttributeArray('favorite_foods', 'fries'); // => ['pizza', 'wings', 'pasta', 'fries']
abUser.addToCustomAttributeArray('favorite_foods', 'pizza'); // => ['wings', 'pasta', 'fries', 'pizza']
abUser.addToCustomAttributeArray('favorite_foods', 'ice cream'); // => ['pasta', 'fries', 'pizza', 'ice cream']

Note: The maximum number of elements in Custom Attribute Arrays defaults to 25. The maximum for individual arrays can be increased to up to 100 in the Appboy Dashboard, under “Manage App Group -> Custom Attributes”, as shown in the screen capture below. Arrays exceeding the maximum number of elements will be truncated to contain the maximum number of elements.

array_max_length.png

Segmentation Options Dropdown Filter Input Options
Check if the array attribute includes a value which exactly matches an inputted value INCLUDES VALUE STRING
Check if the array attribute does not include a value which exactly matches an inputted value DOESN’T INCLUDE VALUE STRING
Check if the array attribute contains a value which partially matches an inputted value OR Regular Expression MATCHES REGEX STRING OR REGULAR EXPRESSION
Check if the array attribute has any value HAS A VALUE N/A
Check if the array attribute is empty IS EMPTY N/A

Note: We use Perl compatible regular expressions (PCRE).

Dates

Date attributes are useful for storing the last time a specific action was taken, so you can offer content specific re-engagement messaging to your users.

Note: The last date a custom event or purchase event occurred is automatically recorded, and should not be recorded in duplicate via a custom date attribute.

Date filters using relative dates (e.g., more than 1 day ago, less than 2 days ago) measure 1 day as 24 hours. Any campaign that you run using these filters will include all users in 24 hour increments. For example, last used app more than 1 day ago will capture all users who “last used the app more than 24 hours” from the exact time the campaign runs. The same will be true for campaigns set with longer date ranges – so five days from activation will mean the prior 120 hours.

Segmentation Options Dropdown Filter Input Options
Check if the date attribute is before a selected date BEFORE CALENDAR DATE SELECTOR
Check if the date attribute is after a selected date AFTER CALENDAR DATE SELECTOR
Check if the date attribute is more than X number of days ago MORE THAN NUMBER OF DAYS AGO
Check if the date attribute is less than X number of days ago LESS THAN NUMBER OF DAYS AGO
Check if the date attribute is in more than X number of days in the future IN MORE THAN __NUMBER OF DAYS IN FUTURE
Check if the date attribute is less than X number of days in the future IN LESS THAN __NUMBER OF DAYS IN FUTURE
Check if the date attribute exists on a user’s profile EXISTS N/A
Check if the date attribute does not exist on a user’s profile DOES NOT EXIST N/A

Integers (Standard and Incrementing) and Decimals (Floats/Doubles)

Numeric attributes have a wide variety of use-cases. Incrementing integer custom attributes are useful for storing the number of times a given action or event has occurred. Standard integers and decimals have all sorts of usages, for example : (Recording shoe size, waist size, number of times a user has viewed a certain product feature, or category). Note: Money spent in app should not be recorded by this method. Rather it should be recorded via our purchase methods.

Segmentation Options Dropdown Filter Input Options
Check if the numeric attribute is more than an integer or decimal value MORE THAN INTEGER or DECIMAL
Check if the numeric attribute is less than an integer or decimal value LESS THAN INTEGER or DECIMAL
Check if the numeric attribute is exactly an integer or decimal value EXACTLY INTEGER or DECIMAL
Check if the numeric attribute does not equal an integer or decimal value DOES NOT EQUAL INTEGER or DECIMAL
Check if the numeric attribute exists on a user’s profile EXISTS N/A
Check if the numeric attribute does not exist on a user’s profile DOES NOT EXIST N/A

Booleans (True/False)

Boolean attributes are useful for storing subscription statuses, and other simple binary data about your users. The input options that we provide allow you to find users that have explicitly had a variable set to a true/false value in addition to those that don’t have any record of that attribute recorded yet.

Segmentation Options Dropdown Filter Input Options
Check if the boolean value is IS TRUE, FALSE, TRUE OR NOT SET, or FALSE OR NOT SET
Check if the boolean value exists on a user’s profile EXISTS N/A
Check if the boolean value does not exist on a user’s profile DOES NOT EXIST N/A

Purchase Events / Revenue Tracking

Using our purchase methods to record in-app purchases establishes the Life-time Value(LTV) for each individual user profile. This data is viewable within our revenue page in time-series.

Segmentation Options Dropdown Filter Input Options
Check if the total number of dollars spent is greater than an integer or decimal value GREATER THAN INTEGER or DECIMAL
Check if the total number of dollars spent is less than an integer or decimal value LESS THAN INTEGER or DECIMAL
Check if total number of dollars spent is exactly an integer or decimal value EXACTLY INTEGER or DECIMAL
Check if the purchase last occurred after X date AFTER DATE
Check if the purchase last occurred before X date BEFORE DATE
Check if the purchase last occurred more than X days ago MORE THAN DATE
Check if the purchase last occurred less than X days ago LESS THAN DATE
Check if the purchase occurred more than X (Max = 50) number of times MORE THAN in the past Y Days (Y = 1,3,7,14,21,30)
Check if the purchase occurred less than X (Max = 50) number of times LESS THAN in the past Y Days (Y = 1,3,7,14,21,30)
Check if the purchase occurred exactly X (Max = 50) number of times EXACTLY in the past Y Days (Y = 1,3,7,14,21,30)

Note: If you would like to segment on the number of times a specific purchase has occurred you should also record that purchase individually as an incrementing custom attribute.

Taxi/Ride-Sharing App Use Case

For this example case, let’s consider a Taxi/Ride-Sharing app (such as Hailo, Lyft, etc.) that wants to decide what user data to collect. The questions and brainstorming process below are a great model for marketing and development teams to follow. By the end of this exercise, both teams should have a solid understanding of what custom events and attributes make sense to collect in order to help meet their goal.

Case Question #1: What is the goal?

Their goal is straightforward in that they want users to hail taxi rides via their app.

Case Question #2: What are the intermediate steps on the way to that goal from app installation?

  1. They need users to begin the registration process and fill out their personal information.
  2. They need users to complete & verify the registration process by inputting a code into the app they receive via SMS.
  3. They need to attempt to hail a taxi.
  4. In order to hail a taxi, they must be available when they search.

The above actions could then be tagged as the following Custom Events:

  • Began Registration
  • Completed Registration
  • Successful Taxi Hails
  • Unsuccessful Taxi Hails

After implementing the events, you can now run the following campaigns:

  1. Message users who Began Registration, but didn’t Completed Registration within a certain time frame.
  2. Send congratulation messages to users who complete registration.
  3. Send apologies and promotional credit to users who had unsuccessful taxi hails, that weren’t followed by a successful taxi hail within a certain amount of time.
  4. Send promotions to power users with lots of Successful Taxi Hails to thank them for their loyalty.
  5. Many, Many More.

Case Question #3: What other information might we want to know about our users that will inform our messaging?

  • Whether or not they have any promotional credit?
  • The average rating they give to their drivers?
  • Unique Promo Codes for the user?

The above characteristics could then be tagged as the following Custom Attributes:

  • Promotional Credit Balance (Decimal Type)
  • Average Driver Rating (Integer Type)
  • Unique Promo Code (String Type)

Adding these attributes would afford you the ability to send campaigns to users like:

  1. Reminding users who haven’t used the app in 7 days who have promotional credit remaining on their account that it is there and that they should come back to the app and use it!
  2. Messaging users who give low driver ratings to get direct customer feedback to see why they didn’t enjoy their rides.
  3. Use our message templating and personalization features to drag the unique promo code attribute into messaging directed at users.

Best Practices

General Best Practices

Don’t Over-Segment Your Tracking

  • Being more generic will help you target more users and draw more useful divisions between user segments
  • For example, rather than capturing a separate event for watching each of 50 different movies, it would be more effective to capture simply watching a movie as an event
  • If you over segment your user data, your findings will lose statistical significance and won’t guide the development of your app and marketing initiatives as effectively
    • You will “miss the forest for the trees” when evaluating user-trend data
    • Events should be tied directly to your marketing and conversion goals

Note: Multiple user actions within an app can be labeled with the same custom event or attribute designation. This is useful when you want to track something generically such as “played a song” rather than recording each individual song within a music app as a separate and distinct event.

Development Best Practices

Set User IDs for Every User

User IDs should be set for each of your users. These should be unchanging and accessible when a user opens the app. We strongly recommend providing this identifier as it will allow you to:

  • Track your users across devices and platforms, improving the quality of your behaviorial and demographic data.
  • Import data about your users using our User Data API.
  • Target specific users with our Messaging API for both general and transactional messages.

User IDs must be less than 512 characters long and should be private and not easily obtained (e.g. not a plain email address or username). If such an identifier is not available, Appboy will assign a unique identifier to your users, but you will lack the capabilities above. You should avoid setting User IDs for users for whom you lack a unique identifier that is tied to them as an individual. Passing a device identifier offers no benefit versus the automatic anonymous user tracking Appboy offers by default. Below are some examples of suitable and unsuitable user IDs.

Good options for User IDs:

  • Hashed e-mail address or unique username
  • Unique database identifier
  • Facebook ID

These should not be used as user IDs:

  • Device ID
  • Random number or session ID
  • Any non-unique ID

Give Custom Events and Attributes Readable Names

Imagine you’re a marketer who begins using Appboy a year or two after implementation, reading a dropdown list full of names like “usr_no_acct” without further context may be intimidating. Giving your event and attributes identifiable and readable names will make things easier for all users of your platform. Consider the following best-practices:

  • Do not begin a custom event with a numeric character. The drop-down list is sorted alphabetically and beginning with a numerical character makes it more difficult to segment by your filter of choice
  • Try not to use obscure abbreviations or technical jargon where possible
    • Example: usr_ctry may be fine as a variable name for a user’s country within a piece of code, but the custom attribute ought be sent to Appboy as user_country at very least to lend some clarity to a marketer using the dashboard down the line.

Only Log Attributes When They Change

We count every attribute passed to Appboy as a data point, even if the passed attribute contains the same value as saved previously. Only logging data when it changes helps avoid redundant data point use and ensures a smoother experience by avoiding unnecessary API calls.

Avoid Programmatically Generating Events

If you are constantly creating new event names it is going to be impossible to meaningfully segment your users. You are going to run into the same over-segmentation problems described above. Additionally, programmatic custom events run a risk of containing more than 255 characters which is a constraint placed upon events and attributes (see below). You should generally capture generic events (“Watched a Video” or “Read an Article”) instead of highly specific events such as (“Watched Gangnam Style” or “Read Article: Best 10 Lunch Spots in Midtown Manhattan”).

Technical Limitations & Constraints

Please be mindful of the following limitations and constraints when implementing custom events:

Length Constraints

All custom events, custom attribute names (keys), and custom event string values of 255 characters or longer will be truncated. Ideally, these should be as short as possible to improve network and battery performance for your app. If possible limit them to 50 characters.

Content Constraints

The following content will be trimmed programmatically from your attributes and events. Please take care not to use the following:

  • Leading and trailing whitespace
  • Newlines
  • All non-digits within phone numbers
    • Example: “(214) 450-7900” will be condensed to “2144507900”
  • Non-whitespace characters must be converted into spaces
  • $ should not be used as a prefix for any custom events
  • Any invalid UTF-8 encoding values
    • “My \x80 Field” would be condensed to “My Field”

Reserved Keys

The following keys are RESERVED and CANNOT be used as Custom Attributes:

  • email
  • facebook
  • foursquare
  • foursquare_access_token
  • weibo
  • twitter
  • first_name
  • last_name
  • dob
  • external_id
  • country
  • home_city
  • bio
  • gender
  • phone
  • email_subscribe
  • push_subscribe

Additionally, the following keys are reserved and cannot be used as Custom Event Properties:

  • time
  • product_id
  • quantity
  • event_name
  • price
  • currency

Value Definitions

  • Integer values are 64 bit
  • Decimals have 15 decimal digits by default

Parsing a Generic Name Field

If only a single generic name field exists for a user (e.g. ‘JohnDoe’), you can assign this entire title to your user’s First Name attribute. Additionally, you can attempt to parse out both the first and last name of the user using spaces, but this latter method carries the potential risk of misnaming some of your users.

Sending Test Messages

Before sending out a messaging campaign to your users, you may want to test it to make sure it looks right and operates in the intended manner. Creating and sending test messages to select devices or members of your team is very simple using the tools in the dashboard.

Creating a Designated Test Segment

Once you set up a test segment, you can utilize it to test any of our messaging channels. The process is very simple and if configured properly will only need to be done once.

Navigate to the “Segments” page in the dashboard and create a new segment. In the dropdown menu under “Add Filter”, you’ll find our testing filters at the bottom of the list.

Testing Filters

Our testing filters allow you to select users with specific email addresses or external user IDs.

Testing Filter Options

These filters have three options:

1) “Equals” - This will look for an exact match of the email or user ID that you provide. Use this if you only want to send the test campaigns to devices associated with a single email or user ID.

2) “Does Not Equal” - Use this if you want to exclude a particular email or user ID from test campaigns.

3) “Matches” - This will find users that have email addresses or user IDs that match part of the search term you provide. You could use this to find only the users that have an “@yourcompany.com” address, allowing you to send messages to everyone on your team.

These filters can also be used in conjunction with each other to narrow down your list of test users. For example, the test segment could include an email address filter that “matches” “@appboy.com” and another filter that “does not equal” “sales@appboy.com”. You can also select multiple specific emails by using the “matches” option and separating the email addresses with a | character (e.g. “matches” “email1@appboy.com | email2@appboy.com”).

After adding the testing filters to your test segment, you can verify that you’ve selected only the users you intended by clicking “Preview” at the top of the segment editor or by exporting that segment’s user data to CSV by clicking on the gear icon in the right hand corner of the editor and selecting “CSV Export All User Data” from the dropdown menu.

Verify Test Segment

Note: Exporting the segment’s User Data to CSV will give you the most accurate picture of who falls under that segment. The “Preview” tab is only a sample of the users in the segment - see more details about this in our FAQ - and therefore may appear to have not selected all intended members.

Once you’ve confirmed that you’re only targeting the users that you want to receive the test message, you can either select this segment in an existing campaign that you want to test or click the “Start Campaign” button in the segment menu.

Sending a Test Push Notification or In-App Messages

In order to send test push notifications and/or in-app messages, you need to target your previously created test segment. Begin by creating your campaign and following the usual steps. When you reach the ‘Target Users’ section, select your test segment as shown below.

Test Segment

Finish confirming your campaign and launch it to test your push notification and in-app messages.

Note: Be sure to check the box titled “Allow users to become re-eligible to receive campaign” under the Schedule portion of the campaign wizard if you intend to use a single campaign to send a test message to yourself more than once.

Note: If you’re only testing email messages, you do not have to set up a test segment. In the first step of the campaign wizard where you compose your campaign’s email message, there is a “Send Test” button in the bottom left corner.

Sending a Test Email Message

Send Test Button

Clicking on this button causes a pop-up window to appear where you can enter the email address you would like the test email to be sent to. Click “Send” and your test email will be delivered shortly.

Send Test Pop-Up

Testing In-App Messages and Push via CURL

Alternatively, if you’d like to test in-app and push notifications via the command-line you can follow the following examples below for each platform.

Testing Push with iOS Apps via CURL

You can send a single notification through the terminal via CURL and the Messaging API. You will need to replace the following fields with the correct values for your test case:

curl -X POST -H "Content-Type: application/json" -d "{\"app_group_id\":\"YOUR_APP_GROUP_ID\",\"external_user_ids\":[\"YOUR_EXTERNAL_USER_ID\"],\"messages\":{\"apple_push\":{\"alert\":\"Test push\",\"extra\":{\"YOUR_KEY1\":\"YOUR_VALUE1\"}}}}" https://api.appboy.com/messages/send

Testing Push with Android Apps via CURL

You can send a single notification through the terminal via cURL and the Messaging API. You will need to replace the following fields with the correct values for your test case:

curl -X POST -H "Content-Type: application/json" -d "{\"app_group_id\":\"YOUR_APP_GROUP_ID\",\"external_user_ids\":[\"YOUR_EXTERNAL_USER_ID\"],\"messages\":{\"android_push\":{\"title\":\"Test push title\",\"alert\":\"Test push\",\"extra\":{\"YOUR_KEY1\":\"YOUR_VALUE1\"}}}}" https://api.appboy.com/messages/send

Testing Push with Kindle Apps via CURL

You can send a single notification through the terminal via cURL and the Messaging API. You will need to replace the following fields with the correct values for your test case:

curl -X POST -H "Content-Type: application/json" -d "{\"app_group_id\":\"YOUR_APP_GROUP_ID\",\"external_user_ids\":[\"YOUR_EXTERNAL_USER_ID\"],\"messages\":{\"kindle_push\":{\"title\":\"Test push title\",\"alert\":\"Test push\",\"extra\":{\"YOUR_KEY1\":\"YOUR_VALUE1\"}}}}" https://api.appboy.com/messages/send

Testing Push with Windows Universal Apps via CURL

You can send a single notification through the terminal via cURL and the Messaging API. You will need to replace the following fields with the correct values for your test case:

curl -X POST -H "Content-Type: application/json" -d "{\"app_group_id\":\"YOUR_APP_GROUP_ID\",\"external_user_ids\":[\"YOUR_EXTERNAL_USER_ID\"],\"messages\":{\"windows_push\":{\"push_type\":\"toast_text_01\",\"toast_text1\":\"test_title\"}}}" https://api.appboy.com/messages/send

Testing Push with Windows Phone Apps via CURL

You can send a single notification through the terminal via cURL and the Messaging API. You will need to replace the following fields with the correct values for your test case:

curl -X POST -H "Content-Type: application/json" -d "{\"app_group_id\":\"YOUR_APP_GROUP_ID\",\"external_user_ids\":[\"YOUR_EXTERNAL_USER_ID\"],\"messages\":{\"windows_push\":{\"push_type\":\"toast\",\"toast_title\":\"test_title\",\"toast_content\":\"message_goes_here\",\"toast_navigation_uri\":\"uri_goes_here\"}}}" https://api.appboy.com/messages/send