# How many steps should I expect in a subscription cancel flow?

Source: Lazyweb Research
Published: 2026-07-07
Sample size: n=81
Tags: cancellation, retention, saas, ux-patterns, experiments
HTML: https://www.lazyweb.com/research/how-many-steps-in-a-subscription-cancel-flow
Markdown: https://www.lazyweb.com/research/how-many-steps-in-a-subscription-cancel-flow.md

**Answer.** Across 81 apps with captured cancel screens, the median app surfaces 3 distinct cancel screens (mean 3.78, max 21) [1]. Because step ordering is missing on 329 of 332 canonical rows, treat this per-app distinct-screen count as a depth proxy, not a literal step counter [2]. Explicitly named multi-screen cancel flows are too sparse (4 flows across 3 apps) to headline a 'typical' step count [3].

> Median app shows 3 distinct cancel screens (mean 3.78, max 21) across 81 apps, July 2026.

## The finding

Using distinct canonical cancel screens captured per app as a depth proxy, the median is **3** and the mean is **3.78**, with a long tail up to **21** distinct screens for the deepest app [1].

| Metric | Value | Basis |
|---|---|---|
| Median distinct cancel screens / app | 3 | 81 apps [1] |
| Mean | 3.78 | 81 apps [1] |
| Max | 21 | 81 apps [1] |

This draws on 1,685 screenshots mapped to the Cancel-Subscription canonical category across 81 apps [4].

## Why this is a proxy, not a step count

The `step_index` field that would order screens into a funnel is **NULL for 329 of 332** canonical cancel rows, so we cannot reconstruct literal step 1 → step 2 → step 3 ordering [2]. Separately, explicitly named multi-screen cancel flows number just **4 flows across 3 apps** (avg 2.75 steps) — below the N≥8 bar to state a 'typical' count [3]. The distinct-screen-per-app figure is the honest, larger-sample alternative.

## How to apply it

Plan for roughly **3 screens** in a standard cancel path and budget for a deeper branch (offer → survey → confirm) since the tail runs long. If your flow is materially deeper than the median, that depth should be deliberate — for example a save offer plus a confirmation step — not accidental friction, given click-to-cancel scrutiny [5].

## The numbers

| Stat | Computed from |
| --- | --- |
| median 3, mean 3.78, max 21 distinct cancel screens per app (81 apps) | step_depth_proxy_distinct_screens_per_app |
| step_index NULL for 329 of 332 canonical cancel rows | smallSampleWarnings / step_depth_proxy_distinct_screens_per_app |
| 4 named cancel flows across 3 apps, avg 2.75 steps | named_cancel_flows_step_count |
| 1,685 screenshots across 81 apps in Cancel-Subscription category | cancel_screenshots_and_apps |
| 332 canonical Cancel-Subscription app screens tracked | cancel_canonical_screens |

## Methodology

Universe: 1,685 screenshots across 81 apps in the Cancel-Subscription canonical category, July 2026. Method: count distinct canonical cancel screens per app as a depth proxy because step ordering is unavailable. Caveat: this is a depth proxy, not literal step ordering.

## Sources & citations

- [1] Lazyweb Research analysis of 1,685 screenshots (81 apps with Cancel-Subscription screens), July 2026. Per-app distinct canonical cancel screens used as a funnel-depth proxy.
- [2] Lazyweb Research analysis of 332 canonical cancel screens (app corpus), July 2026. step_index is NULL for 329/332 rows, so ordering cannot be reconstructed.
- [3] Lazyweb Research analysis of 4 named cancel flows (3 apps), July 2026. flow_canonical named cancel flows; N<8, reported as illustrative only.

## Related questions

- [What percent of cancel flows show a save offer, and which type?](https://www.lazyweb.com/research/what-percent-of-cancel-flows-show-a-save-offer)
- [What do click-to-cancel flows look like screen by screen in the field?](https://www.lazyweb.com/research/what-do-compliant-click-to-cancel-flows-look-like)
