Key Concepts
An overview of the key Nami platform concepts.
The Nami platform has a few key concepts that are important to understand:
Let's take a look at each of these in more detail and see how they are related.
App
Your app on the Nami platform. It all starts here. Creating an app is the first step in getting started with Nami.
Your app may run across a multitude of platforms and environments (such as development, staging, and production). All of these may be grouped under a single app to minimize the amount of configuration work needed to manage an app across multiple platforms.
App Store Platform
An App Store Platform where your app users complete their transactions. Examples of App Store Platforms include:
Apple's App Store
Google's Play Store
Roku
Note the App Store Platform is related to the unique platform that process transactions. In the example of the Apple ecosystem where you have iOS, iPadOS, tvOS, watchOS, and macOS, since they all transact on the App Store, there is only a single App Store Platform for each of these environments.
App Platform
An App on the Nami Platform may have several App Platforms associated with it. Each App Platform must be associated with a single App Store Platform.
In a simple use case, your app will have one App Platform per App Store Platform that you sell on.
Nami also supports having multiple App Platforms with the same App Store Platform. You may want to use this functionality when you have a different app on the Google Play store for testing and production.
Campaigns
A Campaign is the object that provides the "How".
How are you going to show your paywalls and products to your users? Under the hood, Campaigns maintain the rules engine for when and how paywalls will be presented to your customers.
The Nami Control Center will allow you to configure these rules based on certain Campaign Templates so that you can interact with your users in a way that meets your needs.
Customer Journey State
The Customer Journey is the way a user's purchase relationship with your app changes over time. This is affected by a number of events such as purchases, cancellations, as well as more complex scenarios like free trials and account holds.
Nami models all the signals about a single user and puts these into a single Customer Journey State for each user. This state can be used by Campaigns, directly in your app through the SDK, or in any 3rd party integration.
The list of Journey States available is:
Journey State | Definition |
---|---|
former_subscriber | The user has previously had a subscription but does not have one currently. |
in_account_hold | User is currently in an account hold. Android Only |
in_grace_period | The user is currently in grace period due to their payment not processing. |
in_intro_offer_period | The user is currently on a discounted price offered when they first make a purchase. |
in_pause | The user's subscription has been paused at their request and will automatically resume. Android Only |
in_trial_period | The user is currently in a free trial. |
is_cancelled | The user has cancelled their subscription but still has access to their entitlements until the current billing terms ends. |
Devices
We create and store a Device for each physical device that connects to the Nami servers through our SDKs.
Devices contain a minimal amount of information to help us provide our services. These data include no device fingerprints or other PII and location information is only stored at the country level. For more information, read about how we design for data privacy.
Entitlements
An Entitlement is an object that grants a device access to a set of features or content in an app. Entitlements are a property of the app and represent the same concept of access across all platforms.
An app may have multiple Entitlements. For example, you could have one Entitlement that unlocks a set of image filters in your photo utility app and a second Entitlement that unlocks access to a stock photo library.
For your customers, an Entitlement can be active or inactive. When the Entitlement is active, the user should be allowed to access the appropriate paid content or functionality in your app. When the Entitlement is inactive, you will want to prevent your users from access paid features.
Entitlement management is a big piece of the Nami platform and we provide tooling to make this management and granting of Entitlements as easy as possible.
External Identifiers
An External Identifier is any unique identifier that can be used to define a User.
You can create your own External Identifiers in our SDKs to track your customers. Nami may also create external identifiers from data provided by the purchase platforms or from any 3rd party integrations with the Nami SDK.
External Identifiers have 2 main fields:
A
key
that serves as a label to define the source of the identifier.A
value
that is the actual identifier itself.
External Identifiers on the Nami platform never contain PII.
Paywalls
A Paywall is a few things:
The visual presentation of your paid offering to your users.
The checkout page for your users to complete a transaction.
A Call-To-Action (CTA) that your users must engage with before they can continue to use your app (it must be dismissed).
In the Nami Control Center, building a paywall is all about selecting the products you wish to offer to your users and setting up the imagery and marketing copy that will be used to present that offer.
App paywalls come in a variety of forms. Before Nami, these screens were generally hard coded into an app, requiring significant developer time for implementation and maintenance.
Nami shifts management of your app's paywall to the cloud which allows your team members responsible for revenue to operate independently from your development team.
You can now make changes to the marketing copy or artwork instantaneously without requiring an update and app review. You can even modify which products you offer for sale with just a few clicks.
Since the paywall is managed from the cloud, you can now have multiple paywalls to experiment with tone, style, and more.
Product SKUs
A Product SKU is an in-app purchase SKU or ID as defined within a specific App Platform. Products define the in-app purchase type, price points, bill terms, and other related data.
A Product SKU is specific to an App Platform.
Product SKUs are created within each app store platform and then added to the Nami platform for use in your app. For example, Apple's App Store products are created in App Store Connect.
Users
A User is how we define the users of your app.
Every device that uses our SDK will have an associated User.
In a very simple app, there may be a one-to-one relationship between devices and users. In more complex apps, a User may have many devices (just like your actual customers).
Users are defined by External Identifiers. Creating an External Identifier allows for multiple devices to be linked together into a single User profile.
Users have a standard set of properties that are always available.
User Property | Definition |
---|---|
Active Entitlements | A list of all active entitlements for the user. |
Customer Journey State | The current state customer journey state for the user. |
Devices | A list of all devices that belong to this user. |
External Identifiers | A list of all External Identifiers associated with this user. |
How Do These Relate?
Let's first look at the objects that are created in our web portal, the Control Center.
An App on the Nami Platform will have a set of Entitlements, App Platforms, and Campaigns.
A Campaign has a set of Paywalls that are used in the Campaign.
App Platforms have a set of Product SKUs that grant an Entitlement and are included in Paywalls.
Those also a set of objects that get created through our SDK by your users as they are using the app. These are Devices, External Identifiers, and Users.
Users belong to an App and Devices belong to an App Platform. A device must be an Apple or a Google device, it cannot be both. However, a User may have devices on both the Apple and Google platforms.
A User is linked to multiple devices through an External Identifier.
Last updated