Promotional offers allow you to increase the revenue for your app by promoting a user’s subscription to a new offer. You can use this technique to win back users who canceled their subscription or to upsell users from a monthly to a yearly plan.
Implementing promotional offers differs per project depending on whether you use StoreKit directly or 3rd party tools like RevenueCat. I won’t go into the details of code implementations, but I will inspire you on how your app’s revenue can grow by promoting users to new offers.
What is a Promotional Offer?
Promotional offers allow you to present discounted pricing for auto-renewable subscription products. They can be effective in winning back lapsed subscribers or retaining current subscribers.
For example, RocketSim users of a monthly plan will get a promotional offer to switch to a yearly plan and save about 50% on their monthly costs:
Discounts like the above are often a win-win in case the app comes with a discounted annual plan (more about that later).
Configuring a Promotional Offer in App Store Connect
You can configure a promotional offer directly inside App Store Connect. Start by navigating to the subscription product for which you want to create a discounted offer. and press the plus button behind the “Subscription Prices” header:
For further instructions, I’d like to forward you to Apple’s up-to-date documentation: Setting up promotional offers.
Implementing Discounted Offers in your app
The implementation consists of two parts: fetching the Promotional Offer and writing business logic to determine whether the user should see a discounted offer. For the first part, I recommend reading through Apple’s up-to-date documentation: Implementing promotional offers in your app. Depending on whether you use StoreKit directly or not, you might want to look into the documentation for the 3rd party tool you’re using. For example, here’s RevenueCat’s documentation.
The business logic has to be implemented by yourself. For RocketSim, I decided to create a UpsellProvider
which will provide a UpsellMenuItemViewModel
if the user can be promoted:
final class UpsellProvider: ObservableObject {
static let standard = UpsellProvider()
@Published var upsellMenuItemViewModel: UpsellMenuItemViewModel?
var hasUpsell: Bool {
upsellMenuItemViewModel != nil
}
private let purchaseInfoFetcher: PurchaseInfoFetching
private let activeProductFetcher: ActiveProductFetching
private let licenseKeyStore: LicenseKeyStoring
// ...
}
Since it’s an observable object, I can use this instance anywhere in the UI to show the Promotional Offer. Anytime the app becomes active, I’m reevaluating whether a discounted offer should be displayed. The business logic depends on the offers you like to display but generally looks as follows:
- Fetch the user’s current subscription details
- Use the subscription details to determine whether the user becomes eligible for a discounted offer
- If your business logic determines eligibility, you need to fetch and see whether there’s a promotional offer available for the user’s subscription product.
- Display the discounted offer in the UI
Different techniques for displaying promotional offers have varying goals per technique. Let’s go over a few examples.
Common Techniques to Increase App Revenue
Win-back campaigns and discounted offers are not unique to mobile applications. It’s a common technique used by all kinds of digital products. You could even say it’s similar to real-life examples like the upsells near the supermarket checkout.
Promotional Offers aim to increase your app’s revenue and prevent users from churning. Many think discounted offers will cost you money, but the opposite is true. If done right, you’ll only show offers to users that are likely to churn. You can use analytics tools to predict these patterns based on other users, or you can think smartly ahead.
Promoting monthly subscribers to a yearly plan
The best example to explain this principle is the scenario of promoting monthly subscriptions to yearly subscriptions. Imagine an app with the following two products:
- A yearly plan of €30 (€2,50 per month)
- A monthly plan of €6
The yearly plan looks more attractive, but there will still be users who decide to go for a monthly plan to see if they like the product. Your analytics tool can show the average number of renewals for a monthly plan. For example, 36% of RocketSim’s monthly subscription users renew at least 2 times. In other words, I should show the discounted offer before the end of the 3rd month to ensure I’ve got enough users to see the discount.
It’s important to understand these users would likely stop their monthly subscription (based on the statistics). Therefore, it’s either losing monthly revenue or trying to retain those users by showing a discount.
The trick is to create a Promotional Offer that feels like a win-win. In the above example, there’s quite a gap between the monthly and yearly plans. We could offer a 50% discount on the monthly price and still make more than the yearly plan: €6 * 50% = €3 (€36 per year). Yet, your users will be happy as they’ll spend 50% less than if they continue their monthly subscription.
Targeting non-renewing subscriptions
Inside your app, you should be able to determine whether a user already canceled their subscription. It’s a familiar pattern: users purchase a subscription and cancel it immediately to avoid accidentally renewing.
If users are still active in their last month, it’s likely they formed a habit, and they will renew themselves. However, you can increase the chances of renewing by making it easier for them to perform the renewal. This is where your Promotional Offer comes into place: provide a discounted renewal for their current plan. Depending on how often your users return to your app, you want to show the offer within the last weeks or days before the subscription ends.
Win back previous subscribers
It might be that you’ve not been able to promote users before their subscription ended. Those users paid for a subscription before but still need to renew themselves. Maybe they only sometimes use your premium offering but return to use the free product regularly. In this scenario, you can show a Promotional Offer to win back those users. You’ll have to experiment with pricing to determine whether the user didn’t renew due to the current subscription price or because they’ve got other reasons. Using analytics and experiments will be helpful in these cases for optimal results.
Conclusion
Promotional Offers are an excellent way for you to increase the revenue of your app by showing discounted offers to your users. If done right, you’ll make more money than you lose. The implementation differs depending on your tech stack, but you’ll always have to write the business logic for determining eligibility yourself.
If you like to prepare and optimize, even more, check out the optimization category page. Feel free to contact me or tweet me on Twitter if you have any additional tips or feedback.
Thanks!