The checklist
The whole playbook as numbered, terse lines — each with the metric it moves and the Broctic event or report that measures it. Written to be read in one pass by a person or an agent.
Every line below is justified on the pages of this playbook and traced to a figure on the sources page. Lines with no published figure say so. The same text is served in /llms.txt so an agent can fetch it directly.
Onboarding
1. Build and verify the core app first, then design the shortest useful route to first value; defer nonessential questions.
- Moves
- onboarding completion
- Measure
- onboarding_started → onboarding_completed in the Funnel report
- Evidence
- Practitioner consensus — no published figure.
2. Use honest progress when a bounded sequence benefits from it; test against a simpler flow.
- Moves
- first-step drop-off
- Measure
- onboarding_step with step=1 → step=2
- Evidence
- Practitioner consensus — no published figure.
3. Request only essential account information; allow guest use when possible and meet Apple login requirements.
- Moves
- sign-up completion
- Measure
- signup_started → signup_completed
- Evidence
- Practitioner consensus — no published figure.
4. Use question screens to personalise the outcome you will promise on the paywall, not to collect data you will not use.
- Moves
- paywall conversion (the answers feed the headline)
- Measure
- onboarding_step props name=…; paywall_viewed → trial_started
- Evidence
- Practitioner consensus — no published figure.
5. Ask for notifications and tracking permission after a moment that explains why, never on first launch. Expect about a third to allow tracking.
- Moves
- permission opt-in
- Measure
- feature_used with feature=notifications_prompt / att_prompt (custom)
- Evidence
- 35% Adjust 2025
Paywall
1. Test a relevant offer after demonstrated value or at a premium feature; choose early hard gates only with a product-specific rationale.
- Moves
- download → trial
- Measure
- onboarding_completed → paywall_viewed; store: Downloads that start a trial
- Evidence
- 82% RevenueCat 2025 · 4.3% RevenueCat 2025 · 9.8% RevenueCat 2025
2. Decide hard gate or freemium deliberately: a hard paywall converts about five times more installs to payers by day 35, at a higher refund rate.
- Moves
- download → paid; refund rate
- Measure
- store: Downloads that pay; Refund rate
- Evidence
- 12.1% RevenueCat 2025 · 2.2% RevenueCat 2025 · 5.8% RevenueCat 2025 · 3.4% RevenueCat 2025
3. Consider a multi-page paywall — a short value walk-through before the offer — and measure it against a single page; the published gap is 37% relative, observational.
- Moves
- paywall → trial
- Measure
- paywall_viewed → trial_started
- Evidence
- 12.41% vs 9.07% Superwall 2026 · 24% Superwall 2026
4. Test a small understandable set of plans; do not infer a universal winner from cross-app comparisons.
- Moves
- paywall → trial/purchase
- Measure
- paywall_viewed → trial_started / purchase_completed
- Evidence
- +61% Superwall 2022 · +44% Superwall 2022
5. State the trial length, the price after it and the charge date on the paywall itself; put restore, terms and privacy on it (App Review requires them).
- Moves
- purchase sheet completion; refunds
- Measure
- purchase_started → purchase_completed; store: Refund rate
- Evidence
- 5.8% RevenueCat 2025
6. Show a follow-up offer to people who open the purchase sheet and back out — about a fifth of paywalled users do.
- Moves
- recovered purchases
- Measure
- purchase_failed → purchase_completed (custom funnel)
- Evidence
- ~20% Superwall 2024 · 17% Superwall 2024
7. Keep the buy button on screen without scrolling, and make the content fill the viewport. A paywall composed against a short device leaves a dead band on a tall one, which reads as a page that failed to load rather than as a layout.
- Moves
- paywall → trial (nothing converts on a screen that looks broken)
- Measure
- paywall_viewed → trial_started, split by device via the context on each event
- Evidence
- Practitioner consensus — no published figure.
8. Give the paywall a real state for when the store does not answer: what happened, a retry, and restore. On a hard gate this is the state that locks somebody out of the whole app, so it must offer a way forward rather than an explanation.
- Moves
- recovered sessions; refunds and one-star reviews avoided
- Measure
- error_shown where=paywall; paywall_viewed with no purchase_started after it
- Evidence
- Practitioner consensus — no published figure.
Pricing and plans
1. Lead with an annual plan outside gaming; weekly plans renew at 3.4% after a year, monthly at 17%.
- Moves
- year-1 retention; LTV
- Measure
- subscription_renewed per product; store: paid units per SKU
- Evidence
- 3.4% RevenueCat 2025 · 17.0% RevenueCat 2025 · 67% RevenueCat 2025 · 65% RevenueCat 2025 · 78% RevenueCat 2025
2. Do not price low to convert: high-priced apps start more trials, convert more installs to payers and earn ~7× the year-1 LTV per subscriber.
- Moves
- download → trial; download → paid; LTV
- Measure
- store: Downloads that start a trial; Downloads that pay; proceeds per download
- Evidence
- 9.8% RevenueCat 2025 · 4.3% RevenueCat 2025 · 2.66% RevenueCat 2025 · 1.49% RevenueCat 2025 · $55.21 RevenueCat 2025 · $8.08 RevenueCat 2025
3. Offer a trial of 17–32 days if the product can prove itself in that time; most apps offer 5–9 and convert worse.
- Moves
- trial → paid
- Measure
- trial_started → subscription_started; store: Trials that pay
- Evidence
- 45.7% RevenueCat 2025 · 52% RevenueCat 2025
4. Add a weekly plan for India, South-East Asia and the Middle East; those regions rely on weekly plans far more than others.
- Moves
- download → paid by storefront
- Measure
- Analytics → Places; store rows by country
- Evidence
- 36% · 35% RevenueCat 2025
5. Check the ladder is arithmetically defensible before shipping it: no plan may cost less than a shorter one over the same period, and a one-time tier priced near the annual one cannibalises it. A customer who does the sums and finds a cheaper route was penalised for not checking, which is the version of a pricing page nobody defends out loud.
- Moves
- plan mix; the share of revenue that lands on the plan you intended
- Measure
- store: proceeds and paid units per SKU — the per-product breakdown, not the total
- Evidence
- Practitioner consensus — no published figure.
6. Judge a plan on the revenue it produces per SKU, not on how many transactions it shows. A weekly plan bills thirteen times a quarter and an annual plan once, so transaction counts flatter short billing periods and say nothing about how many people are actually subscribed.
- Moves
- nothing directly — it stops you drawing the wrong conclusion from the right data
- Measure
- store: proceeds per SKU alongside paid units per SKU
- Evidence
- Practitioner consensus — no published figure.
Trials, renewals, refunds
1. Send a reminder before the trial charges and make cancellation obvious; hidden cancels become refunds, and refunds are netted out of proceeds.
- Moves
- refund rate
- Measure
- store: Refund rate; subscription_cancelled
- Evidence
- 5.8% RevenueCat 2025 · 3.4% RevenueCat 2025 · 4.71% RevenueCat 2025
2. Treat the first month of an annual plan as the retention problem: about 30% cancel in it. Deliver the core outcome in the first two sessions.
- Moves
- first-month cancellation
- Measure
- subscription_started → subscription_cancelled (custom funnel, 30-day window)
- Evidence
- ~30% RevenueCat 2025
3. Judge trial → paid against 30–50%, not 100%: the published medians sit in the mid-forties for the best categories.
- Moves
- trial → paid
- Measure
- store: Trials that pay (provisional until the window ages)
- Evidence
- 48.7% RevenueCat 2025 · 43.8% RevenueCat 2025
As plain text
For an agent, or a pull request description
### Onboarding
1. Build and verify the core app first, then design the shortest useful route to first value; defer nonessential questions.
Moves: onboarding completion. Measure: onboarding_started → onboarding_completed in the Funnel report. (Practitioner consensus — no published figure.)
2. Use honest progress when a bounded sequence benefits from it; test against a simpler flow.
Moves: first-step drop-off. Measure: onboarding_step with step=1 → step=2. (Practitioner consensus — no published figure.)
3. Request only essential account information; allow guest use when possible and meet Apple login requirements.
Moves: sign-up completion. Measure: signup_started → signup_completed. (Practitioner consensus — no published figure.)
4. Use question screens to personalise the outcome you will promise on the paywall, not to collect data you will not use.
Moves: paywall conversion (the answers feed the headline). Measure: onboarding_step props name=…; paywall_viewed → trial_started. (Practitioner consensus — no published figure.)
5. Ask for notifications and tracking permission after a moment that explains why, never on first launch. Expect about a third to allow tracking.
Moves: permission opt-in. Measure: feature_used with feature=notifications_prompt / att_prompt (custom).
### Paywall
1. Test a relevant offer after demonstrated value or at a premium feature; choose early hard gates only with a product-specific rationale.
Moves: download → trial. Measure: onboarding_completed → paywall_viewed; store: Downloads that start a trial.
2. Decide hard gate or freemium deliberately: a hard paywall converts about five times more installs to payers by day 35, at a higher refund rate.
Moves: download → paid; refund rate. Measure: store: Downloads that pay; Refund rate.
3. Consider a multi-page paywall — a short value walk-through before the offer — and measure it against a single page; the published gap is 37% relative, observational.
Moves: paywall → trial. Measure: paywall_viewed → trial_started.
4. Test a small understandable set of plans; do not infer a universal winner from cross-app comparisons.
Moves: paywall → trial/purchase. Measure: paywall_viewed → trial_started / purchase_completed.
5. State the trial length, the price after it and the charge date on the paywall itself; put restore, terms and privacy on it (App Review requires them).
Moves: purchase sheet completion; refunds. Measure: purchase_started → purchase_completed; store: Refund rate.
6. Show a follow-up offer to people who open the purchase sheet and back out — about a fifth of paywalled users do.
Moves: recovered purchases. Measure: purchase_failed → purchase_completed (custom funnel).
7. Keep the buy button on screen without scrolling, and make the content fill the viewport. A paywall composed against a short device leaves a dead band on a tall one, which reads as a page that failed to load rather than as a layout.
Moves: paywall → trial (nothing converts on a screen that looks broken). Measure: paywall_viewed → trial_started, split by device via the context on each event. (Practitioner consensus — no published figure.)
8. Give the paywall a real state for when the store does not answer: what happened, a retry, and restore. On a hard gate this is the state that locks somebody out of the whole app, so it must offer a way forward rather than an explanation.
Moves: recovered sessions; refunds and one-star reviews avoided. Measure: error_shown where=paywall; paywall_viewed with no purchase_started after it. (Practitioner consensus — no published figure.)
### Pricing and plans
1. Lead with an annual plan outside gaming; weekly plans renew at 3.4% after a year, monthly at 17%.
Moves: year-1 retention; LTV. Measure: subscription_renewed per product; store: paid units per SKU.
2. Do not price low to convert: high-priced apps start more trials, convert more installs to payers and earn ~7× the year-1 LTV per subscriber.
Moves: download → trial; download → paid; LTV. Measure: store: Downloads that start a trial; Downloads that pay; proceeds per download.
3. Offer a trial of 17–32 days if the product can prove itself in that time; most apps offer 5–9 and convert worse.
Moves: trial → paid. Measure: trial_started → subscription_started; store: Trials that pay.
4. Add a weekly plan for India, South-East Asia and the Middle East; those regions rely on weekly plans far more than others.
Moves: download → paid by storefront. Measure: Analytics → Places; store rows by country.
5. Check the ladder is arithmetically defensible before shipping it: no plan may cost less than a shorter one over the same period, and a one-time tier priced near the annual one cannibalises it. A customer who does the sums and finds a cheaper route was penalised for not checking, which is the version of a pricing page nobody defends out loud.
Moves: plan mix; the share of revenue that lands on the plan you intended. Measure: store: proceeds and paid units per SKU — the per-product breakdown, not the total. (Practitioner consensus — no published figure.)
6. Judge a plan on the revenue it produces per SKU, not on how many transactions it shows. A weekly plan bills thirteen times a quarter and an annual plan once, so transaction counts flatter short billing periods and say nothing about how many people are actually subscribed.
Moves: nothing directly — it stops you drawing the wrong conclusion from the right data. Measure: store: proceeds per SKU alongside paid units per SKU. (Practitioner consensus — no published figure.)
### Trials, renewals, refunds
1. Send a reminder before the trial charges and make cancellation obvious; hidden cancels become refunds, and refunds are netted out of proceeds.
Moves: refund rate. Measure: store: Refund rate; subscription_cancelled.
2. Treat the first month of an annual plan as the retention problem: about 30% cancel in it. Deliver the core outcome in the first two sessions.
Moves: first-month cancellation. Measure: subscription_started → subscription_cancelled (custom funnel, 30-day window).
3. Judge trial → paid against 30–50%, not 100%: the published medians sit in the mid-forties for the best categories.
Moves: trial → paid. Measure: store: Trials that pay (provisional until the window ages).