Retention
The Retention screen answers two questions: who do I need to call today (who hasn't renewed, who is at risk of leaving) and how is my studio doing month over month. It's the medium-term view that complements the day-to-day dashboard.
Like all sensitive information, it's visible to the owner and staff (filtered by location according to each person's permissions; see Team and permissions).
The screen has three tabs, from most useful to most detailed: Today (who to call), Trend (how the studio is doing month over month) and Cohorts (analysis by intake). The home dashboard also shows how many members haven't renewed this month, with a shortcut to this screen.
Today
Expired and not renewed
At the top you see three numbers: active today (the same number as the home dashboard), expired, not renewed and may leave.
The first list shows members whose plan expired in the last 30 days and who have not renewed or have no payment in progress, with the exact expiry date. A quarterly or six-month plan only shows up when it actually ends. Deleted members and cancelled memberships don't appear.
Each member has a Contact button that opens WhatsApp with a renewal message already written, and the name links to their profile to register the payment. The list shows 10 per page.
Members at risk
Beyond those who haven't renewed, Retention tells you who is at risk of churning today among your active members. The system reviews signals you're already recording, mainly:
- Hasn't come in for several days (no recent check-ins). The list shows how many days since the last visit.
- Coming in less and less (their frequency over the last two weeks dropped versus the two before).
- Accumulating weeks without attending (see the weekly streak in Member management).
- Membership expiring. The list shows the exact date.
- New member (the first ~3 months are the highest-risk stage for dropping out).
From those signals, each at-risk member is assigned a medium or high level. Members with no risk and brand-new ones (first week) don't appear. The list is sorted from highest to lowest risk, can be filtered by level, and shows 10 per page. Each member has their reason in plain words and a Contact button that opens WhatsApp.
This list is computed on the spot, so it always reflects the current situation: if a member starts training again or renews, they stop appearing.
The list is internal: it's information for you and your team, and the member gets no notice for being on it. The only reminder the member does receive when they cool off is the weekly inactivity notice (see Member communication).
If nobody has a pending renewal and nobody is at risk, the section says so and that's it.
Trend
How retention counts: by payment, not attendance
There's a key idea here: for Retention, a member is active in a month when they have an approved payment that covers that month, not based on whether they actually came in to train.
Each payment covers one plan cycle, counted end to end: if someone pays for a quarter or a year at once, they stay active for every month that payment covers. This has useful consequences:
- A quarterly or annual payer counts as active in every paid month, without showing up as a false churn in the months in between.
- A member who leaves and comes back shows the real gap, and on return is not counted again as a new member.
- A pause doesn't count as churn: the member stays active during the pause.
- Members you imported from a spreadsheet count as active from their original start date, even if their first in-app payment comes later. So when you start using Pulso Flow with an existing roster, you don't see everyone as "new".
- History is stable: past months don't change even if someone re-subscribes later or you edit a membership.
The numbers at the top
The three cards are computed over the last closed month and speak in counts, which say more than a percentage for a small studio:
- Active members: how many there were, and how many more or fewer than the month before.
- Renewed: "8 of 9", that is, of those active the previous month, how many stayed. Below it, the retention percentage that represents.
- New / churned: how many joined and how many left, with the net.
The current month isn't used for these numbers because it hasn't ended yet: mid-month there are always people who haven't renewed yet, and counting them as churn would give a false number.
Below, two charts: the retention-rate trend and new versus churned members per month. You can choose how many months to look at (3, 6, 12 or all) and filter by location.
The month-by-month table
One row per month, most recent on top. The current month's row is marked in progress and, instead of churn, shows how many members are to renew. Each row has:
- Active: members with a payment covering that month.
- New: members whose first-ever covered month is this one (real sign-ups).
- Churned: active the previous month but not this one.
- Retention: of those active the previous month, what percentage stayed.
The percentage shows as empty (—) when it can't be calculated: in the current month, in the oldest month of the range (no previous month to compare against) and in months when no one was active the month before. A real 0 % (there were members and none renewed) does show as
0 %, which is not the same as "—".
Tapping a number opens the list of names behind it, with a link to each member's profile and, for churned members, a button to message them on WhatsApp and try to win them back.
Cohorts
The third tab, for when you want a finer look. The cohort heatmap groups members by the month they signed up and tracks each group over time.
Each row is a cohort (for example, "those who joined in January") and each column is a later month: M0 is the sign-up month, M1 the next one, M2 the one after, and so on. The value is the percentage of that cohort still active at each point:
- M0 is always 100 %: in its sign-up month, the whole cohort is active by definition.
- From there on, the percentage shows how many of that group still have a payment covering them. Reading a row left to right shows how fast each intake thins out.
- Each row runs to the current month, so older cohorts have more columns and newer ones fewer. Months with no sign-ups don't produce a row.
It's useful for comparing intakes: for instance, seeing whether members who joined during a specific campaign stick around more or less than those from other months.