Apple designed introductory offers specially for this.
How do these introductory offers in iOS work exactly? Well, offers within in-app purchases mean that any user who is eligible can get an introductory price and a free trial if the app has auto-renewable subscriptions. However, there is one condition — a customer can only receive Apple’s introductory offer if they haven’t got one before for the product in question or any other products belonging to the same subscription group. This way, you can easily boost your subscriptions.
To start using this cool feature, you should go to App Store Connect and set up introductory offers. But which users are eligible and which are not? You can determine it in your app. The app will query the App Store for a list of available products, upon which you should display the introductory pricing to any user who is eligible to receive them.
We already talk about introductory offers in our previous article. If you already read it, you may skip this block.
There was only one kind of introductory offers till iOS 10 – free trial. Now this list was expanded to three options: Free trial, Pay as you go, Pay up front.
With this option, a customer can be offered a one-time discount for either one or several subscription periods. Upon the expiration of these periods, the regular subscription price will be applied again. Let’s say the price of your service is $3.99 per month after the one-time offer is applied. It will be valid for 2 weeks, and if the customer likes your service, they will carry on using it at the regular price of $9.99 per month.
With Pay as you go, the price has to be less than the regular one. So, you can’t make a user pay $19.99 per month within the initial 2 months and $9.99 per month later. Luckily, there is a Pay up front model, which partially solves this problem.
Here are available begin durations depending on subscription duration:
Under this model, customers have the option to pay in advance for several months at once. After this period is finished, the subscription will return to its regular price. So, if 3 months of your service’s cloud storage costs $14.99 with a one-time payment, then 3 months later, the price will be $9.99 per month. The two major differences between Pay as you go and this model are listed below.
The offer can only be valid for a single period of 1, 2, 3, 6, or 12 months.
A free trial is a well-known option that has a lot in common with the Pay up Front model. One of its prominent differences is its starting price of $0.
Now when we know what are introductory offers, let’s create them.
Go to App Store Connect, open “Features” section and choose your subscription:
Click at “+” near “Subscription Prices” and choose “Create Introductory Offer”:
Select all territories where this offer will be available:
As we previously noticed, you may have only one introductory offer per subscription and per territory.
Enter start date and end date:
Choose one of 3 kinds of subscription offers:
Enter the following info depending on your previous selection:
If you chose Pay as you go or Pay up front, you will be offered to set up a price at every territory:
Click “Done”. Good job! You created an introductory offer.
There is a special class for introductory offers called SKProductDiscount
. This class is a part of StoreKit
library which handles your app’s In-app purchases. Every product (an object of SKProduct
class) contains an optional IntroductoryPrice
property of type SKProductDiscount
.
SKProductDiscount
contains information about introductory offer:
paymentMode
is an introductory offer kind. The possible values are: payAsYouGo
, payUpFront
, freeTrial
.price
and priceLocale
are price and locale of introductory offer.numberOfPeriods
is a number of introductory offer periods. For pay up front and free trial it will be always 1.subscriptionPeriod
is a duration of introductory offer period. It can be a day, a week, a month or a year.You can use this API to correctly show subscription terms to a user, including subscription duration and price.
Do not show a subscription offer to users if they are not eligible for it. It’s very important to check this beforehand.
There’s an important thing you have to keep in mind before creating the best introductory offer. You must check user eligibility before showing them an introductory offer. The fact is that user can use an introductory offer just once per subscriptions group. For example, if there are 3 plans in your app: Bronze, Silver and Gold, which are in one subscription group, and every plan offers a free weekly trial, a user can activate only one of these free trials. And they can activate a trial just once (in this subscriptions group). If they have done it once previously, we can not show them a “Try the app for free” screen. Instead of this, we should redirect a user to a screen where they can buy a paid subscription.
It’s your responsibility to check this.
And here are the funny things begin ?. There are no functions in StoreKit
to check if user already used introductory price or not. The only way is to keep all subscriptions receipts for all subscriptions groups somewhere (e.g. on your server). When it’s time to check user eligibility, you should find all transactions of every receipt from necessary subscriptions group. When you find it, look through their is_trial_period
и is_in_intro_offer_period
fields. If these values are equal to 1 somewhere, a user has already used free trial/introductory offer.
Too hard, huh? You will need your own server to store all transactions. You just wanted to know if user can activate introductory price or not…
You can use Apphud to properly track your subscriptions and get actual real-time analytics. Start now for free!
Thus, new users can always activate introductory offers. Among current subscribers – only those who have never used an introductory offer in this subscription group before.
StoreKit
API for this. Follow App Review guidelines to avoid app rejection.Introductory offers are amazing instruments for attracting new customers. But unfortunately, there are lots of stumbling blocks here, like creating your own server setup just to check a user’s eligibility. To make things simpler, you can use a service like Apphud.