Home
Blog
Authors
Dan Burcaw

Dan Burcaw is Co-Founder & CEO of Nami ML. He built a top mobile app development agency responsible for some of the most elite apps on the App Store and then found himself inside the mobile marketing industry after selling his last company to Oracle.

Latest articles by
Dan Burcaw
Written by
Dan Burcaw
3 Nov

Paywall AB Testing for Optimizing In-App Revenue

Paywall AB testing is an essential strategy for any app publisher wanting to optimize revenue.

Paywall AB testing is a necessary strategy for any app publisher wanting to optimize revenue. In this article we’ll provide an introduction to paywall testing by covering the following topics:

  • The paywall as an engine for growth & retention
  • Why you should be testing your paywall
  • How to conduct a paywall AB test
paywall ab testing variants
Paywalls come in may forms, offering a rich opportunity for testing.

The Paywall as an Engine for Growth & Retention

The paywall screen is how apps make money through IAPs and subscriptions. In fact, most app publishers spend very little time updating their paywall let alone optimizing it.  

The paywall can be one of the essential elements contributing to your success in growth and retention this year. Let’s take look:

The Paywall and Growth

Focusing on app growth usually means a combination of efforts including:

  • Converting existing audience to your mobile app via tactics such as smart app banners and email marketing
  • Improving discoverability via keyword tuning and other App Store Optimization (ASO) techniques
  • Paid acquisition through channels such as Apple Search Ads or other cost-per-install placements

It’s important that new users see your paywall during their first session. In fact, 70-80% of subscription starts occur on the day of install (D0) according to data from AppsFlyer and Redbox Mobile.

Considering this, it’s important to think of your paywall as not one monolithic object that all users flow through regardless of origin. That would be like having a single landing page on your web site regardless of traffic source.

Conceptually, you want different paywall instances aligned to each acquisition source:

  • Organic Discovery -> App Install -> Paywall A
  • Email Campaign -> App Install -> Paywall B
  • Apple Search Ad -> App Install -> Paywall C

To optimize in-app revenue, your paywall needs to be operated like a growth marketing asset, not a static coded screen.

👉Read more: Maximizing Revenue and User Engagement with Paywall A/B Testing

The Paywall and Retention

Most app publishers use push notifications for app engagement.  Push can be a helpful way to improve D7 retention, but you should also consider what happens once the user is in the app.

It may not be obvious, but the paywall isn’t just important for growth. It’s important for retention as well especially for subscription apps. Consider that most app subscriptions are auto-renewable. The desired state for app publishers is for a user to be a paying subscriber on an annual plan with auto-renew turned on.

However, subscription customers can end up in other states as well. The paywall can help you message users in context of those other states to nudge them to that desired place.

Here are a few example of retention paywall instances tied to user context:

  • Monthly Plan Subscriber -> Upgrade Candidate -> Annual Offer Paywall
  • Active sub w/ Auto-Renew off -> Voluntary Churn Risk -> Stay Offer Paywall
  • User is a Former Sub -> Winback Opportunity -> Winback Offer Paywall

The key to effective retention paywalls is to power your experience with individual-level subscriber data. This means your external marketing channels, the in-app experience, and everything in-between should all have the same context about a user’s subscription journey.  This way, the experience including marketing assets will be personalized and relevant.

Why you should conduct paywall AB testing

Yes, you should be conducting paywall AB testing. The exception to the rule is if your app doesn’t have much usage. If this is you, focus on top-of-the-funnel activities such as ASO keyword tuning.

If you do have steady app traffic, you almost certainly will be able to improve in-app revenue via one or more of the following:

  • Generating more one time purchases
  • Improving subscription trial starts  
  • Improving free-to-paid conversion
  • Reducing subscription churn
  • Boosting customer LTV (lifetime value)

Testing a Single Paywall

If your app has only one paywall, you can benefit from paywall AB testing. Most apps  convert at low enough rates that much upside exists. Here are a few guidelines:

Sadly, it’s not uncommon to see freemium app with free-to-paid conversion rates of less than 1%. With testing, you can boost conversion to 5-15% or more.

For apps with a hard paywall, conversion rates depend on whether you offer a free trial or not. It’s not uncommon to see trial conversions of 5% or more. With testing, you can boost free trial conversion rates to 30-50% or more.

No matter what your conversion rate is, your paywall can be improved. The only question is by how much.  

Just realize that the one-size-fits-all paywall won’t be perfectly aligned with each and every user. For fully optimized revenue, you’ll need to move to multiple, segmented paywalls.

Testing with Multiple, Segmented Paywalls

As we’ve explained, to optimize in-app revenue it’s important to have different paywalls focused on different acquisition channels and user context. To say this another way, you should have a paywall segmentation strategy.

With paywall segmentation, you and an opportunity to conduct paywall AB testing that is focused on improving the specific metric that a certain paywall is responsible for.

For instance, you could run a test of the paywall presented to users acquired via Apple Search Ads to tightly focus on improvement to that channel. For instance, you could focus on improving your ROAS (Return on Advertiser Spend - defined as the total revenue generated divided by total ad spend).

Similarly, you can test variants of your Annual Offer to see which does a better job of converting existing monthly subs to your annual plan.

To prioritize your testing strategy, focus on the key metrics you’re trying to improve first. Also look for the opportunities that have a lot of room for improvement so you can get some quick wins.

How to Conduct Paywall AB Testing

If you’re convinced your app is a good candidate for paywall AB testing, let’s take a look at how you actually run a test. We’ll cover the three key elements to help you get started with your first test:

  • Choosing an AB testing tool
  • Selecting variants & allocating traffic
  • Determining the winning paywall

Choosing an AB Testing Tool

There are different tools and techniques for running an AB test. For the purpose of this article, which pertains to mobile app paywall AB testing, you have the following options:

  1. Use a tool designed for mobile paywall testing (e.g. Nami)
  2. Use a mobile backend to feed different data to your app (e.g. Firebase)
  3. Adapt a general purpose testing tool (e.g. Optimizely)

There are pros and cons to each of these approaches. If you’re already using a general purpose tool, something like Optimizely might make sense. The downside, is it’s not particularly mobile-first and certainly wasn’t built to focus on testing paywalls.

A solution like Firebase is closer to mobile-first, but is not as friendly for the marketing folks on your team that are used to great campaign management systems.

In our humble opinion, Nami is the easiest way to ship a mobile paywall and yes, conduct paywall AB tests. In fact, no code is needed to design the paywall or run the test. Our powerful campaign engine helps you with paywall segmentation so can focus the right test on the right outcome.

Determining which paywall elements to test

Now that you’ve chosen a tool, it’s time to figure out what you want to test. As we’ve discussed you may have multiple paywalls each playing a different role in your growth and retention strategy.

This means the elements you will want to test really depends on the paywall and it’s purpose. Here are just a few things you might test based upon common mobile app paywall designs:

  • Free trial duration on subscription plans
  • Impact of including a lifetime in-app purchase
  • Marketing copy for describing app’s benefits
  • Call-to-action button text
  • Which plans and how many to choose from
  • Paywall layout and design asthetics

Remember, the element you want to change needs to align with the metric you want to influence. For example, if you want to drive more users into choosing the annual plan the possible elements to test may narrow to:

  • Providing a more attract free trial
  • Including a featured product badge to call out the annual plan
  • Paywall layout and design asthetics, as relating to plans

Your test can include multiple changes to the paywall or a single change.  There are pros and cons to each.  Multiple changes may help you make progress faster while a single change may help you gain better intuition from each test.

Selecting Variants & Allocating Traffic

Now that you’ve chosen what you want to test, it’s time to create your variant. If you're using a no code tool like Nami, it’s easy to create the variant for paywall ab testing.

As a best practice, variant A should be the paywall that is already active in your app so you have a baseline to start with. Variant B contains the changes you want to test.

Next, you need to decide how to allocate traffic to to your variants. It could be as simple as a 50%/50% split or 80%/20% split. The specific granularity of traffic allocation will depend on the tool you’re using. Nami allows any whole number so long as the total equals 100%.  

Some considerations when deciding how to allocate traffic:

  • If you have a data baseline with variant A, you may want to push more traffic to variant B to get an answer to your test more quickly.
  • If you are at scale you may be able to determine a winner with less traffic going to variant B. That’s great, since if it performs poorly you’ll be glad you didn’t send more traffic than necessary to find that out.
Choosing paywall AB testing variants & allocating traffic

Determining the Winner

Your test is running and results are coming in. You’re probably eager to find out the winner. However, just because Paywall B is converting better, doesn’t mean it’s the winner. It might be, but to be sure you need to reach statistical significance.

A statistical significant result is one that has not occurred by random chance. This is why it’s important not to look at those early results which may appear like a conclusion when in fact there’s not yet enough yet to reach such a conclusion.

You might be wondering how long the test will take to reach statistical significance. The answer is somewhat frustrating: it depends. It depends how much traffic each variant is receiving as well as how many conversions you’ve received against that traffic.

You’re looking to exceed a 90% or higher confidence level before taking comfort that the results of the test are known.  If you’re interested in the statistics, check out this guide.

Amongst all this statistics talk, there is good news!  Most AB testing tools will do the math for you and crown a winner once statistical significance is reached with high confidence.

A Quick Note on Multi-Variate Testing (MVT)

In this article we’ve talked all about paywall AB testing. The AB naturally means we’re testing one thing against another. This limits the test to just two paywalls.

Marketers who have performed testing in other contexts will likely be familiar with multi-variant testing (MVT). While it may sound appealing to test more things at once (in this case, more paywall variations), it’s not for everyone.

MVT requires much more traffic to deliver a statistically significant result. Given how anemic most mobile app conversion rates are, it’s our recommendation that you stick to AB testing even with a lot of traffic.

There’s so much opportunity to improve without the complexity of MVT. Once you’re chasing single percentage points of optimization, you can consider introducing MVT into your testing arsenal.

👉Read more: Paywall Performance: Key Metrics to Drive Revenue and Growth

Final Thoughts

Paywall AB testing is an essential for any app publisher wanting to optimize in-app revenue. In fact, paywall AB testing can boost conversion rates by 2-3X or more through straightforward changes.

At Nami, we’re focused on helping app publishers thrive in the app economy. We’re doing this by turning the paywall into a full-fledged marketing asset. Paywall AB testing is just one of the capabilities available as part of our solution. If you’re interested in getting a demo or learning more, we’re happy to help.

   


       

       if(window.strchfSettings === undefined) window.strchfSettings = {};
   window.strchfSettings.stats = {url: "https://nami.storychief.io/en/paywall-ab-testing?id=502694296&type=26",title: "Paywall AB Testing for Optimizing In-App Revenue",id: "51b60849-ff21-4408-b48f-9543da3cae59"};
           (function(d, s, id) {
     var js, sjs = d.getElementsByTagName(s)[0];
     if (d.getElementById(id)) {window.strchf.update(); return;}
     js = d.createElement(s); js.id = id;
     js.src = "https://d37oebn0w9ir6a.cloudfront.net/scripts/v0/strchf.js";
     js.async = true;
     sjs.parentNode.insertBefore(js, sjs);
   }(document, 'script', 'storychief-jssdk'))
   
   

Written by
Dan Burcaw
2 Nov

How to Resolve DF-BPA-30 Error on Google Play Store

The DF-BPA-30 error is a common issue for developers testing in-app purchases or subscriptions on Google Play Store. This error typically relates to billing problems, often linked to invalid or outdated payment methods. Encountering DF-BPA-30 can disrupt testing and prevent developers from completing in-app purchase setups, but resolving it quickly is straightforward with the correct approach.

What Causes the DF-BPA-30 Error?

The DF-BPA-30 error is frequently triggered when the Google Play Store encounters billing information it cannot validate, often due to expired or invalid test payment methods. When testing in-app billing or subscriptions, developers may use test cards or billing profiles that are outdated or incorrectly set up, resulting in this error. Google Play flags the transaction, blocking further processing until the payment method is verified or replaced.

In addition, Play Store payment settings may become misaligned between the Play Console and the device cache, contributing to this error’s frequency during repeated tests.

Common Scenarios for DF-BPA-30 Error Appearance

This error generally appears in the following scenarios:

  1. Testing Purchases with Invalid Test Cards: If the test card or payment profile used is invalid or expired, the Play Store will trigger the DF-BPA-30 error.
  2. The error often arises when new in-app purchase products are added to the Play Console without proper payment method verification.
  3. Device Cache Issues with Billing Data: Cached payment data on the device can create inconsistencies, causing the Play Store to show an invalid billing status.
  4. Network Connectivity Problems: A poor or unstable network connection during the billing process can exacerbate DF-BPA-30 errors, preventing transactions from completing.

Step-by-Step Solutions for DF-BPA-30 Error

Solution 1: Verify or Update Payment Method in Google Play Console

  • Purpose: Ensures that the payment method in use is valid and updated for transactions.
  • Steps:
  1. Access Google Play Console and go to the Payment Settings section.
  2. Confirm the validity of the payment method associated with the test account.
  3. Update or replace the payment method if it is outdated or expired.
  • Result: This should refresh billing information, allowing purchases and subscriptions to process smoothly.

Solution 2: Clear Google Play Store Cache and Data

  • Purpose: Clears outdated cached payment information, refreshing the device’s link with the Play Store’s updated payment state.
  • Steps:
  1. On the device, navigate to Settings > Apps > Google Play Store.
  2. Select Storage and choose Clear Cache.
  3. (Optional) Select Clear Data for a full reset of the Play Store data.
  4. Reopen the Play Store and attempt the in-app purchase test again.
  • Result: This removes outdated billing information from the device, allowing for proper verification.

Solution 3: Remove and Re-add Payment Method

  • Purpose: Refreshing the payment method can resolve any inconsistencies between the Play Console and device settings.
  • Steps:
  1. In the Google Play Console, go to the Payments section.
  2. Remove the payment method currently in use.
  3. Re-add the payment method or add a new one to complete the setup.
  • Result: This step helps the Play Store recognize the updated payment information, resolving the billing issue.

Solution 4: Test Purchases Using a Stable Network

  • Purpose: Minimizes errors caused by unstable or slow network connections that may affect billing data processing.
  • Steps:
  1. Switch to a stable Wi-Fi or cellular network.
  2. Retry the in-app purchase or subscription on this reliable network.
  • Result: A stable network ensures that the billing request is processed without interruptions.

Solution 5: Contact Google Play Support for Persistent Issues

  • Purpose: For unresolved cases, contacting Google Play Support can provide advanced troubleshooting tailored to the backend settings.
  • Steps:
  1. Document the error and previous troubleshooting steps.
  2. Reach out to Google Play Developer Support with relevant details.
  • Result: Google support can provide additional insights or solutions specific to billing issues on their backend.

Conclusion

The DF-BPA-30 error, often tied to billing verification issues, can interrupt in-app purchase testing on Google Play. By following these troubleshooting steps—updating payment methods, clearing cache, re-adding payment profiles, and testing on stable networks—developers can ensure a smooth billing process.

With Nami, however, developers can avoid these complex billing setup issues entirely. Nami’s low-code solutions keep your in-app purchases updated and compliant, so you can focus on building a better app without worrying about ongoing billing updates. Discover how at NamiML.

Written by
Dan Burcaw
2 Nov

Paywall Placement Optimization: Strategies for Maximizing Revenue and Engagement

Optimizing the placement of paywalls in a mobile app is critical to improving user experience and maximizing revenue. A paywall that appears at the right time and place can encourage users to convert without being overly intrusive, while poor placement can drive them away. Understanding how to balance these factors requires strategic thinking and data-driven insights.

In this article, we’ll explore the key aspects of mobile app paywall optimization. We’ll cover best practices for timing, design, and personalization of paywall placement to increase conversions. We’ll also discuss methods for A/B testing, tracking user behavior, and integrating paywalls seamlessly into the app experience. Here are top strategies for paywall placement inside your app.

This blog post is part of our Best Practices series. Read our tips on Design and Products.

1. Show a Paywall right after App Launch

The first few moments a new user uses your mobile app are very important. Many users churn in these few moments if they don’t understand the app or don’t see the benefits. First optimizing the first launch flow to teach the user about the product is important. Then showing them an initial “indirect intent” paywall can help reinforce the features and show them pricing.

paywall placement best practices from daily random facts
Paywalls by Daily Random Facts

Indirect intent paywalls are shown without the user expecting or intending to launch them. Don’t be surprised if this type of paywall has low conversion. Users often need to see the paywall multiple times before committing to a purchase.

Paywall placement optimization experts recommend not requiring a purchase to continue using the app. Very few business models really require this. And often users will have high churn rates if they download a free app but need to purchase a subscription in order to actually  enter the app. Make sure to clearly show a ‘Later’ or close ❌ button on this paywall so the user can enter the app and start exploring.

2. Launch a Paywall Right After Onboarding

Many apps include an onboarding sequence that gathers key information about the user and sets up their account. This sequence if done correctly can help make users more engaged and make the product easy to use after setup. The time users spend in the flow also helps your product become more sticky, as you take advantage of the sunk cost fallacy. Users who spend time during onboarding are more likely to continue using the app because they’ve already spent time getting setup.

The Sunk Cost Fallacy describes our tendency to follow through on an endeavor if we have already invested time, effort, or money into it, whether or not the current costs outweigh the benefits.
Paywalls by Simple: Intermittent Fasting

Take advantage of this momentum by showing a paywall right at the end of the sequence. This paywall should reiterate the features and benefits you showed during onboarding. This type of paywall often includes only 1 annual product, but you should test to find out what converts the best.

3. Optimizing Paywall Placement: Gate App Content behind Direct Intent Paywalls

“Direct Intent” paywalls are paywalls that users come across intentionally, while trying to gain access to the content behind them.

These paywalls should focus on the feature the user was trying to access. Don’t reuse your same “indirect intent” paywall over again. Instead tailor it to the benefits of the desired feature in order to get the best conversion.

4. Make your Paywall Easy to Find in the App Settings

Make sure that if a user really wants to purchase, they can find their Upgrade options easily in the App Settings. This paywall should be a multi-purpose “direct intent” paywall that includes a summary of all benefits and all products.

Paywalls by Welltory: Heart Rate Monitor

5. Show Offers inside your App with special Paywalls

Special offers, whether they are for a holiday, an introductory offer, or just a regular sale, can be a good way to convert users who are on the fence about purchasing.

Paywalls by Routinery: Self-Care/Routine

A special offer paywall can be simple, but should focus on the price difference and how long the user has to redeem it.

You can pop up special offer paywalls at random times (such as after a new user has used the app for a number of minutes), launch them on a schedule for an event such as a holiday, or launch these paywalls when the user clicks a banner.

👉Read more: Fitting Paywalls to User Context

Tracking Metrics for Paywall Success

To ensure that your paywall strategy is effective, you need to track key performance indicators (KPIs) that measure user engagement, conversion rates, and revenue. Metrics to focus on include:

  • Conversion Rate: The percentage of users who see the paywall and go on to subscribe or make a purchase.
  • User Retention: Measure how paywalls impact retention, ensuring that they are not causing users to abandon the app.
  • Lifetime Value (LTV): Track the long-term value of users who convert through paywalls to evaluate the sustainability of your monetization strategy.

Conclusion

Optimizing paywall placement in your mobile app is both an art and a science, requiring a careful balance of timing, context, design, and testing. By leveraging user behavior insights and continuous A/B testing, you can ensure that paywalls enhance the app experience rather than disrupt it. For developers and app owners looking to enhance their mobile app monetization strategies, NamiML offers low-code solutions that seamlessly integrate paywalls into your app while providing the tools needed to track performance and optimize revenue.

Nami can help you setup no-code paywalls and do easy 1-Click A/B Testing. Get started today.

👉Read more: 5 Paywall Placement Best Practices

Written by
Dan Burcaw
2 Nov

[SOLVED] PassbookServiceUI crashes (Payment Sheet Failed) when performing simulator StoreKit in-app purchase testing

In order to address StoreKit's unhandled error "Payment Sheet Failed" when performing simulator in-app purchase testing, follow this solution.

When performing simulator in-app purchase testing from Xcode, the purchase flow is canceled before the purchase sheet pops up in the simulator. Then, the macOS crash reporter pops up and indicates a crash in a service called PassbookServiceUI!

Here’s what it looks like:

PassbookServiceUI crash

In addition, if you inspect the error responses from StoreKit you’ll see messages like this:

SKPaymentQueue: Payment completed with error: Error Domain=ASDErrorDomain Code=907 "Unhandled exception" UserInfo={NSUnderlyingError=0x60000009e5b0 {Error Domain=AMSErrorDomain Code=6 "Payment Sheet Failed" UserInfo={NSLocalizedDescription=Payment Sheet Failed,

The crash is in a service called PassbookServiceUI, which sounds like it has nothing to do with in-app purchases. Unfortunately, it makes it impossible to perform Xcode StoreKit purchase testing.

This occurs when triggering purchases with either StoreKit 1 or StoreKit 2 APIs. It happens even if a valid StoreKit Configuration file (.storekit) file is assigned to the build target.

The Crash Environment

The PassbookServiceUI crash occurs with the following environment as of this writing:

  • macOS 13.0 Ventura
  • Xcode 14.0.1
  • Simulators iPhone 14 Pro running iOS 16
  • App code utilizing either StoreKit 1 or StoreKit 2 APIs
  • A valid StoreKit Configuration file

Solutions to the PassbookServiceUI crash

This error can be resolved by altering the simulator device, as many are known to function correctly.

  1. For iOS 16 testing - Use iPhone 14,  iPhone 14 Plus, or iPhone 14 Pro Max.
  2. For iPhone 14 Pro form factor testing - Use iPhone 13 Pro (with either iOS 15 or iOS 16)

That’s it! While this is an annoying bug that hopefully Apple fixes in a future version of Xcode, the workaround is quite simple.

👉Read more: App Store Error ITMS-9000 Invalid Binary Fix

Level Up Your App Revenue

Nami is a complete solution for growing your app revenue. Here’s what we have to offer:

  • A proven StoreKit implementation, covering all tricky edge cases
  • An easy to adopt SDK, no server-side code is required
  • Built-in no-code paywall templates, A/B testing, and analytics
  • Our generous free tier provides reasonable limits and lots of features not found in homegrown implementations.

Now you can focus on building a great app experience that is built for generating revenue. Get started for free here.


       

       if(window.strchfSettings === undefined) window.strchfSettings = {};
   window.strchfSettings.stats = {url: "https://nami.storychief.io/en/storekit-payment-sheet-failed-passbookserviceui-crash?id=1014477801&type=26",title: "[SOLVED] PassbookServiceUI crashes (Payment Sheet Failed) when performing simulator StoreKit in-app purchase testing",id: "51b60849-ff21-4408-b48f-9543da3cae59"};
           (function(d, s, id) {
     var js, sjs = d.getElementsByTagName(s)[0];
     if (d.getElementById(id)) {window.strchf.update(); return;}
     js = d.createElement(s); js.id = id;
     js.src = "https://d37oebn0w9ir6a.cloudfront.net/scripts/v0/strchf.js";
     js.async = true;
     sjs.parentNode.insertBefore(js, sjs);
   }(document, 'script', 'storychief-jssdk'))
   
   👉Read more: SKError Code Unknown SKError Cases

Written by
Amanda Maricle
2 Nov

How to Promote In-App Purchases on iOS: A Step-by-Step Guide

Promotional in-app purchases are a powerful way to increase engagement, boost revenue, and attract new users within your iOS app. By leveraging Apple’s StoreKit framework, developers can offer special promotions or discounts on in-app content. These promotions can be displayed directly in the App Store, which improves visibility and enhances the user experience.

In this article, we’ll guide you through the steps needed to implement promotional in-app purchases on iOS. We'll explain what promotional in-app purchases are, how to set them up in App Store Connect, and provide expert tips to ensure successful implementation and maximize user engagement.

What are Promotional in-app purchases (IAPs)?

Promotional in-app purchases are essential tools provided by Apple to help developers enhance the visibility of their in-app purchases (IAPs) and drive revenue. By utilizing these promotional features, developers can showcase their IAPs directly on their app’s product page, making it easier for potential users to discover and purchase premium content without needing to explore the app first.

Key promotional methods include highlighting specific IAPs on your App Store listing, leveraging Apple Search Ads to target relevant keywords, and ensuring that your in-app purchases are indexed and searchable on the App Store. These tools not only improve the discoverability of your app's premium offerings but also allow you to present these options to users at various stages of their interaction with your app, increasing conversion opportunities.

Through App Store promotions, developers can strategically drive attention to consumables, subscriptions, and non-consumable IAPs, creating more opportunities to convert users into paying customers.

Key elements:


Key aspects of promotional in-app purchases include:

  • Discounted or Bonus Offers: The promotions can provide discounted prices or extra content (like more virtual currency or items) than what is normally available.
  • Time-Sensitive: These offers often run for a limited time, creating urgency for users to make the purchase.
  • Event-Based or Seasonal: Developers may tie these promotions to events like holidays, app updates, or special milestones (like an app anniversary).
  • App Store Integration: Both Apple’s App Store and Google Play Store support promotional IAPs, allowing developers to showcase these offers outside of the app (e.g., on the app’s listing page).
  • Marketing Strategy: Promotional IAPs are a part of a broader user acquisition and retention strategy, often paired with push notifications, emails, or in-app messages to notify users of the deals.
  • Free Trials: In some cases, promotional IAPs may also offer free trials of premium features, which can later convert into paid subscriptions.
  • 👉Read more: Free Trial Strategies for Higher Conversion Rates

    How to Promote In-App Purchases on iOS: A Step-by-Step 

    Step 1: Set Up In-App Purchases in App Store Connect

    Before you can promote IAPs, ensure they are correctly configured in App Store Connect.

    1. Login to App Store Connect: Go to App Store Connect.
    2. Select Your App: From the dashboard, choose the app you want to add IAPs to.
    3. Navigate to In-App Purchases: In the left-hand menu, click on the “Features” tab, then select “In-App Purchases.”
    4. Add New IAP: Click on the "+" icon to add a new IAP. You can choose from four types of in-app purchases:some text
      • Consumable
      • Non-consumable
      • Auto-renewable subscription
      • Non-renewing subscription
    5. Configure IAP Details: Provide clear and engaging names, descriptions, and pricing. Add icons or screenshots relevant to the IAP to make them attractive.
    6. Submit for Review: Once you’ve added all the necessary details, submit the IAP for review by Apple.

    Step 2: Promote IAPs on the App Store Product Page

    You can display specific IAPs directly on your app’s product page for users to see before downloading.

    1. Go to App Store Connect: Access your app in App Store Connect.
    2. Select Your App and Navigate to In-App Purchases: From the Features tab, go to "In-App Purchases."
    3. Enable Promotion on App Store: For each IAP, toggle the “App Store Promotion” option.
    4. Organize IAP Display: Organize how IAPs appear on your product page to highlight the most important ones. Make sure they are relevant and valuable to users.

    Step 3: Use Apple Search Ads to Promote In-App Purchases

    Apple Search Ads allow you to promote specific IAPs through ads in search results.

    1. Set Up an Apple Search Ads Account: Go to Apple Search Ads and create an account.
    2. Create a Campaign:some text
      • Choose your app.
      • Set your budget and targeting options (such as keywords).
    3. Target Specific In-App Purchases: Use the campaign to promote relevant IAPs to users searching for similar features.
    4. Monitor and Optimize: Regularly track the performance of your Search Ads campaigns, adjust keywords, and optimize spending based on user engagement.

    Step 4: Optimize Your App Store Listing

    To make your app more attractive, optimize your product page with a focus on IAPs:

    1. Update Screenshots: Include images that showcase premium features or exclusive content that users can unlock via IAPs.
    2. App Preview Videos: Create short videos demonstrating in-app purchases or the benefits they provide.
    3. Enhance Your App Description: Highlight how IAPs improve the user experience. Include key features that users can unlock by purchasing.
    4. Use Keywords: Optimize your App Store listing with relevant keywords that describe your IAP offerings to increase discoverability.

    Step 5: Use Push Notifications and In-App Messaging

    Leverage in-app messaging and push notifications to remind users about your IAPs:

    1. Set Up Push Notifications: Implement push notification services like Firebase Cloud Messaging or OneSignal in your app.
    2. Personalized Offers: Use user data to send personalized offers. For example, send a message offering a discount on premium content a user has shown interest in.
    3. Promote Limited-Time Offers: Create urgency by promoting discounts or exclusive content available for a limited time. Be sure to get user consent for notifications in compliance with Apple’s rules.

    Step 6: Promote IAPs Outside the App Store

    Use external marketing strategies to drive traffic to your app and promote IAPs.

    1. Social Media Campaigns: Post content about your app’s IAPs on platforms like Instagram, Twitter, or Facebook. Highlight the benefits and share links directly to the App Store.
    2. Collaborate with Influencers: Partner with influencers or content creators who can showcase your app and promote its IAPs to their followers.
    3. Email Marketing: Send emails to your app’s user base with information on new or discounted IAPs. Use tools like Mailchimp to track performance.

    Step 7: Track and Optimize Your Campaigns

    After implementing the promotion strategies, continuously monitor the performance of your in-app purchases.

    1. Use Analytics Tools: Utilize tools like Google Analytics or App Store Connect Analytics to track IAP conversions and user engagement.
    2. A/B Testing: Test different pricing, descriptions, and offers for your IAPs to see what performs best.
    3. Adjust Campaigns: Based on analytics, refine your promotions by adjusting your ad campaigns, optimizing keywords, or improving your push notification offers.

    👉Read more: Setup Apple Offer Codes

    5 Pro Implementation Tips for Your Promotional In-App Purchases

    1.Provide Friendly Name and Description in Metadata

    Each promotional in-app purchase has a name and description.

    elevate app promotional in-app purchase

    The name should be different from your app’s name and describe the purchase in some human-readable way. In other words, don’t give it a name of  promo_1_month.  For the description, provide up to 45 characters of details about what the purchase unlocks. Try to avoid generic terms like ‘Unlock all access.’ That doesn’t help your customer understand the benefits of what they are buying!

    2. Design a new Image for your Promotional In-App Purchase

    Your promotional IAP should use a different image than your app logo. This is because in search results, Today, Games, and Apps tabs, your promo IAP will display with your app logo next to it. So make sure your logo isn’t repeated! Design a promo image with similar elements to your logo without completely copying it.

    weather channel app iap
    Promotional IAP from The Weather Channel app

    3. Choose the Right Size and Layout for your Image

    Apple has a particular size and layout for the promotional in-app purchase images. Their guidelines recommend a 1024 x 1024px image, either in .png or .jpeg format.

    Apple also places the image in a frame. Make sure your image has plenty of padding on all sides, especially the bottom left where the app icon is inset.

    To test your image, you can upload into App Store Connect for a live preview.

    testing promo iap image in app store connect
    Testing an in-app promotional image live in App Store Connect

    You can also download Apple’s design resources and use the Sketch files to hone your design.

    4. Use Consistent Branding for Your Promotional In-app Purchase Images

    Your app has a brand and a style. Use these guidelines when designing your IAP images.

    Gentler Streak uses their mascot in their promotional images. In the monthly image, the mascot is standing. In the yearly image, the mascot is moving. This cute detail helps represent the benefits of purchasing the yearly plan.

    gentler streak app promo in-app purchase
    Promotional images for Gentler Streak app

    The CARROT weather app utilizes the lightning bolt from their icon to represent premium.

    carrot weather ios app subscription
    CARROT Weather app store page

    5. Create an Image for Each Product

    You might sell multiple products in app: monthly or yearly plans, purchase packs, or lifetime access. Creating unique images for each of these products will help sell the benefits.

    songshift app in-app purchases
    Four promotional in-app purchases from SongShift


    Conclusion

    Promoting in-app purchases effectively on iOS involves leveraging both Apple’s built-in tools like App Store promotions and Search Ads, as well as external marketing channels. By following these steps, you can increase visibility and encourage more users to make purchases in your app.

    Explore more ways to enhance your app’s growth with NamiML’s low-code solutions. We offer tools to streamline the management and promotion of in-app purchases, helping you scale your app’s revenue effortlessly. Visit NamiML.com for more information. are a great way to showcase your in-app purchases on the App Store and invite users to purchase before even downloading the app.


       


    Written by
    Dan Burcaw
    1 Nov

    Fix DF-DFERH-01 Error on Google Play Store

    The DF-DFERH-01 error is a persistent issue for developers working with subscriptions in the Google Play Store, particularly when testing proration modes like DEFERRED. This error often indicates complications with a subscription’s state, creating significant challenges in scenarios where developers need to transition, downgrade, or alter subscriptions without hindrance. This guide will cover everything you need to know about the DF-DFERH-01 error, from identifying its root causes to implementing practical fixes that will streamline your app's subscription testing and improve user experience.

    What Causes the DF-DFERH-01 Error?

    The DF-DFERH-01 error usually occurs due to conflicts in the subscription's status, especially when it's set to DEFERRED. In DEFERRED mode, subscriptions remain active but delay billing changes, creating issues when attempting adjustments or state changes. This deferred state can confuse the Google Play Store, resulting in errors as the system is unable to reconcile the transition fully.

    Additionally, this error can stem from incomplete synchronization between the device cache and the server state, which sometimes causes discrepancies in how subscription transitions are processed. By understanding the cause, developers can apply targeted fixes and avoid repetitive issues.

    Common Scenarios for DF-DFERH-01 Error Appearance

    This error typically appears in the following scenarios:

    1. Testing Subscription Downgrades with Proration: When a user is downgraded to a lower-tier subscription with DEFERRED proration, the system may be unable to reconcile the billing state due to conflicting timelines.
    2. Subscription Transitions: Attempting to change a subscription’s state (e.g., upgrade or downgrade) while it’s in DEFERRED mode frequently triggers this error.
    3. Cache Inconsistencies on Testing Devices: Device cache that hasn’t been cleared may hold outdated subscription data, causing the Play Store to recognize an inaccurate subscription status.
    4. Network Issues: Unstable network connections during subscription changes can exacerbate deferred state errors, as the Google Play Store struggles to update the state accurately.

    Step-by-Step Solutions for DF-DFERH-01 Error

    Solution 1: Cancel the Subscription Manually

    • Purpose: Resetting the subscription state can help eliminate deferred conflicts that may cause the error.
    • Steps:
    1. Open the Google Play Console.
    2. Locate the user or test account with the subscription in question.
    3. Manually select “Cancel Subscription” to reset its state.
    4. After cancellation, restart the testing process by re-subscribing if needed.
    • Result: This often clears the deferred state, allowing for uninterrupted subscription changes or testing.

    Solution 2: Clear Google Play Store Cache and Data

    • Purpose: Removing cached data allows the Play Store to reload the most recent subscription state, often resolving state mismatch issues.
    • Steps:
    1. On the testing device, go to Settings > Apps > Google Play Store.
    2. Tap on Storage and choose Clear Cache.
    3. (Optional) Clear Clear Data to remove additional stored information.
    4. Restart the Google Play Store and retry the subscription transition or proration test.
    • Result: This helps refresh the Play Store’s data, which may correct any state mismatch caused by caching.

    Solution 3: Rebuild the App with Updated Subscription State

    • Purpose: Ensures that the app uses the latest state for testing by reinitializing it.
    • Steps:
    1. In your IDE (such as Android Studio), perform a Clean Build of the project.
    2. Rebuild and redeploy the app on the testing device.
    3. Attempt the subscription action again, such as a downgrade with DEFERRED proration.
    • Result: A fresh build can prevent errors by removing any unintended artifacts from previous tests.

    Solution 4: Test on a Different Device or Network

    • Purpose: Avoids device-specific issues or network inconsistencies that may interfere with subscription state updates.
    • Steps:
    1. Test the app on a different device with no previous subscription states stored.
    2. Use a different Wi-Fi or data network to avoid potential network-related conflicts.
    3. Retest the subscription transition under the DEFERRED mode.
    • Result: This isolates the problem, determining if the error is device or network-specific.

    Solution 5: Contact Google Play Support for Persistent Issues

    • Purpose: In cases where the above steps fail, reaching out to Google Play Support can help identify issues that may not be visible in standard diagnostics.
    • Steps:
    1. Document all troubleshooting steps you've taken and any relevant subscription IDs.
    2. Reach out to Google Play Developer Support with this information.
    • Result: Google can offer direct insights or advanced troubleshooting specific to their backend systems.

    Conclusion

    The DF-DFERH-01 error on Google Play can disrupt the testing and transition of subscription states, especially in DEFERRED proration modes. By following these detailed troubleshooting steps—canceling subscriptions, clearing cache, rebuilding the app, testing on other devices, and, if necessary, consulting Google Play Support—developers can resolve the error and enhance their app’s stability.

    With Nami, you can forget about the hassle of managing and updating in-app purchases. Our low-code solutions keep your subscriptions and purchases running smoothly, so you can focus on building your app's core features. Explore more at NamiML.