Predicting churn from attendance takes a few fields, a nightly job and a routing rule. The method, the thresholds and the logic that keeps it humane.
Every check-in, class booking and no-show in your business is a timestamped record. Somewhere in that pile is the fact that a member whose habit was four sessions a week has trained once in the last two weeks. That is the most actionable thing you could know about them, and in most membership businesses nobody reads it. The data expires unused, and the first time anyone looks is when the card declines or the cancellation arrives.
Churn prediction from usage data is not a machine-learning project. It is a handful of fields, a nightly calculation and a routing rule. The hard parts are getting attendance onto the member record reliably, choosing the right denominator, and building the suppression logic that stops it becoming harassment.
Most operators already have an attendance report: visits per week, visits per member, maybe a leaderboard. It is almost useless for predicting churn, for one reason. It ranks members against each other.
Rank your base by visits and the bottom of the list is your twice-a-week members, who have been twice a week for two years and are perfectly happy. The member who has gone from five sessions to two sits in the middle of the table, invisible, and is the one actually leaving. Absolute frequency describes a preference. Change against a member's own history is a signal.
So the first design decision is the denominator. You are not asking whether a member trains a lot. You are asking whether they train materially less than they themselves used to. Those two questions produce different lists, and only the second is worth working.
You can build a usable risk engine around a single ratio:
One guard is needed immediately: where the baseline is below one visit a week, floor the divisor, or a once-a-two weeks member will produce a wildly unstable ratio that flags them every other week.
From there you add the components that catch things the ratio alone misses:
Weight those into a single score out of a hundred, with the ratio carrying the most weight, and derive a band from the score: healthy, softening, at risk, critical. The band is what routes the member. The score is what you tune.
This is where most attempts die, so the prerequisites are worth stating plainly.
The attendance-based churn prevention build guide sets out the pipeline, the field list and the eight workflows in full. The sections below are the method, so you can decide whether it fits your data before you look at the spec.
A member in their first thirty days has no baseline, so decay rules cannot apply. Put them in their own stage with a ramp check rather than a decay check. If a new member has trained fewer than twice in their first two weeks, that is a coach's phone call, not an automated nudge.
One scheduled job in the small hours rewrites visits over seven, fourteen and thirty days, days since last visit, the attendance ratio and the score, then derives the band last. Two rules matter. First, the job must be structurally incapable of sending a message. A recalculation at two in the morning that can text someone is an accident waiting to happen. Second, act on change only: when the derived band differs from the stored one, copy the old value into a previous-band field, stamp the change date, move the stage, swap the tags, and raise an event for the touch workflow.
Baselines should drift with the member, slowly. Once a week is right. A member who genuinely settles from four sessions to two will, over a couple of months, be measured against two, which is correct. Recalculating nightly makes the standard chase the decline and hides the pattern you are trying to catch.
In the same weekly job, compute each member's favorite class from their booking history and the two weekdays they most often train. These two fields are the difference between "we have not seen you in a while" and "there is a spot in your usual Thursday class at six". The second is a message from someone who knows them. The first is a mailshot.
Keep a previous-band field and a band-changed date. Direction of travel lets workflows fire on a member who has just dropped from healthy rather than on everyone currently in a band, which is what stops a member whose score oscillates around a threshold from being messaged weekly.
The band should decide who responds, not how loud the message is.
This is the part that determines whether members experience the system as attentive or intrusive, and it should be built as always-on rules evaluated before any send:
Risk engines that only escalate end up with everyone flagged. Define recovery explicitly. Visits in the last seven days at or above the recalculated baseline for two consecutive weekly evaluations, then clear the tags, move the member back, and record which band they recovered from so recovery rate can be reported by entry band. Tell the coach, so the acknowledgement comes from a person rather than an automated message.
Every other mistake is recoverable. This one poisons the list. If check-ins are patchy, the engine's first output is a set of confident false positives, and the team will correctly conclude the list cannot be trusted.
Run it silently for two weeks. Score everyone, send nothing, print the lists and read them against what your coaches already believe about those members. Tune the thresholds against that comparison, then enable sending.
If a member says something hurts or they have been unwell, the correct automated behavior is one acknowledgement, suppression, and an immediate handoff to a coach. No advice, no reassurance, no suggestions. The barrier question should capture the fact that there is a physical reason and store no description. It exists to stop the messaging, not to build a health record.
If an at-risk task sits uncompleted for two days, it must escalate to a manager. Without that loop the build degrades into a dashboard nobody reads.
The score is an internal routing device. Members should be able to understand from your privacy notice that attendance data is used to support engagement (be straightforward about that rather than treating it as a secret) but a number should never be surfaced to them, and access to it belongs to coaches and management through role permissions. Automated profiling, consent wording and retention periods are governed differently in different places, so confirm yours with your own counsel before launch.
Churn scoring is the back half of a retention system; the front half is trial conversion and the first thirty days, which the membership onboarding and retention guide covers. To work out whether your check-in data can feed an engine like this, book a call and we will look at the event source first: that is the part that decides everything else.
Eight to twelve weeks is a sensible minimum, because the baseline is a rolling eight-week average and you want one full cycle of it before the engine routes anybody. Start collecting and scoring earlier if you like, but keep the messaging off until baselines stop moving significantly week to week.
Yes, if something else records attendance reliably. Class bookings with attendance marked, a coach completing a roster, or an app check-in all work. What does not work is inferring attendance from bookings alone: a booked-and-missed session is a risk signal, and counting it as a visit inverts your own data.
Rarely, and with a hard cap enforced centrally rather than hoping stop conditions catch it. A quarterly intervention limit per member, a block on messaging anyone a coach spoke to in the last week, and two weeks of suppression after any human conversation keeps the volume somewhere members experience as attentive. When the cap is reached, raise a task for a person instead of sending.
The daily coach list. Three to five names a morning, each with the member's baseline, their recent attendance, their usual class and days, and the date of their last human contact. No member-facing automation at all. Most of the value in attendance-based churn prevention comes from someone knowing who to notice, and that version can be running in days rather than weeks.
Every article on this blog sits on top of a build guide in the AppBO library. It is the same system, written out end to end: the problem it solves, the architecture behind it, every workflow with its triggers and conditions, and what measurably changes once it is live. If this piece made the case, the build guide shows you the wiring.
Open the build libraryBring us how your business actually runs today and we will tell you which system to put in first, what it will take, and what it should change.
Book a call