Getting started with in-App Conversion Rate Optimization
Reinder de Vries
Mar 19, 2019
Conversion Rate Optimization (CRO) is critical for digital marketing and sales for e-commerce and online business, but can it also be used to improve conversions in mobile apps? To find out, we walk you through the process of collecting conversion data in your app, showing how you can use it to increase sales. But don’t assume this process only applies to e-commerce apps--it’s also relevant for productivity apps, games and content-based apps.
In this article we deal with iOS and Apple’s App Store, but you can apply the same logic to Android apps.
What is Conversion Rate Optimization?
Conversion Rate Optimization (CRO) is the process of improving the percentage of people that convert into customers by optimizing the steps that lead to a sale.
Imagine you built an app that sells Italian food recipes. Users install your app and get free sample recipes to try when they first open your app. Some users–true foodies–want more, so you offer an in-app subscription. For just a few dollars a month they can browse the app’s entire recipe collection, with new recipes every month. We can now define the steps that lead up to a sale (also known as the funnel):
- User installs the app
- User opens the app
- User views the “Purchase UI” (user interface)
- User taps the “Subscribe” button
- User successfully subscribes to monthly product
Here we can see the path from trial user to product customer. The user installs the app, browses to the Point-of-Sale, and purchases the monthly recipe subscription. In the above funnel, the Purchase UI is the most important component. Here’s an example of the Purchase UI for our hypothetical Italian recipe app:
The Purchase UI is the user interface that motivates people to sign up, and is comparable to a subscription page or landing page. This UI typically includes the features or benefits a user gets once they sign up, a price point and a call-to-action. Three aspects of the funnel need to be emphasized here:
- Each one of these steps “leaks,” so not every customer will successfully move from one stage to the next. The goal of CRO is to make changes in the funnel that result in more people completing the steps and making the purchase.
- In practice, a user doesn’t complete these steps in one short session. They may install the app, open it later, browse some recipes and decide to upgrade later on–or never upgrade at all.
- Many funnels are multi-channel, which means that a user might enter the funnel from an ad they saw on Facebook, as opposed to opening the app themselves. Different entry points and paths can complicate your CRO efforts.
Once the funnel is mapped out, you can assign percentage values to each of the steps. If 1,000 users view the Purchase UI and 150 of them tap the “Subscribe” button, that step has a 15% conversion rate.
Add analytics tracking to your app
The first step in getting started with Conversion Rate Optimization is to add an analytics tracking tool to your app. This helps you count the number of people that complete a particular action in your app, like viewing the Purchase UI. You can also use these tools to keep track of your funnel’s performance.
The most popular CRO tools include Optimizely, VWO and Mixpanel. A free alternative is Google Analytics for Mobile, which we’ll be using in this article. Many of the steps and principles are shared between these kinds of tools, so you can apply what you learn in any CRO tool of choice.
Adding analytics tracking to your app has two stages:
- Integrating your app with the analytics tracking SDK or library
- Collecting data on in-app interaction by using events
Google Analytics is part of Firebase, Google’s developer platform. Integrating it with your app is as simple as adding the Firebase framework to your app’s codebase and setting some configuration values. (This guide explains in detail how to do that.) Without any additional setup, Google Analytics already gathers some useful data out of the box, such as:
- How many active users does your app have?
- How much time do users spend daily in your app?
- What are the most used UIs in your app?
- How many times has your app crashed recently?
The next step is to mark particular interactions with Events. For example, every time a user views a recipe, the app can send a “Viewed recipe” event to Google Analytics. This event is then tied to a user’s aggregated profile, and can be used to gain insight into how user cohorts use your app.
Here’s a code example in Swift for iOS:
let title = "Spaghetti Carbonara"
Analytics.logEvent(AnalyticsEventSelectContent, parameters: [
This snippet should be manually added to the app’s codebase. If you know iOS development, you can do this yourself. Otherwise you’d have to ask your team’s developers to integrate this snippet in your app.
The above code needs to be triggered when a user views a particular recipe. In the example, we’re sending the recipe’s title as an extra parameter with the event. This way we can group recipes in Google Analytics and see which is most popular.
Next, you’ll need to track every event that’s related to your in-app funnel. A few examples:
- User viewed the Purchase UI
- User signed up for a trial
- User added product to basket
- User started checkout process
- User purchased a product
Google Analytics supports some app-specific events, such as “Unlocked achievement” for games. It’s smart to incorporate these events in your app, so you can make use of their specific reporting capabilities.
If there’s no standard name for a type of event you want to add, you can add custom events like this:
Analytics.logEvent("event_name", parameters: [
Once you’re collecting event and interaction data, it can be used to track your app’s funnel.
Define and track the in-app funnel
The next step is to use these events to define and track the funnel.
You’re already tracking individual interactions, so now you’ll want to group them together in a funnel. You’ll be able to see what percentage of users drops off in a funnel step, and what percentage continues to the next step.
The funnel we defined earlier for the Italian recipe app can now get matched with the different events we’re tracking in Google Analytics. Something like this:
- User starts an app session, with event: session_start
- User views the Purchase UI, with event: views_purchase_ui
- User taps the “Subscribe” call-to-action, with event: taps_subscribe_cta
- User successfully subscribes to product, with event: in_app_purchase
You can define your funnel in Google Analytics, via the dashboard. Give the funnel a name, and add the different events that lead up to a successful purchase.
Once the funnel has been set up, you can view the funnel’s steps from left to right, and find out exactly what percentage of users continues from one to the next step. For example, when 130 users viewed the Purchase UI and 98 tapped “Subscribe,” that step has a conversion rate of 75%.
Now that we know a certain percentage of users purchase the in-app subscription, we can get to work to increase that percentage.
Improve the funnel’s conversion rates
In the previous steps, you’ve collected data that informs your efforts to improve your funnel’s conversion rate. You’re now ready to start a few experiments, with the goal of getting more conversions. We’ll focus on three areas of improvement:
- Making sure your app’s tech and integrations are 100% error free
- Adopting sensible best practices in your funnel
- Using A/B testing to improve your funnel’s conversion rates
Improve your app’s tech and integrations
An often overlooked part of conversion rate optimization is checking that the app itself is up to snuff. Does it crash regularly? Is the checkout process 100% error free? Could intermittent web service or API errors keep people from purchasing?
The easiest way to overcome this problem is by user testing and quality assurance, and by in-app logging of data. Tools like Bugsnag can help you monitor the stability of your app, enabling you to respond quickly to crashes (ANRs) and elevated error rates.
Quality assurance is a bit more involved. When considering your app’s funnel, it means making sure that the UI/UX of the checkout process is flawless. For example, does the Purchase UI work well on all device models from iPhone 4 to XS Max?
Adopt sensible best practices in your funnel
You don’t have to experiment with everything in your app to find the best optimizations. It’s smarter to focus on the experiments that are specific to your app, and to use best practices for the rest.
- Always make sure that the Point-of-Sale has one call-to-action, experimenting with that button’s caption
- Follow Apple’s Human Interface Guidelines, experimenting with layout, graphics and colors
- Make the path from app start to purchase as short as possible, experimenting with user onboarding, in-app tutorials and lead nurturing
A simple but effective way to find out what has worked for other app publishers is to search for examples and tutorials online. You’d be surprised how many app developers and publishers talk about UI/UX and CRO experiments, and the results they have gotten. Your mileage may vary, but there are still insights to be gained.
Use A/B testing to improve your funnel’s conversion rates
A/B testing is the real power tool of Conversion Rate Optimization. Here’s how it works:
- Create two variations of a particular user interface or sales creative
- Randomly show one variation to your app’s user (and only that one)
- Measure which variation has the better result, i.e. higher conversion or more sales
- Keep the winning variation and discard the other
A/B testing works so well because you’re essentially isolating a change and measuring its effect on your funnel. In most cases, you can say with confidence that a change in the funnel leads to more sales and conversions.
However, there are a few caveats. A/B testing can only reliably bring results when the outcome is statistically significant. This means you’ll have to send enough people through the experiment. If you don’t, the outcome could be arbitrary or just luck–which means you don’t know if a test variant was the definite cause of higher conversions.
A successful A/B test can only happen when you change one thing and everything else stays the same, so it’s smart to avoid conflicts by running one test at a time. If your funnel or product is tied to seasons, or even weekdays, it’s also smart to run your experiments at a time when everything is constant and settled.
Only A/B test things that can actually make a difference. Opinions differ on this, but in general you don’t have to test the color of your call-to-action button. For more effective results, you should test your creative, what’s on offer, price points and so on.
Fortunately, you don’t have to set up the infrastructure for A/B testing on your own. You can use tools like VWO, Optimizely, and Google Optimize, a free tool that connects to Google Analytics.
It may take a while before you start to see results with Conversion Rate Optimization, so it’s important you commit to a cycle of continuous testing. By consistently putting in the effort to get better conversion rates and more sales, you’ll definitely see positive results.
About the author
Reinder de Vries is a professional iOS developer. He teaches app developers how to build apps at LearnAppMaking.com. Since 2009, he has developed a few dozen apps for iOS, worked for global brands and lead development at several startups. When he’s not coding, he enjoys strong espresso and traveling.