
How Vitalis found the revenue hiding inside its subscriber base
+19%
subscription ARPU · measured against a randomised holdout
In short
Vitalis sells wellness subscriptions to a large consumer base where most revenue growth was assumed to require new members. Markin surfaced the upgrade, add-on and reactivation opportunities already sitting in the base and executed them 1:1, lifting subscription ARPU 19% on treated cohorts against a randomised holdout.
Results
Every decision carries a control group+19%
Subscription ARPU on treated cohorts
vs randomised holdout, full measurement window
+27%
Plan upgrades
members moving to a higher tier without a discount
3×
Experiments shipped per month
compared with the previous campaign calendar
Anonymised range across Markin deployments in large B2C bases, read over a full measurement window. It is not an industry benchmark and not a forecast for your base.

At a glance
- Industry
- Health & wellness subscriptions
- Markets
- Europe and LatAm
- Base
- Millions of members on recurring plans
- Motions live
- Upgrade, add-on cross-sell, reactivation, dunning recovery
- Stack
- Warehouse, product events, Braze, app, Stripe
- First measured lift
- Week 7
The challenge
Vitalis had a healthy subscription business and a growth plan that depended almost entirely on acquiring new members. Every incremental euro was assumed to come from outside the base, while the base itself was managed with a handful of lifecycle emails that had not changed in a year.
The revenue question nobody could answer was smaller and more specific: which member is ready for a higher tier, which one only needs one add-on, and which one is about to lapse for a reason a discount will not fix. Answering it per member, every week, across millions of subscribers, was beyond the team's analytical capacity.
Blanket upgrade pushes made the problem worse: they generated revenue that would have arrived anyway and trained members to wait for promotions.
What Markin did
Data and context, intelligence, action01 / Data & context
The subscription, as it is actually used
Markin reads plan history, usage and engagement events, payment outcomes and support contacts where they already live, so every member has a live picture of value received versus value paid.
02 / Intelligence
Opportunities the calendar never surfaced
The intelligence layer sizes each opportunity in the base, tier upgrade, add-on, reactivation, dunning recovery, and separates the members who would convert anyway from the ones where an action is genuinely incremental.
03 / Action
One decision per member, launched in place
Approved actions run through Braze, the app and the billing flow, each against a randomised holdout. Offers that only cannibalise existing revenue are retired automatically.
Experiments that ran
Hypothesis to measured lift| Hypothesis | Segment | Action | Channel | Measured lift |
|---|---|---|---|---|
| Heavy users on the entry tier upgrade without a discount | Members exceeding entry-tier usage two months running | Tier upgrade framed on the value already consumed, full price | In-app + email | +27% upgrades |
| A single relevant add-on beats a bundle | Members with a consistent single-category usage pattern | One add-on matched to that category, no bundle | In-app | +14% attach rate |
| Most involuntary churn is a payment problem, not a value problem | Failed renewals in the first 48 hours | Card-specific retry timing plus a one-tap update path | Push + email | +21% recovered renewals |
| Lapsed members return for a use case, not for a price cut | Cancelled members with high historical engagement | Reactivation built around their most-used programme | Email + push | +12% reactivation |
How it rolled out
Week 0
Base connected
Plan, usage, billing and engagement data connected read-only. Historical cohorts replayed to size the in-base opportunity.
Week 3
First motions live
Upgrade and dunning recovery running with holdouts, executed through the existing stack.
Week 7
First readable lift
Subscription ARPU reads +19% on treated cohorts. Two blanket promotions are retired as non-incremental.
Week 12
Always-on in-base growth
Upgrade, add-on, reactivation and dunning motions running continuously, with new hypotheses entering weekly.
In their words
“We stopped assuming growth had to come from new members. Most of it was already inside the base, we just could not see it member by member.”
VP Growth, Vitalis
The stack Markin worked with
No migration, no new system of recordQuestions buyers ask about this case
Did upgrades come at the cost of churn?
No. Churn is read on the same holdout as revenue, so a motion that lifts ARPU while pushing members out is caught in the same measurement window and retired.
How was the Vitalis result measured?
Every decision carries a randomised holdout. The lift quoted is the difference between the treated cohort and that control group over a full measurement window, not a before-and-after comparison.
Did they have to move their data to Markin?
No. Markin reads from the warehouse, CDP and product events already in place. Nothing is copied into a new system and nothing is locked in.
Which team ran it day to day?
The existing growth team. Markin does the analytical work, a health and wellness team of that size would need a dedicated data-science pod to produce, and routes every action into the tools they already operate.
How long until the first measurable lift?
A first motion goes live in about 30 days and the first statistically readable result lands inside the following six weeks. Scaled impact typically reads at 90 days.


