# How to calculate ARPU and ARPPU

> How to calculate ARPU and ARPPU, conversion to paid and trial-to-paid, and how a change in the paywall trigger mix fakes a better paywall.

- Course: [Product Analytics: From Data to Decisions](https://productovi.com/courses/product-analytics.md)
- Module: Are we making money on it?
- Lesson 25/32, ~33 min
- Source: https://productovi.com/courses/product-analytics/revenue-metrics

## ARPU fell in June: how to calculate it

**Alex Tutor:** Revenue is on the agenda for the Halves product team, and Maya brings you June's numbers. Today: how to calculate ARPU and what it hides.

**Maya:** June numbers are in, and ARPU dropped from **\$0.58** to **\$0.53**. We shipped the new paywall design in May. Did we break something?

**Alex Tutor:** Before we blame the paywall, let's check what ARPU divides by. The **ARPU** formula: the month's revenue divided by all active users, paying or not. **ARPPU** divides the same revenue by paying users only.

$$
\text{ARPU} = \frac{\text{revenue}}{\text{active users}} \qquad \text{ARPPU} = \frac{\text{revenue}}{\text{paying users}}
$$

*Same revenue, two different denominators.*

**Sofia:** One numerator, two denominators. So if lots of free users arrive, ARPU drops even when nobody pays less?

![The same cake cut for a big crowd gives tiny slices; cut for a small group, it gives large ones.](https://productovi.com/courses/product-analytics/inline/revenue-metrics-illustration-2.webp)

*Same revenue, two denominators: everyone active, or only those who pay.*

**Alex Tutor:** Exactly. Here are the Halves Plus numbers for the first half of 2026. Work out June's ARPPU from them.

**Dataset (CSV):** [Halves Plus by month, January–June 2026](https://productovi.com/datasets/product-analytics/revenue-metrics/halves-plus-monthly-2026.csv)

Active users, paying users, first payments and revenue per calendar month.

- `month`: Calendar month
- `active_users`: Users who opened the app in the month (staff excluded)
- `paying_users`: Users with an active paid Halves Plus plan in the month
- `new_subscribers`: First payments made in the month
- `revenue_usd`: Revenue billed in the month, USD; a yearly plan counts in full when paid

> **Exercise:** Use the monthly table. What was Halves Plus **ARPPU** in June 2026? Round to cents.

## Why ARPU fell while ARPPU rose

**Alex Tutor:** ARPPU went from \$4.51 in May to \$4.85 in June, and revenue grew 21%. So payers didn't pay less. What fell?

**Sofia:** The share of active users who pay: 3,313 of 25,704 in May, 3,730 of 34,365 in June.

**Alex Tutor:** That's 12.89% and 10.85%. June is trip season: friends install Halves for one holiday and rarely subscribe. ARPU is paying share times ARPPU, so it can fall while every payer pays more.

![Holiday travellers with suitcases crowd into a café, while regulars at their usual corner table keep paying as before.](https://productovi.com/courses/product-analytics/inline/revenue-metrics-illustration-3.webp)

*More free trip users lower the share who pay, not what payers spend.*

$$
\text{ARPU} = \frac{\text{paying users}}{\text{active users}} \times \text{ARPPU}
$$

*June: 10.85% × $4.85 ≈ $0.53.*

![ARPU is paying share times ARPPU: the paying share fell from 12.89% to 10.85% while ARPPU rose from $4.51 to $4.85, so ARPU fell to $0.53.](https://productovi.com/courses/product-analytics/diagrams/m7-l1-arpu-decomposition.png)

**Maya:** Fine, but why do payers pay more?

**Alex Tutor:** Mostly price: since 1 April new subscribers pay \$4.99 a month instead of \$3.99, and yearly plans went up too. That has nothing to do with the paywall design either.

> **Exercise:** For Halves Plus, from May to June 2026, ARPU fell from \$0.58 to \$0.53, ARPPU rose from \$4.51 to \$4.85 and revenue grew 21%. Which reading is right?

## Free-to-paid and trial-to-paid conversion

**Alex Tutor:** Two more ratios sit between the paywall and revenue. **Conversion to paid** (free-to-paid conversion) is the share of a group, say everyone who saw the paywall, who made a first payment. Always say who is in the denominator.

**Alex Tutor:** **Trial-to-paid conversion** is the share of trials that have **ended** and turned into a first payment. A trial that's still running hasn't failed yet.

**Alex Tutor:** Before we open the table, sort out the denominators. Each of these ratios divides by a different group of people.

> **Exercise:** Match each Halves revenue metric with its denominator.

**Alex Tutor:** One more check on the numerator: what does a month's revenue actually count? True or false?

> **Exercise:** Halves billed \$18,073.25 in June 2026, so its subscriptions bring in about \$18,000 every month.

**Sofia:** Halves has a 7-day trial and the data stops on 30 June. So trials from the last week of June are still open.

**Alex Tutor:** That's why the paywall table below has both `trials_started` and `trials_ended`. It splits every month by what opened the paywall.

**Dataset (CSV):** [Paywall viewers and trials by trigger, April–June 2026](https://productovi.com/datasets/product-analytics/revenue-metrics/halves-paywall-triggers.csv)

Data cut: 30 June 2026. Every user is counted once per month, under the trigger of their first paywall view.

- `month`: Calendar month
- `trigger`: What opened the paywall: receipt_scan, currency, charts or settings
- `paywall_viewers`: Distinct users who saw the paywall from this trigger
- `trials_started`: Of them, users who started the 7-day free trial
- `trials_ended`: Trials that had ended by 30 June
- `trials_converted`: Ended trials that turned into a first payment

> **Exercise:** Use the paywall table. What was **trial-to-paid conversion** for June 2026 trials, all triggers together?

**Alex Tutor:** Now the same June trials in a status update. Two analysts wrote two lines; only one would survive Friday’s review.

> **Exercise:** Which status line reports June’s trial-to-paid conversion **correctly**? Data cut: 30 June 2026.

## The paywall that got better on its own

**Maya:** Now the good news. Paywall-to-trial went from 13.4% in April to 16.8% in June. The new design works!

**Alex Tutor:** Look inside the total. Per trigger, the rate is flat or a little lower: receipt scans 16.0% then 15.0%, currency 26.0% then 25.0%. What changed is who sees the paywall.

**Sofia:** The currency trigger. It's 39% of June viewers, up from 12% in April. People abroad need multi-currency, and a quarter of them start a trial.

**Alex Tutor:** That's a **mix shift**: the average moves because the mix of triggers moved, not because anyone behaves differently within a trigger.

![Four doors lead to one counter; far more travellers come through the door marked with a globe than through the others.](https://productovi.com/courses/product-analytics/inline/revenue-metrics-illustration-4.webp)

*The average rose because more viewers came through one door, not because any door got better.*

> **Exercise:** Halves shipped a new paywall design in May. Compare April and June in the paywall table. Which statements does it support? Select all that apply.

## Hold the mix still

**Alex Tutor:** To compare fairly, apply June's rate for each trigger to April's mix of viewers. If the design helped, the result should beat April's 13.4%.

**Sofia:** A weighted average, then: each June rate times April's share of viewers for that trigger, and add the four products.

**Alex Tutor:** Yes. Keep four decimals in the shares and rates and the answer won't drift.

$$
\text{rate}_{\text{June at April mix}} = \sum_{\text{trigger}} \text{share}_{\text{April}} \times \text{rate}_{\text{June}}
$$

> **Exercise:** Apply June's paywall-to-trial rate for each trigger to **April's** share of viewers per trigger. What overall rate do you get?

## The note for Maya

**Alex Tutor:** At April's mix, June converts at 12.7%, below April's 13.4%. The data doesn't show the new design raised trial starts. It can't prove the design hurt either: it's a before-and-after comparison, not a test.

**Maya:** So what do I say at Friday's review?

**Alex Tutor:** Four sentences: what moved, why it moved, what the fair comparison shows, and what would settle the question.

> **Exercise:** Halves shipped a new paywall design in May, and paywall-to-trial conversion rose from 13.4% in April to 16.8% in June. Write Maya, the product lead, a note of 3–5 sentences for Friday's review: did the new design raise paywall-to-trial conversion? Use the numbers from the paywall table.

**Alex Tutor:** Today's rule: every revenue ratio has a denominator, and every denominator has a mix. Check both before you celebrate or panic. How subscribers leave, and how to count it, is in the glossary: [churn rate](/glossary/pa-user-churn).

- Previous lesson: [Case: the version or the traffic?](https://productovi.com/courses/product-analytics/did-the-version-help.md)
- Next lesson: [The LTV curve](https://productovi.com/courses/product-analytics/ltv-curve.md)

---
Productovi Learning. Free, no sign-up needed to read.
