Introductory Pricing for iOS: Getting Started
In this tutorial, you’ll learn how to add an introductory pricing option to an app that already offers an auto-renewable subscription. By Rony Rozen.
Sign up/Sign in
With a free Kodeco account you can download source code, track your progress, bookmark, personalise your learner profile and more!
Create accountAlready a member of Kodeco? Sign in
Sign up/Sign in
With a free Kodeco account you can download source code, track your progress, bookmark, personalise your learner profile and more!
Create accountAlready a member of Kodeco? Sign in
Sign up/Sign in
With a free Kodeco account you can download source code, track your progress, bookmark, personalise your learner profile and more!
Create accountAlready a member of Kodeco? Sign in
Contents
Introductory Pricing for iOS: Getting Started
20 mins
Introductory Pricing Types
There are three types of introductory pricing that you can offer per subscription, per territory:
For example, you can offer a discounted price of $1.99 per month for three months with a standard subscription price of $3.99 per month starting in the fourth month.
For example, if you want to offer a monthly subscription, but you think users need about six months to get used to the experience and become more likely to keep their subscription, you can offer a six-month introductory price of $9.99, followed by a standard price of $3.99 per month starting in the seventh month.
Note that you don’t have to use the same length of time for the introductory price and the regular subscription. So, for example, you can offer an introductory price for a six-month period followed by a yearly subscription.
This gives your users the option to cancel before the first billing takes place. If you feel confident about the content your app provides but have difficulty convincing potential subscribers it’s worth their money, this is a low-risk option that lets them decide.
-
Pay as you go (SKProductDiscount.PaymentMode.payAsYouGo): New subscribers will pay a discounted price each billing period for a specific duration. This can attract new users who are interested in your app but need that extra push to pay the normal, higher price each subscription period.
For example, you can offer a discounted price of $1.99 per month for three months with a standard subscription price of $3.99 per month starting in the fourth month.
-
Pay up front (SKProductDiscount.PaymentMode.payUpFront): New subscribers will pay a one-time introductory price for a specific duration. This is useful when you believe the user may need longer to get hooked on the content your app provides.
For example, if you want to offer a monthly subscription, but you think users need about six months to get used to the experience and become more likely to keep their subscription, you can offer a six-month introductory price of $9.99, followed by a standard price of $3.99 per month starting in the seventh month.
Note that you don’t have to use the same length of time for the introductory price and the regular subscription. So, for example, you can offer an introductory price for a six-month period followed by a yearly subscription.
-
Free trial (SKProductDiscount.PaymentMode.freeTrial): New subscribers will get access to your app’s content for free for a specific duration. The subscription begins immediately, and the first billing occurs once the free trial period is over.
This gives your users the option to cancel before the first billing takes place. If you feel confident about the content your app provides but have difficulty convincing potential subscribers it’s worth their money, this is a low-risk option that lets them decide.
No matter which type you choose to use, once the introductory period is over, the subscription will renew at the regular price.
Determining User Eligibility
Before displaying the discounted price to your users, you have to make sure that a specific, current user is eligible for the discounted price.
How will you know if the user is eligible? Great question!
Review the user’s past transactions to see if they’ve already used a discount from the same subscription group in the past. If so, the user isn’t eligible for a discounted price.
You can read more about receipt validation on Apple’s documentation. Also, check out our In-App Purchases: Receipt Validation Tutorial or the Receipts section of our great video course on In-App Purchases.
You’re not focused on receipt validation in this tutorial, but to implement the above explanation on your server, the fields you need in the JSON response from the App Store server are: latest_receipt_info, whose value is an array containing all in-app purchase transactions, and the is_trial_period and is_in_intro_offer_period fields in the receipt field for each relevant transaction.
NSUserDefaults
. In a real-life app, you should perform some sort of receipt validation to make sure that a purchase took place and that money changed hands. Apple recommends you do this on your own server, but there are ways to do it locally.
You can read more about receipt validation on Apple’s documentation. Also, check out our In-App Purchases: Receipt Validation Tutorial or the Receipts section of our great video course on In-App Purchases.
You’re not focused on receipt validation in this tutorial, but to implement the above explanation on your server, the fields you need in the JSON response from the App Store server are: latest_receipt_info, whose value is an array containing all in-app purchase transactions, and the is_trial_period and is_in_intro_offer_period fields in the receipt field for each relevant transaction.
To determine a user’s eligibility, check the values of the Subscription Trial Period and the Subscription Introductory Price Period for all IAP transactions. If the value for either of these fields is true for a given subscription, the user isn’t eligible for an introductory price for any of the products within the same subscription group.
New users are always eligible for the offered introductory price while lapsed subscribers — those who had a subscription in the past — are only eligible for the introductory price if they haven’t already used such an offer on this subscription or on other products from the same subscription group.
Offering Introductory Pricing to Eligible Users
OK, so now you’re going to add an introductory price to your IAP. Yay! :]
On App Store Connect, go to My Apps and select the app to which you want to add an introductory price. Then, go to Features ▸ In-App Purchases and select the correct auto-renewable subscription.
Then, press the + next to Subscription Prices and select Set Up Introductory Price.
Now, you’ll need to select the territories for which the new introductory price will apply. By default, all territories will be selected. For the purposes of this tutorial, and to allow you to test various success and failure states in the next section, deselect All Territories and select only United States, just like in the image below.
Press Next. Now you need to set the start and end dates for the new introductory price. Select today’s date as the Start Date and No End Date as the end date, and press Next.
Select Free trial and set the duration to 3 Days. This means that your users will get free access to your app’s content for three days before starting to pay the standard subscription price. Press Done and then press Save at the top-right.
That’s it! You’ve just set up an introductory price for your auto-renewable subscription. We’ll discuss the UX implications of introductory pricing in a minute, but technically speaking, you’re all done. Pat yourself on the back! Get ready to test this new feature.