You can find hundreds of blogs and websites that will tell you how important it is to make your app’s conversion funnel as smooth as possible. The more friction there is, the more churn you can expect, and that’s not where you want your company to be. The most often cited cause of friction is technical issues that users have with your app, whether that means crashes, poor performance, or some combination of those and other problems.

What is the best way to track down exactly what’s going wrong, so you can fix it efficiently and quickly?

Frozen in-app Purchase - an eCommerce apps worst nightmare

1) Rethink Device Assumptions

We as developers make a ton of assumptions about the quality of the devices on which our users experience our apps. Not all of them have the device that you use everyday; and most developers use the latest iPhone, Samsung, or Google Pixel.  

You need to rethink the assumption of devices and instead think about the actual device CPU, memory and screen resolution + size characteristics.  

For example, for many e-commerce apps, users of iPads and other larger tablets are the best customers, who tend to buy more. In general, image quality on the larger screens is not as good as on smaller phones. You may be feeding larger images to tablets than you need to, which can lead to unneeded Out-of-Memory errors. To a user, these appear like a crash because the app abruptly closes. However, they do not show up in Firebase and Crashlytics except as a number to be tracked.

2) Monitor key moments of the Purchase funnel

When a user clicks on “Add to Cart,” or “Purchase,” what exactly happens? Does the event go smoothly, with no unexpected time delay?  How many users never complete the event in the funnel?

Feature analytics measure whether a user reached the next step of the funnel.  What they don't tell you is why they do not.   When a user clicks add-to-cart, how many leave before the add-to-cart completes? You may not realize it but the drop-off is often 2-5% of all events.  In addition, the duration for the last 5% of add-to-carts is often over 5 seconds, which would be unconscionable on the web.

The first step is to measure the completion rates and duration of each key moment in a purchase funnel: view item, add-to-cart, purchase, and others.  Then look not only at the median and means but also the 95% and 99% of events.  ROI is captured in those final few percent.   When you do find an event in the funnel, like the purchase, that is out side of a comfortable range make sure to look at the network calls that fire.  The most common issues are:

  • Network calls:  Did unexpected ones occur?  Is there an abnormal number of timeouts?  Did your API work as expected but measured from the user's POV and not the servers?
  • Third-Party vendors, If you use a vendor, like Braintree, many open webviews or may not have the proper retry logic

3) Drill down

The aggregate performance data can help you with the easiest issues, but sometimes you need to go deeper to see where users are getting hung up. Often you need to find common correlations.  This can only be accomplished by checking all individual sessions for that funnel issue. See exactly what happened while they used the app, including screenshots. By reviewing the technical details of the sessions (CPU spikes, memory usage, network calls fired, clicks & taps, logs, etc.) you can find correlations that will point you in the direction of the cause.  Unfortunately, mobile is compiled code so pinpointing issues is not like reviewing web code but instead looking at how your app ran on the device.