Purchasely Blog

App Store: 5 must know tips to improve your visibility and conversion

Written by Jeff Grang | Jun 4, 2020 10:00:00 AM
  • 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.

Learn how to improve your visibility and conversion on App store with concrete tools from our In App Purchases & Subscriptions experts.

Increasing your chances for App Store featuring

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.

The App Store “Apps” page is filled mostly with Apps including In App Purchases.

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 :

  1. Most apps now include In App Purchases
  2. Apple choses to promote apps selling goods and services using In App Purchases on which they get back up to 30%.

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.

Promoted In-App purchases

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 ?

Meditopia appears in the very first results of the App Store search results and the Subscription offers an additional visibility.

User flow

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).

A common purchase flow of download and purchase using promoted In-App Purchase

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.

 

Marketing checklist

Marketers won’t have much to do to provide Promoted In-App Purchase. They will only need to produce the following contents:

  • a promotional image representing the product. It must be different from the app icon to avoid confusing the user and a rejection from Apple App review team
  • a 30 character display name describing the item
  • a 45 characters description

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:

  1. The on boarding
  2. The login
  3. The personalisation

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.

A shorter In App process that leads to better conversion

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.

Developer checklist

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.

Handle the purchase

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.

 

Wait for the app to be ready

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
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
}

 

Display subscriptions terms and conditions

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 deferredPaymentProduct: SKProduct?
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
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 }
 
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
}

 

Remove already purchased items

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)

Test your flow

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.

 

Conclusion

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.