What This Screen Does
This screen shows you how long your members stay with your gym on average. Think of it like a loyalty meter — it tracks the average membership lifetime in months over time, displayed as an area chart. This helps you understand whether members are sticking around longer or leaving sooner, so you can spot trends and take action.
How to Get There
Open the dashboard.
In the left-hand menu, click Insights.
Navigate to the Member section.
Click Length of Engagement (or scroll to the LEG card).
You are now on the Length of Engagement screen.
Step-by-Step Guide
1. Select a Date Range
Use the From Date and To Date filters at the top of the insights page.
This controls the time period shown on the chart.
Pick a wider range (e.g. a full year) to see long-term trends, or a shorter range to focus on recent changes.
Filter | Required | What to Enter |
From Date | Yes | The start date for the report. Pick a date from the date picker. |
To Date | Yes | The end date for the report. Pick a date from the date picker. |
2. Filter by Membership Type (optional)
Use the Membership Type filter to narrow the chart to specific membership types.
If no types are selected, all eligible types are included.
Eligible types are: contingent, campaign, and personal training memberships.
Guest and staff memberships are never included.
Filter | Required | What to Enter |
Membership Types | No | Select one or more membership types from the dropdown. Leave empty to include all eligible types. |
3. Set a Minimum Membership Length (optional)
Use the Minimum Length of Membership in Days filter to exclude very short memberships.
This is useful if you want to ignore trial memberships or people who signed up and cancelled immediately.
Filter | Required | What to Enter |
Minimum Length of Membership (days) | No | Enter a number. Only members whose total membership lasted at least this many days will be included. |
4. Read the Chart
The chart displays an area graph with time on the horizontal axis and average lifetime (in months) on the vertical axis.
Each data series represents a group of members, plotted month by month.
Hover over any point on the chart to see the exact value for that month.
The horizontal axis shows months in “MMM yyyy” format (e.g. “Jan 2025”).
The vertical axis shows the average lifetime as a number (shortened for large values, e.g. “12” instead of “12.00”).
5. Use the Legend
The legend sits at the top-right of the chart.
Click a series name in the legend to show or hide it.
This is helpful when multiple series overlap and you want to focus on one.
6. Switch Gyms
The chart automatically updates when you change the selected gym in the global gym selector (usually in the top navigation bar).
Each gym has its own data, so switching gyms will reload the chart.
What Happens Behind the Scenes
You set the date range and filters
|
v
The selected gym is detected from the global gym selector
|
v
Loading spinner appears on the chart
|
v
API call: getMemberLifetime({ fromDate, toDate, membershipTypeIds, minimumLengthOfMembershipInDays })
|
v
Server calculates the average membership lifetime for each member,
then averages across all members, grouped by month
|
v
Memberships converted from one type to another are counted as one continuous period
|
v
Chart data is returned as series with monthly data points
|
v
Loading spinner disappears, area chart renders the results
|
v
(If no data points have a value greater than 0, the chart shows as empty)
Troubleshooting
“The chart is empty and shows no data”
Make sure your date range covers a period when your gym had active members.
Check that the selected gym actually has members with the eligible membership types (contingent, campaign, or personal training).
If you set a minimum membership length, try lowering it or removing it. A very high minimum may filter out all members.
Guest and staff memberships are never included — if your gym only has those, the chart will be empty.
“The chart is stuck on loading”
This usually means the API call is taking a long time, which can happen with large date ranges or many members.
Try selecting a shorter date range to reduce the amount of data.
Check your internet connection — the chart needs to reach the server to load data.
Try refreshing the page. If the problem persists, contact support.
“The numbers seem too low or too high”
Remember that the chart shows the average lifetime across all members. A few members with very short or very long memberships can skew the average.
Use the Minimum Length of Membership filter to exclude trial or very short memberships that might drag the average down.
Check whether the membership types filter is set correctly. You may be looking at a subset of members without realising it.
“The data changed when I switched gyms”
Each gym has its own member data. The chart automatically reloads when you change the gym in the global gym selector.
This is expected behaviour. If you want to compare gyms, note down the values for each gym separately.
“I do not understand what the series in the legend represent”
Each series (line) in the chart represents a grouping of member lifetime data as returned by the server.
The series names come from the data itself. Hover over the legend items to see which line corresponds to which series.
If you are unsure, try filtering by a single membership type to simplify the chart.
“The months on the horizontal axis are hard to read”
The axis shows months in abbreviated format (e.g. “Jan 2025”).
If the date range is very long, labels may overlap. Try narrowing the date range to make the labels clearer.
You can hover over any data point to see the exact month and value in a tooltip.
“I changed the filters but the chart did not update”
The chart updates automatically whenever a filter changes. If it did not update, try the following:
Wait a moment — the loading spinner should appear briefly.
Refresh the page and re-apply your filters.
Make sure you have a gym selected in the global gym selector. Without a selected gym, the chart will not load.
