LeanPlum Migration Guide

Easily plan your migration from LeanPlum to OpenBack for push & in-app messaging without interruption.

Before migrating, we recommend updating your app to include the OpenBack SDK, then users won’t be lost between app updates. The base setup steps for adding OpenBack are:

  • Create your OpenBack app on our dashboard.
  • (Recommended) Add your APNs certificate/Firebase Cloud Messaging Key to your OpenBack app.
  • Complete the basic SDK integration for Native Android/iOS or Plugin.

Integrating OpenBack will not interfere with any other services you may have - as such, you can run services alongside each other during migration.

For help with migrating to OpenBack from LeanPlum, feel free to contact the onboarding team onboarding@openback.com and we can help guide you through the process including setting up a simple plan.

1 - Feature Explanations across Platforms

LeanPlum ->OpenBack
Custom Variables & User Attributes ->Custom Segments & Attributes
Segment users based on custom in-app variables or personalize content with user attributes.Segment users based on custom in-app information and send notifications to these users. Attributes are used to store clientside information about users that is then used to personalize the content of a notification.
Events ->Custom Events
Events are used to target users for certain messages, tests, or other content changes and to measure statistics about what they do inside your app.Send notifications or in-app messages to users based on in-app actions.
Some notification metrics ->Full notification metrics
LeanPlum offers some notification metrics such as number of sent notifications, opens and bounces due to lack of delivery reliability.OpenBack provides full notification metrics out of the box that range from delivery confirmation to clicks and goal completions.
App Inbox ->App Inbox
Send messages directly to the app inbox.Send push notifications that can then be stored in the app inbox or send messages directly to the inbox.
Location Targeting
Leanplum requires an additional SDK. OpenBack requires no custom setup or integration to message your users based on location.
Allow/Block - Opt-Out Status
As this is handled on the device side, OpenBack automatically picks up the user's current status without any work required to or migrate or transfer user preferences. Users will NOT be shown the OS permission dialogue again.
Deep Links & Deep Linking
As these are defined by you at an app level, there is no work to migrate across. To make things easier for sending messages, you may want to setup shortcuts in the OpenBack Dashboard under App Settings -more details here

2 - Attributes & Custom Segments

For help with deciding whether your user information should be stored as an Attribute or a Custom Segment, contact onboarding@openback.com anytime.


OpenBack uses Attributes to personalize the content of a notification with user information that is stored on the device, such as a user’s first name. When migrating from LeanPlum, any LeanPlum User Attributes that you would like to use to personalize the notification content should be setup as OpenBack Attributes in your mobile app.

To learn more about OpenBack Attributes go here for Android and here for iOS.

Here are examples of your existing Android code for LeanPlum, and also the updated Android code for OpenBack Attributes:

// LeanPlum example code
Map<String, Object> attributes = new HashMap<String, Object>();
attributes.put("gender", "Female");
//OpenBack example code
OpenBack.setAttribute("gender", "Female");

Custom Segments

OpenBack uses Custom Segments to store user information in OpenBack on the user’s device which can then be used to target specific segments of users as well as personalizing the content of the messages.

When migrating, any LeanPlum Custom Variables that would have been used to segment your users can be converted to OpenBack Custom Segments.

To learn more about OpenBack Custom Segments go here for Android and here for iOS.

Here are examples of your existing code for LeanPlum, and also the updated code for OpenBack Custom Segments:

// LeanPlum example
@Variable public static float shootSpeed = 1; // How fast your ship shoots.
@Variable(name="Show Ads") public static boolean showAds = false;
// OpenBack example
OpenBack.setCustomSegment(OpenBack.CUSTOM_SEGMENT_1, "1.0");
OpenBack.setCustomSegment(OpenBack.CUSTOM_SEGMENT_2, "ShowAdsFalse");

3 - Custom Events

For help with deciding whether your user actions should be stored as a Custom Event or a Custom Segment, contact onboarding@openback.com anytime.

Custom Events can be used to deliver notifications to users based on in-app actions. A Custom Event can deliver the notification immediately or after a specific delay that can be set on device or by the OpenBack dashboard.

When migrating from LeanPlum, any Events that would have been used for delivering in-app messages can be converted to Custom Events.

To see more about how to use Custom Events you can go to our Android and iOS docs.

Here are examples of your existing code for LeanPlum, and also the updated code for OpenBack Custom Events:

// LeanPlum example code
// OpenBack example code
// OpenBack.signalEvent(event_name, delay_in_seconds);
OpenBack.signalEvent("Launch", 10);

4 - Goals

For help with deciding which user actions should be stored as Goals, contact onboarding@openback.com anytime.

Goals are used to track the value of actions that users complete in your app after they have received a message.

When migrating from Leanplum, any in-app purchases that would have been used for tracking KPIs can be converted to Goals.

To see more about how to use Goals you can go to our Android and iOS docs.

Here are examples of your existing code for Swrve, and also the updated code for OpenBack Goals:

// LeanPlum example code
SkuDetails skuDetails = inv.getSkuDetails(purchase.getSku());
try {
JSONObject skuData = new JSONObject(skuDetails.toString()
.substring(skuDetails.toString().indexOf(":") + 1));
skuData.getString("title"), // Alternatively, skuData.getString("productId"), if you like.
purchase.getOriginalJson(), purchase.getSignature()
/* optionally supply event parameters as an additional argument */);
} catch (JSONException e) {
Log.e("Leanplum", "Cannot get purchase price from improperly formatted SKU");
// OpenBack example code
// Goal, Step, Value, Currency
OpenBack.logGoal("goalCode", 1, 10.0, "USD")

5 - App Inbox

The App Inbox is used to store past notifications or to provide an area for storing important notifications for users to revisit.

When migrating from LeanPlum, you can convert to the OpenBack App Inbox.

To see more about how to use the App Inbox, you can go to our Android and iOS docs.

Here are examples of your existing code for LeanPlum:

// LeanPlum example code
Leanplum.getInbox().addChangedHandler(new InboxChangedCallback() {
public void inboxChanged() {
// OpenBack example code
List<AppInboxMessage> messages = OpenBack.getAppInboxMessages();
long messageCount = OpenBack.getAppInboxUnreadMessageCount();
List<AppInboxMessage> unreadInboxMessages = OpenBack.getAppInboxUnreadMessages();

5 - Importing Push Tokens

This is typically not required as by default the OpenBack SDK handles the user’s push token and syncs the token with the OpenBack Engine (backend), which starts once the OpenBack SDK is included in the app, so importing push tokens is not usually relevant, but can be supported.

A push token is a unique key, created and assigned by Apple(APNs) or Google(FCM) to create a connection between a specific mobile app on a specific iOS or Android device. The push token is then used by conventional platforms when sending push notifications from their backend systems to APNs/FCM who then make efforts to deliver the notification to that device. Push tokens change from time to time, and sometimes go stale. Push tokens are a key source of the deliverability issues which OpenBack resolves, you can read more about that here.

While not strictly necessary, OpenBack recommends setting up APNs/FCM as then a silent push notification is sent out to apps whenever there is updated content & settings for faster updates.

If you have a collection of your user’s push tokens, usually in .CSV format, we can bulk import them for you. Contact onboarding@openback.com to finalize an import plan; and also for help exporting Push Tokens from existing platforms including Airship, LeanPlum and others.


Android push tokens are always mixed casing whereas iOS push tokens can sometimes be all lower case or all upper case. If importing existing push tokens into OpenBack, pay attention to the casing of iOS push tokens to avoid duplicate records.

6 - Detailed SDK Comparisons

Android Size1.8MB230kB
iOS Size1.09MB900kB or less
Unity PluginYesYes
React Native PluginYesYes
Xamarin PluginNot AvailableYes
Titanium PluginNot AvailableYes
Cordova/Phonegap PluginNot AvailableYes
Deliverability OptimisationNot AvailableYes
Moment of Delivery ControlNot AvailableYes
Full Notification MetricsNot AvailableYes
Client-side Real-Time Content PersonalisationNot AvailableYes
Dynamic Push (Auto-Remove/Update)Not AvailableYes
App InboxYesYes
In-app Video MessageNot AvailableYes