Subscription apps love a Monday chart: users who started a trial last week, still active seven days later. If your trial includes a weekend, a public holiday, and a delayed first billing attempt, that window is not measuring the same exposure for everyone. Customer journey reporting has to say so, or growth will “optimise” a number that is mostly calendar noise.
Pause states make it worse. A fitness app we taught in Retention Signal Lab treated every cancel as terminal. Interviews said people paused for travel. The event contract had no pause. Win-back mail went out anyway. The cohort chart looked like a cliff; the humans looked annoyed.
Windows we actually use
We start with exposure, not calendar. A person who could not open the app because of an outage does not belong in the same seven-day bucket as someone who opened it twelve times. That does not mean you build a perfect availability model. It means you footnote outages and avoid celebrating a dip that matches a store incident.
For billing, we separate “trial started,” “first charge attempted,” “first charge succeeded,” and “pause requested.” Those are journey states. A single “retained” flag that OR-s them together will make leadership happy and analysts quietly furious.
Immortal cohorts are the other trap: users who remain in a “month 0” bucket forever because they never converted and never uninstalled. Set an exit. After a defined quiet period they leave the active journey and, if you still care, enter a win-back study with its own contract.
What this is not
This essay is not a licence to drown a review in caveats. Pick a window. Name what it includes. Keep pause as a first-class state. Revisit the window when billing rules change. Cohort Observatory, when we run it, is five sessions on exactly this. Journey Atlas covers a lighter version in the reporting-pack module.