Event Types

A list of the current event types Nami generates.

Full JSON schemas for all events partners are available at:
https://app.namiml.com/api/v1/events/schema/

device

Events in this category are generated by a specific device using the Nami SDK.

Event TypeDescription
device.impressionThis event is produced each time the device presents a paywall screen to the user.
device.session.startProduced at the start of an app session.
device.session.endProduced at the end of an app session.
device.transactionProduced when a purchase is generated on the device.

purchase

Events in this category are generated for a specific purchase.

Event TypeDescription
purchase.updatedTriggered by any change to Purchase.

user

User events are tied to a specific user in the Nami platform.

User event payloads include the following data on the user's current state

Below is an example payload.

{
  "active_entitlements": [
    {
      "description": "Radio Nami Premium",
      "entitlement_ref_id": "premium",
      "expiration": "2020-10-10T23:58:51Z",
      "last_verified": "2020-09-10T00:00:00.356795Z",
      "name": "Radio Nami Premium",
      "purchase_platform": "apple",
      "sku_ref_id": "radio_nami_monthly_subscription"
    }
  ],
  "customer_journey_state": {
    "former_subscriber": false,
    "in_account_hold": false,
    "in_grace_period": false,
    "in_trial_period": false,
    "in_intro_offer_period": false,
    "in_pause": false,
    "is_cancelled": false
  },
  "devices": [
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "platform": {
        "id": "00000000-0000-0000-0000-000000000000",
        "name": "App Store",
        "platform_type": "apple",
        "marketplace_app_id": "com.namiml.RadioNami"
      }
    }
  ],
  "event_type": "user.subscription.renewed",
  "event_platform": "apple",
  "external_ids": [
    {
      "key": "original_transaction_id",
      "type": "original_transaction_id",
      "value": "1000000500000000"
    },
    {
      "key": "external_id",
      "type": "uuid",
      "value": "00000000-0000-0000-0000-000000000000"
    }
  ],
  "user_id": "00000000-0000-0000-0000-000000000000",
  "id": "00000000-0000-0000-0000-000000000000",
  "created_date": "2020-05-29T00:57:11.227760+00:00"
}

user.journey

User journey events describe the journey your app users go on as you try to nurture them towards being sustained paying customers.

trial

Free trials are an important tool in converting users of your app to loyal paying customers. We offer a few events to track this important stage of the customer journey.

Event TypeDescription
user.journey.trial.convertedA user's free trial has ended and they are now paying for their subscription.
user.journey.trial.did_not_convertThe user's subscription has expired and they did not continue as a paying subscriber.
user.journey.trial.startedThe user started a free trial.

user.subscription

User subscription events are used to track any changes to a user's subscription status. Since Nami runs both cross-platform and cross-device, we can sync your users' subscription status across platforms.

These events can be used to manage changes to a user's entitlement state as well as provide analytics insights into your subscriber base.

Event TypeDescription
user.subcription.cancelledUser cancelled their subscription. A cancellation is the point at which the user decided to cancel or shut off auto-renewal on a subscription. At this time the user still has access to their entitlement.
user.subscription.expiredUser's subscription expired, either because it does not auto-renew, they had previously cancelled, or the payment has not been received. The expired event occurs when the final subscription billing term ends and the entitlement is revoked.
user.subscription.in_grace_periodUser is currently in grace period with an expired subscription due to the payment failing.
user.subscription.pausedUser paused their subscription and it will automatically resume at a future time. Android only
user.subscription.pending_sku_changeUser has purchased a new SKU as part of an upgrade, downgrade, or crossgrade, but has not been billed yet for that change. The new SKU will go into effect at the next bill term.
user.subscription.purchasedUser made a new purchase
user.subscription.renewal_in_grace_periodUser was in grace period and the subscription was recovered.
user.subscription.renewedUser's subscription was renewed.
user.subscription.resumedUser re-enables auto-renew after previously turning auto-renew off.

or

User resumed a subscription that had previously been paused. Android only
user.subscription.sku_changeUser has purchased a different SKU that grants the same entitlement.
user.subscription.transferred.fromThis event informs you that a user's entitlement was revoked by an entitlement transfer. See Entitlement Transfers below.
user.subscription.transferred.toThis event informs you that a user was granted an entitlement by an entitlement transfer. See Entitlement Transfers below.

Entitlement Transfers

The Nami SDK manages the concept of a user account in your app through the NamiCustomerManager.login and NamiCustomerManager.logout calls.

If you call NamiCustomerManager.login with a external_id, we will link that app install to the provided identifier.

Call loginwhen a user signs up, registers, or logs in to a previously created account.

If the user logs out in your app, be sure to also call logout

Please note, there may still be valid purchases on the device. When those entitlements get associated with this new user, we revoke the entitlement on the old user so the old account will no longer have access.

This is done via an entitlement transfer process and our event system will produce two events for you to understand this transfer

  • user.subscription.transferred.from
  • user.subscription.transferred.to

which describes which user we revoked the entitlement from, the from user, and which user was granted the entitlement, the to user.

Please see Accounts, Login, and Logout for more information about managing user accounts.


What’s Next