Before we start explaining, unlock your iPhone, open the App Store, go to the “Apps” tab and check for the following
Now that you found an app that includes In App Purchases, count how many of them you can find on the page.
In the example of the 🇫 🇷App Store app page from April 18th 2020, 75% of the presented apps include In App Purchases. It can mean 2 things :
It is probably a little bit of both and it is understandable. The App Store is a showcase and you want to get the most from it. When Apple features a totally free app they don’t get anything from it besides long term satisfaction with the product. When they offer paid or freemium app including In App Purchase, they get up to 30% of each sale.
If your app has In App products, you might help them help you when you ask for a promotion.
Purchasely is the only In-App Subscription SaaS platform from build to interface, compliant with mobile, TV and app store guidelines. Purchasely gives Marketers full control and ease to increase and retain cross-channel subscribers — in days instead of weeks.
It’s easy, free, with very few competitors and you might rank in the second position on the App Store search and get a full height page on the App Store … it is promoted In-App purchases !
Promoting In-App Purchase is a feature from the App Store to highlight some the your digital goods you sell within your apps. These items are searchable and appear in the search result page, they can boost the visibility of your app through your sellable products. The promoted products can bring you up in the search list and will also give you more space as your app will also appear.
More space than your competitors is always a good thing no ?
Users can see your promoted products from the search or directly from your app page.
When the user taps on the Free trial from the search, the app page opens showing more about the associated app before the purchase.
The if the user re-taps on it he will be able to process download of the app (or will be led to to the app launch screen).
Finally the apps open and the developer can handle the purchase after some on boarding screens (see Maketing checklist below).
This really is the fastest path to conversion : 6 taps to download and purchase. If you have already developed your In-App Purchase, making it promotable requires few things from developers and marketers.
Marketers won’t have much to do to provide Promoted In-App Purchase. They will only need to produce the following contents:
Set these informations in App Store Connect and you’re good to go !
Before moving and relying on the developers for what’s coming you might want to rethink your flow to optimize it.
In the example above, the purchase is deferred and 3 steps are required to finally see the purchase screen. You will have:
Each of this step will make your conversion drop especially if they are not re-insurance steps.
Reduce these steps to the minimum to get the most from your user initial will to purchase.
Unless registration is mandatory (age conditions on dating sites), defer it to after the purchase is made by encouraging your users to register to enjoy their purchases on all the devices.
Promoting an In-App product requires a validation from the Apple App Review Team. This validation is independent from the initial submission, you can first make the App Store review team review your product than its promotion.
Developers will have more work to do to make it work.
Save developers’ valuable time and expertise with a two-step integration and just four lines of code and let them focus on product development instead of marketing support or installing updates.
To handle promoted In App Purchase, you must implement the following method of the SKPaymentTransactionObserver
func paymentQueue ( _ queue: SKPaymentQueue, shouldAddStorePayment payment: SKPayment, for product: SKProduct ) - > Bool {< br >// Process payment<br>SKPaymentQueue.default().add(payment)<br>return true<br>}
func paymentQueue(_ queue: SKPaymentQueue, shouldAddStorePayment payment: SKPayment, for product: SKProduct) -> Bool {<br>// Process payment<br>SKPaymentQueue.default().add(payment)<br>return true<br>}
func paymentQueue(_ queue: SKPaymentQueue, shouldAddStorePayment payment: SKPayment, for product: SKProduct) -> Bool {<br>// Process payment<br>SKPaymentQueue.default().add(payment)<br>return true<br>}
Returning true
will make the purchase window appear immediately when the app opens which might not what you want to do.
If your app displays a specific splash screen, requires the user to login, displays an onboarding you might want to defer the appearance of the modal to whenever the app is ready.
In that case you must implement the following.
private var deferredPayment: SKPayment? func paymentQueue(_ queue: SKPaymentQueue, shouldAddStorePayment payment: SKPayment, for product: SKProduct) -> Bool {
// Keep the transaction somewhere to process it afterwards
deferredPayment = payment
return false
}
// Call that method when the app is ready
func processPayment() {
guard let payment = deferredPayment else { return }
SKPaymentQueue.default().add(payment)
self.deferredPayment = nil
}
private var deferredPayment: SKPayment? func paymentQueue(_ queue: SKPaymentQueue, shouldAddStorePayment payment: SKPayment, for product: SKProduct) -> Bool { // Keep the transaction somewhere to process it afterwards deferredPayment = payment return false } // Call that method when the app is ready func processPayment() { guard let payment = deferredPayment else { return } SKPaymentQueue.default().add(payment) self.deferredPayment = nil }
If you are promoting auto-renewing subscriptions you must display the terms and conditions before processing purchase. In that case instead of adding the payment to the SKPaymentQueue
, show your product page.
private var deferredPayment: SKPayment? private var deferredPaymentProduct: SKProduct? func paymentQueue(_ queue: SKPaymentQueue, shouldAddStorePayment payment: SKPayment, for product: SKProduct) -> Bool { // Keep the transaction somewhere to process it afterwards deferredPayment = payment deferredPaymentProduct = product return false } // Call that method when the app is ready func processPayment() { guard let payment = deferredPayment, let product = deferredPaymentProduct else { return } if #available(iOS 11.2, *), let period = product.subscriptionPeriod, period.numberOfUnits > 0 { // Show the purchase details screen showPurchaseScreen(for: product) } else { SKPaymentQueue.default().add(payment) } self.deferredPayment = nil self.deferredPaymentProduct = nil }
private var deferredPayment: SKPayment? private var deferredPaymentProduct: SKProduct? func paymentQueue(_ queue: SKPaymentQueue, shouldAddStorePayment payment: SKPayment, for product: SKProduct) -> Bool { // Keep the transaction somewhere to process it afterwards deferredPayment = payment deferredPaymentProduct = product return false } // Call that method when the app is ready func processPayment() { guard let payment = deferredPayment, let product = deferredPaymentProduct else { return } if #available(iOS 11.2, *), let period = product.subscriptionPeriod, period.numberOfUnits > 0 { // Show the purchase details screen showPurchaseScreen(for: product) } else { SKPaymentQueue.default().add(payment) } self.deferredPayment = nil self.deferredPaymentProduct = nil }
Once a user purchased the item you don’t need to display it on the App Store page of your App. You might want to give more space to other products.
You can remove the promoted In-App purchase by implementing the following:
SKProductStorePromotionController. default () . update ( storePromotionOrder: [ product ] , completionHandler: nil )
SKProductStorePromotionController.default().update(storePromotionOrder: [product], completionHandler: nil)
SKProductStorePromotionController.default().update(storePromotionOrder: [product], completionHandler: nil)
You can simulate the behaviour of the App Store before the purchase is approved using an App Store URL :
itms-services://?action=purchaseIntent&bundleId=com.example.app&productIdentifier=product_name
Purchasely handles everything listed in that chapter out of the box. Just call Purchasely.isReadyToPurchase(true) whenever you are ready to display the purchase.
In App Purchase gives you the opportunity for more visibility. Implementing promoted In-App purchases boosts that opportunities.
Don’t forget to reduce the steps before purchase and measure the number of users initiating that process and their conversion to be able to improve your conversion.
Purchasely SDK offers you all that tools out of the box with 0 extra development work.