Introductory offers is a great way to attract new customers to your cool app. Everybody loves discounts – so why not to offer people what are they waiting for? A discount! Apple designed introductory offers specially for this.
Kinds of introductory offers
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.
Pay as you go
Using this model you offer one-time discount for one or several subscription periods. Apple will withdraw regular subscription’s price at the end of these periods. For example, a user can subscribe to your service worth $3.99 per month. This price is valid for 2 weeks, after which a user can continue using your service at a regular price $9.99 per month.

The price of Pay as you go offer must be less than a regular price. For example, you can not offer a user to pay $19.99/month during the first 2 months and $9.99/month after. This issue is partially solved by using of Pay up front model.
Here are available begin durations depending on subscription duration:

Pay up front
Here you offer users to pay immediately for several months (1, 2, 3, 6 or 12) in advance. At the end of this period user will pay for subscription at a regular price. For example, you can offer 3 months of cloud storage with a one-time payment of $14.99. And after these 3 months a user will pay $9.99 per month. There are 2 main differences from Pay as you go offer:
- The price of Pay up front offer does not have to be less than the cost of the regular subscription.
- The number of periods where the offer is valid is always 1. In other words, the offer is valid for only one period of 1, 2, 3, 6 or 12 months.

Free trial
And, of course, our good old friend – free trial. We can notice that free trial is a kind of pay up front model, where starting price is 0.
Several notices
- Every subscription can only have one introductory offer per territory (country). Thus you can create a separate offer for each territory. But only one per territory. It’s enough to create one introductory offer for all territories in most cases.
- A user can use only one introductory offer per products group.
- Introductory offers are available for iOS 10, macOS 10.12.6, tvOS 10 and later.
How to create Introductory offer?
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:
- Pay as you go, pay up front: the number of periods and a price
- Free trial: a duration of free trial
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.
Introductory offers API
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
andpriceLocale
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 a user if he is not eligible for it. It’s very important to check this beforehand.
User eligibility determination
You must check user eligibility before showing him 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 he can activate a trial just once (in this subscriptions group). If he has done it once previously, we can not show him a “Try the app for free” screen. Instead of this we should redirect a user to a screen where he 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…
We faced this problem long time ago and decided to solve it. So the idea of Apphud revealed. Apphud is convenient analytics for iOS auto-renewable subscriptions. One of it’s features is a sending subscriptions-based events (e.g. subscriptions renewals, cancellations or refunds) to your favorite analytics service (like Amplitude, Flurry or Mixpanel) for further analysis. The project is currently in Beta and you can participate in testing! All you need it to visit Apphud and enter your email.
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.
Some notes
- Always check user eligibility before showing him an introductory offer.
- It’s better to check user eligibility as soon as possible: every delay at showing purchase screen may lead to a conversion decrease.
- Introductory prices are being shown on App Store, so you can use this for a marketing purposes. These users can start a trial or activate an introductory offer right on the App Store:

- Always display introductory offers in a clear way to users. You may use
StoreKit
API for this. Follow App Review guidelines to avoid app rejection. - Show a subscription offer to a user as soon as possible. You may increase a conversion to purchases using this approach.
- You can (but it’s not mandatory) to add the following link to your app so users may changes their subscription just in couple of taps: https://buy.itunes.apple.com/WebObjects/MZFinance.woa/wa/manageSubscriptions
Conclusion
Introductory offer is an amazing instrument to attract new customers. In addition to reduced to 15% Apple’s commission for a loyal customers it may help you to earn much more. But unfortunately there are lots of stumbling blocks here, like your own server setup just to check user’s eligibility.