/

/

Architecting Subscri...

Architecting Subscription Entitlement Engine

Michael Qonversion

Michael

Nov 10, 2020

This article is based on the WWDC 2020 presentation and provides guidance on a subscription app’s entitlement architecture. It would be useful for engineers, server-side teams, and data analysts.

Architecting Subscription Entitlement Engine

Understanding the subscriber journey

Subscription Entitlement Engine

Access to content is the fundamental basis of subscription entitlement. And access may vary depending on the level of service, geography, and other factors. As was shown above, a subscription can have several states. The entitlement process needs to account for all of the potential subscription states. 

To be able to manage user access, power tailored communication with your users, win lapsed users back, and so on, you need to build server-side logic that digests all subscription state data. Apple refers to this as the Entitlement Engine. (Note: Apple provided the sample Entitlement Engine code in node.js.)

The data digested by the Entitlement Engine is used to calculate the user’s entitlement. The Engine needs to calculate the correct entitlement info using the receipt data, app insights, and server-to-server notifications. The output of the Entitlement Engine is a simple JSON payload that you can use to entitle service and update your user database.

Key processes of the Entitlement Engine:

  • Prepare data: The app receipt is the source of truth for transactional data. So you need to fetch the most up-to-date info for the receipt from App Store to make sure it’s not outdated. Get server-to-server notifications.

  • Synthesize data: Digest transactional data, detect where the user is in the subscriber journey. Add data from the app, for example, hours watched, upcoming events a user is interested in, etc.

  • Condense the data into actionable insights, that will be used in the response.

  • Build the Response Object

Entitlement Engine Response Object

Distinguish cohorts of subscribers based on the subscription state and sub-state as shown below. 

You can assign positive values for cases where you would unlock access and negative values for cases where access would not be provided. Add substates using the decimal values to enhance the entitlement process. By combining state and substate you can have a value to represent the exact state of the product. You can send this value to the client. It can be used as a simple signal to unlock the service when it’s positive.

Subscription states and sub-states – Entitlement Code Example

For example, entitlement code 4.1 represents a subscriber who is currently in a trial period and has disabled auto-renewal: 

Another example, based on 4.0 code (user with standard subscription turned-off auto-renewal) you can trigger a retention message and link the user to a specific product offer.

Entitlement code example: trigger promotional offer 

Conclusions

A highly available entitlement engine will allow you to manage user access, tailor your customer communication, increase your app retention, and win lapsed subscribers back. Additionally building the server-side entitlement engine will allow you to support cross-platform entitlement logic for your web or Android apps. Yet it’s a lot of work to build and support such infrastructure.

If you want to focus on building your product, instead of building a complex server-side engine to handle the subscription logic of your app, there is a solution for that. We at Qonversion.io provide a cross-platform entitlement engine for your app out of the box. Qonversion handles receipt validation, receives server-to-server notifications, and provides you with simple output to handle user access and power your subscriber communication. On top of that, you get comprehensive subscription analytics, real-time app monitoring dashboards, integrations with 3rd party platforms like AppsFlyer, Amplitude, Facebook Ads, and more.

Architecting Subscription Entitlement Engine

Michael Qonversion

Michael

Nov 10, 2020

This article is based on the WWDC 2020 presentation and provides guidance on a subscription app’s entitlement architecture. It would be useful for engineers, server-side teams, and data analysts.

Architecting Subscription Entitlement Engine

Understanding the subscriber journey

Subscription Entitlement Engine

Access to content is the fundamental basis of subscription entitlement. And access may vary depending on the level of service, geography, and other factors. As was shown above, a subscription can have several states. The entitlement process needs to account for all of the potential subscription states. 

To be able to manage user access, power tailored communication with your users, win lapsed users back, and so on, you need to build server-side logic that digests all subscription state data. Apple refers to this as the Entitlement Engine. (Note: Apple provided the sample Entitlement Engine code in node.js.)

The data digested by the Entitlement Engine is used to calculate the user’s entitlement. The Engine needs to calculate the correct entitlement info using the receipt data, app insights, and server-to-server notifications. The output of the Entitlement Engine is a simple JSON payload that you can use to entitle service and update your user database.

Key processes of the Entitlement Engine:

  • Prepare data: The app receipt is the source of truth for transactional data. So you need to fetch the most up-to-date info for the receipt from App Store to make sure it’s not outdated. Get server-to-server notifications.

  • Synthesize data: Digest transactional data, detect where the user is in the subscriber journey. Add data from the app, for example, hours watched, upcoming events a user is interested in, etc.

  • Condense the data into actionable insights, that will be used in the response.

  • Build the Response Object

Entitlement Engine Response Object

Distinguish cohorts of subscribers based on the subscription state and sub-state as shown below. 

You can assign positive values for cases where you would unlock access and negative values for cases where access would not be provided. Add substates using the decimal values to enhance the entitlement process. By combining state and substate you can have a value to represent the exact state of the product. You can send this value to the client. It can be used as a simple signal to unlock the service when it’s positive.

Subscription states and sub-states – Entitlement Code Example

For example, entitlement code 4.1 represents a subscriber who is currently in a trial period and has disabled auto-renewal: 

Another example, based on 4.0 code (user with standard subscription turned-off auto-renewal) you can trigger a retention message and link the user to a specific product offer.

Entitlement code example: trigger promotional offer 

Conclusions

A highly available entitlement engine will allow you to manage user access, tailor your customer communication, increase your app retention, and win lapsed subscribers back. Additionally building the server-side entitlement engine will allow you to support cross-platform entitlement logic for your web or Android apps. Yet it’s a lot of work to build and support such infrastructure.

If you want to focus on building your product, instead of building a complex server-side engine to handle the subscription logic of your app, there is a solution for that. We at Qonversion.io provide a cross-platform entitlement engine for your app out of the box. Qonversion handles receipt validation, receives server-to-server notifications, and provides you with simple output to handle user access and power your subscriber communication. On top of that, you get comprehensive subscription analytics, real-time app monitoring dashboards, integrations with 3rd party platforms like AppsFlyer, Amplitude, Facebook Ads, and more.

Architecting Subscription Entitlement Engine

Michael Qonversion

Michael

Nov 10, 2020

This article is based on the WWDC 2020 presentation and provides guidance on a subscription app’s entitlement architecture. It would be useful for engineers, server-side teams, and data analysts.

Architecting Subscription Entitlement Engine

Understanding the subscriber journey

Subscription Entitlement Engine

Access to content is the fundamental basis of subscription entitlement. And access may vary depending on the level of service, geography, and other factors. As was shown above, a subscription can have several states. The entitlement process needs to account for all of the potential subscription states. 

To be able to manage user access, power tailored communication with your users, win lapsed users back, and so on, you need to build server-side logic that digests all subscription state data. Apple refers to this as the Entitlement Engine. (Note: Apple provided the sample Entitlement Engine code in node.js.)

The data digested by the Entitlement Engine is used to calculate the user’s entitlement. The Engine needs to calculate the correct entitlement info using the receipt data, app insights, and server-to-server notifications. The output of the Entitlement Engine is a simple JSON payload that you can use to entitle service and update your user database.

Key processes of the Entitlement Engine:

  • Prepare data: The app receipt is the source of truth for transactional data. So you need to fetch the most up-to-date info for the receipt from App Store to make sure it’s not outdated. Get server-to-server notifications.

  • Synthesize data: Digest transactional data, detect where the user is in the subscriber journey. Add data from the app, for example, hours watched, upcoming events a user is interested in, etc.

  • Condense the data into actionable insights, that will be used in the response.

  • Build the Response Object

Entitlement Engine Response Object

Distinguish cohorts of subscribers based on the subscription state and sub-state as shown below. 

You can assign positive values for cases where you would unlock access and negative values for cases where access would not be provided. Add substates using the decimal values to enhance the entitlement process. By combining state and substate you can have a value to represent the exact state of the product. You can send this value to the client. It can be used as a simple signal to unlock the service when it’s positive.

Subscription states and sub-states – Entitlement Code Example

For example, entitlement code 4.1 represents a subscriber who is currently in a trial period and has disabled auto-renewal: 

Another example, based on 4.0 code (user with standard subscription turned-off auto-renewal) you can trigger a retention message and link the user to a specific product offer.

Entitlement code example: trigger promotional offer 

Conclusions

A highly available entitlement engine will allow you to manage user access, tailor your customer communication, increase your app retention, and win lapsed subscribers back. Additionally building the server-side entitlement engine will allow you to support cross-platform entitlement logic for your web or Android apps. Yet it’s a lot of work to build and support such infrastructure.

If you want to focus on building your product, instead of building a complex server-side engine to handle the subscription logic of your app, there is a solution for that. We at Qonversion.io provide a cross-platform entitlement engine for your app out of the box. Qonversion handles receipt validation, receives server-to-server notifications, and provides you with simple output to handle user access and power your subscriber communication. On top of that, you get comprehensive subscription analytics, real-time app monitoring dashboards, integrations with 3rd party platforms like AppsFlyer, Amplitude, Facebook Ads, and more.

Architecting Subscription Entitlement Engine

Michael Qonversion

Michael

Nov 10, 2020

This article is based on the WWDC 2020 presentation and provides guidance on a subscription app’s entitlement architecture. It would be useful for engineers, server-side teams, and data analysts.

Architecting Subscription Entitlement Engine

Understanding the subscriber journey

Subscription Entitlement Engine

Access to content is the fundamental basis of subscription entitlement. And access may vary depending on the level of service, geography, and other factors. As was shown above, a subscription can have several states. The entitlement process needs to account for all of the potential subscription states. 

To be able to manage user access, power tailored communication with your users, win lapsed users back, and so on, you need to build server-side logic that digests all subscription state data. Apple refers to this as the Entitlement Engine. (Note: Apple provided the sample Entitlement Engine code in node.js.)

The data digested by the Entitlement Engine is used to calculate the user’s entitlement. The Engine needs to calculate the correct entitlement info using the receipt data, app insights, and server-to-server notifications. The output of the Entitlement Engine is a simple JSON payload that you can use to entitle service and update your user database.

Key processes of the Entitlement Engine:

  • Prepare data: The app receipt is the source of truth for transactional data. So you need to fetch the most up-to-date info for the receipt from App Store to make sure it’s not outdated. Get server-to-server notifications.

  • Synthesize data: Digest transactional data, detect where the user is in the subscriber journey. Add data from the app, for example, hours watched, upcoming events a user is interested in, etc.

  • Condense the data into actionable insights, that will be used in the response.

  • Build the Response Object

Entitlement Engine Response Object

Distinguish cohorts of subscribers based on the subscription state and sub-state as shown below. 

You can assign positive values for cases where you would unlock access and negative values for cases where access would not be provided. Add substates using the decimal values to enhance the entitlement process. By combining state and substate you can have a value to represent the exact state of the product. You can send this value to the client. It can be used as a simple signal to unlock the service when it’s positive.

Subscription states and sub-states – Entitlement Code Example

For example, entitlement code 4.1 represents a subscriber who is currently in a trial period and has disabled auto-renewal: 

Another example, based on 4.0 code (user with standard subscription turned-off auto-renewal) you can trigger a retention message and link the user to a specific product offer.

Entitlement code example: trigger promotional offer 

Conclusions

A highly available entitlement engine will allow you to manage user access, tailor your customer communication, increase your app retention, and win lapsed subscribers back. Additionally building the server-side entitlement engine will allow you to support cross-platform entitlement logic for your web or Android apps. Yet it’s a lot of work to build and support such infrastructure.

If you want to focus on building your product, instead of building a complex server-side engine to handle the subscription logic of your app, there is a solution for that. We at Qonversion.io provide a cross-platform entitlement engine for your app out of the box. Qonversion handles receipt validation, receives server-to-server notifications, and provides you with simple output to handle user access and power your subscriber communication. On top of that, you get comprehensive subscription analytics, real-time app monitoring dashboards, integrations with 3rd party platforms like AppsFlyer, Amplitude, Facebook Ads, and more.

Start Now for Free

Or book a demo with our team to learn more about Qonversion

Start Now for Free

Or book a demo with our team to learn more about Qonversion

Start Now for Free

Or book a demo with our team to learn more about Qonversion

Read more

Read more