Mobile apps that rely on purchases for revenue want their purchase flows to be as seamless as possible. After all, each purchase failure is a direct loss of revenue. But these revenue leaks can have far-reaching consequences beyond the immediate revenue loss. They can result in users losing confidence in your mobile app, which erodes brand loyalty and quickly leads to churn.

In this blog post, we’ll cover:

  • What are the different types of purchase failures?
  • What technical failures cause purchase failures?
  • How can mobile teams track purchase failures?
  • How can mobile teams quickly respond to purchase failures?

What Are the Different Types of Purchase Failures?

Purchase failures primarily fall into these types:

  1. Purchase Failures Where the User Immediately Tries Again — If the failure stemmed from a lack of connectivity, the user could eventually complete the purchase.
  2. Purchase Failures With No Second Attempt — If the purchase fails to go through and the user doesn't attempt again, that revenue is lost.
  3. Purchase Failures From Poor Funnel Performance — If the user chooses to stop at any point in the purchase funnel, that revenue is lost in the form of an abandoned cart.

While users may not necessarily abandon an app at the first sign of friction, it’s very important to minimize it for the purposes of long-term retention and revenue. Otherwise, these failures can lead to ongoing revenue loss in the form of user churn and negative app store reviews.

What Technical Failures Cause Purchase Failures?

The following technical failures can cause the above purchase failures:

Network call errors

Sometimes your app experiences connection errors and timeouts. These are network calls that simply do not successfully leave the device, or slow network calls that take so long they are dropped and do not complete. In addition, 5xx server-side errors can happen as a result of an outage or overload of purchase requests in your backend. It’s also possible for vendors to have the issue, such as Apple Pay or PayPal. In these cases, the purchase will fail and the user is forced to try again.

Poor performance

Poor performance can be frustrating for users that just want to buy something. For example, if your app is slow when adding items to cart or repeatedly stuck in a loading loop when trying to complete a purchase, a frustrated user may simply choose to abandon the cart and try their luck on another app. You want to be tracking ANRs and freezes within your app, as well as how new features and updates impact performance from the perspective of your users.

Bad code

A staple of programming but still bears repeating: unexpected behavior in mobile apps causes user frustration. Embrace had an e-commerce partner that tracked 1% of their carts being abandoned. The reason was that users were inadvertently adding items with a quantity of 0 to the cart, which caused the entire cart to empty. This resulted in users quitting purchases instead of continuing or trying again, and is a good example of why bad code can result in purchase failures.

Poor retry logic

An off-shoot of bad code, poor retry logic can cause temporary outages to result in multiple charges. For example, Embrace had an e-commerce partner that had a database issue that slowed the rate of processing purchases. The result was that the backend was returning payment failures to the device, which triggered a retry. However, the original payments eventually were getting processed, leading to multiple charges for users. Needless to say, this brought on quite a few user complaints!

Alongside that, your app needs to have a system in place for handling poor connectivity. Do you have a well thought-out system for how your app handles changing connectivity, especially in the middle of a purchase attempt? Does it inform the user so they don’t think the app crashed? Can it send the payment once connectivity returns? How can you prevent connectivity issues from costing you revenue?  

Read our eBook to learn how your mobile team can spend more time building features and less time fixing issues.

How Can Mobile Teams Track Purchase Failures?

It’s important to track the issues that lead to purchase failures because fixing those issues directly stops revenue leaks. If 1% of your revenue is lost as a result of a fixable mistake, the first step to reclaiming it is understanding where and why.

You can track these by:

  • Monitoring payment endpoints, including device-side network traffic. Simply monitoring your backend is not enough to understand these issues.
Monitor and know the failure rates of network errors
  • Track timing and outcome of key flows. The behavior of your users is valuable data for telling you when and where they decide to stop going through with the purchase funnel.
Teams should know the performance of key flows
  • Have full individual session context so you can compare good and bad sessions. This requires you to collect every session and have a powerful session replay feature to investigate individual issues.
  • Set session and log properties to allow powerful filtering so you can inspect for patterns. After comparing, you need to be able to understand if there’s a trend and isolate how this trend is emerging. Is it regional? Device-specific? Version-specific? What is the unifying cause?
While logging errors, tag them with property keys and values for easy filtering

How Can Mobile Teams Quickly Respond to Purchase Failures?

If purchase failures are triggering your alerts, taking action quickly is your best course of action. If you are averaging one purchase failure every 10 minutes, that’s six purchase failures for every hour the issue remains unsolved. Understanding the impact of these issues will help you prioritize whether to pull team members off other projects and address them immediately. This is why having full observability to provide insight into the causes and exact circumstances of your purchase failures is a huge competitive edge.

You should be building a proactive alert system, backend kill switches for problematic features or SDKs, and dashboards that easily display the most critical metrics to teams that are designated as “need to know.”

Setting alerts to trigger on a threshold

Your proactive alert system should always be the first to tell you if purchase failures are happening, not your users. You should never expect your users to be submitting bug reports because that’s not their job. Your monitoring should surface every type of purchase failure and send alerts when things are breaking. You need well-defined thresholds for each individual failure type and a system to get that alert to the team members that need to know about it.  

Of course, give your team members the ability to configure the system to minimize alerts for the issues they already know about or are currently working on. Make sure alerts only notify the people that need to know — team members that aren’t involved with a specific issue will begin to mentally filter out noisy alerts. Have specific channels in Slack that your alert system sends notifications to so that your mobile team isn’t ignoring alerts that may be critical!

A fully configurable alert system is key to getting ahead of issues

Finally, have dashboards that different teams can use to track the metrics they care about in real-time. That way, if a regression happens, teams can quickly investigate. Whether it's a product team tracking feature health, a monetization team tracking ad vendor performance, or an engineering team tracking app performance and stability, the key is to empower teams with the visibility they need to quickly make informed decisions.

Create dashboards that track key metrics

Ask your team if users stopped reporting issues altogether, which issues would they have difficulty surfacing? Why is that, and how can you uncover these issues without the aid of your users?

For a deeper dive into how Embrace helps best-in-class mobile teams put a stop of costly revenue leaks, check out our on-demand webinar:

How Embrace Helps Mobile Teams

Embrace is a mobile data platform that provides observability, debugging, and proactive alerting for mobile teams. We are a comprehensive solution that fully reproduces every user experience from every single session. Your team gets the data it needs to proactively identify, prioritize, and solve any issue that’s costing you users or revenue.

We're hiring for many different roles! Check out our openings and see if you'd be a good fit for our growing team!

Want to see how Embrace can help your team grow your mobile applications with best-in-class tooling and world-class support? Request a customized demo and see how we help teams set and exceed the KPIs that matter for their business!


Need help improving the performance and stability of your Unity games? Take our SDK for a spin!


Want to learn best practices for scaling your mobile applications? Check out these helpful eBooks!