Back to the build library
Fitness & wellness
Advanced

Attendance-Based Churn Prevention

Score every member on attendance decay, then intervene at the week the pattern breaks instead of the month the card gets canceled.

Industry
Fitness & wellness
Build effort
Advanced
Typical time to launch
4–6 weeks
On this page
The problemWhat gets builtHow it runsAutomations in detailWhat changesBefore you start
Want this built for you?

Bring your stack to a call and we will scope it against how your business actually runs.

Book a call
01

The problem

A gym or studio finds out a member has churned when the card declines or the cancellation email arrives. By then the decision was made weeks earlier. The member did not wake up one morning and decide to quit; they went from four visits a week to two, then to one, then to none, and somewhere in that slide the membership stopped feeling like something they were using and started feeling like something they were paying for. The cancellation is the last event in the story, and it is the only one most operators can see.

The data to see it earlier is already there. Every check-in, class booking and no-show is a timestamped record. The problem is that nobody is reading it as a trend. A front desk sees who walked in today. A monthly report shows total visits. Neither of those tells you that a specific member whose baseline was four sessions a week has done one session in the last fourteen days, which is the single most actionable fact about that member. The information exists and expires unused.

So the retention effort that does happen is badly aimed. Save offers go out at cancellation, when the member has already decided and the only lever left is a figure. Mass re-engagement emails go to everyone, including the members attending five times a week, which trains the whole list to ignore the sender. And the one intervention that genuinely works at scale (a specific, human, timely message from a coach who noticed) does not happen because nobody has a list of who to notice. This build makes that list, keeps it current daily, and routes each name to the right intervention at the right severity.

02

What gets built

Pipeline and stages

A retention pipeline, Member Health, where every active member sits in exactly one stage and the stage is set by the risk engine rather than by a human dragging cards:

  • Onboarding - First 30 Days: no baseline yet, so decay rules do not apply; a separate ramp standard does
  • Healthy: attendance at or above baseline, nothing to do
  • Softening: a measurable dip, first automated touch only
  • At Risk: sustained decay, coach assigned, human touch required
  • Critical: near-zero attendance, owner-level intervention and a direct conversation
  • Save Attempt Active: an offer or plan change is on the table
  • Recovered: attendance back at baseline for two consecutive weeks
  • Cancellation Requested: exit interview and downgrade path
  • Churned: membership ended; reason code required

Calendars

  • Coach Check-In: 15 minutes, per coach, used for At Risk conversations; offered as a link rather than imposed
  • Goal Reset: 30 minutes with a senior coach, the main Critical intervention; this is the appointment the whole build exists to generate
  • Class and Session Booking: the existing class calendars, which are the event source for attendance; these are not new, but their booking and attendance statuses must be writing back to the contact record
  • Cancellation Call: 10 minutes, offered as an alternative to the cancellation form so there is a chance to hear the real reason

Custom fields

The risk engine is built out of these fields. Every one is written by automation on a schedule, not by hand.

  • Baseline Weekly Visits: number; the member's own rolling 8-week average, recalculated weekly, so a two-a-week member is not judged against a five-a-week member
  • Visits Last 7 Days, Visits Last 14 Days, Visits Last 30 Days: numbers, recalculated nightly
  • Attendance Ratio: Visits Last 14 Days divided by twice Baseline Weekly Visits; the single number the whole engine turns on
  • Days Since Last Visit: number, recalculated nightly
  • Risk Score: number 0 to 100, computed nightly from the ratio, the gap, no-show trend, class-booking trend and payment history
  • Risk Band: dropdown: Healthy, Softening, At Risk, Critical; derived from Risk Score and used for routing
  • Risk Band Changed On: date; stops a member oscillating across bands from being messaged twice in a week
  • Previous Risk Band: dropdown; lets a workflow fire on direction of travel rather than position
  • Assigned Coach, Membership Type, Membership Start Date, Contract End Date
  • Favorite Class and Usual Days: derived from booking history; what makes the outreach specific rather than generic
  • Last Human Touch Date and Last Human Touch By: the fields that stop the system nagging someone a coach spoke to yesterday
  • Intervention Count This Quarter: number; a hard cap on how often any member is contacted about attendance
  • Save Offer Made: date, and Churn Reason: dropdown with a free-text companion

Tags

  • member-active, member-onboarding, member-frozen: the eligibility gates; frozen and onboarding members are excluded from decay logic
  • risk-softening, risk-at-risk, risk-critical, risk-recovered
  • touch-suppressed: applied for 14 days after any human conversation or any member request to be left alone
  • save-attempt-active, cancellation-requested, churned, do-not-remarket
  • winback-eligible: applied 60 days after churn where no do-not-remarket flag exists

Forms and surveys

  • Goal Reset Prep: three questions before the Goal Reset appointment: what changed, what would make coming in easier, what the member wants from the next eight weeks
  • Barrier Check: a single-question micro-survey sent at Softening, with four buttons: time, schedule, motivation, something physical. The answer routes the branch. It records the member's own choice; it does not assess anyone.
  • Cancellation Request: reason dropdown, free text, and an offer of freeze or downgrade before submission completes
  • Exit Interview: sent after churn is confirmed, three questions, used to populate Churn Reason accurately rather than guessing

BO's role and guardrails

  • BO sends the Softening touch and handles the reply, because at that band the member mostly needs a booking link and a nudge, not a conversation.
  • BO reads Favorite Class and Usual Days and offers specific upcoming slots rather than a generic link.
  • BO handles freeze and plan-change requests end to end where the business has pre-authorized them, and books the Cancellation Call where it has not.
  • BO does not run the At Risk or Critical conversations. At those bands the system creates a task for the assigned coach with the member's full attendance picture. A coach messaging from a position of having noticed is the intervention; an automated message pretending to be that is worse than nothing.
  • BO never discusses why someone stopped training in health terms. If a member replies that something hurts, is wrong, or that they have been unwell, BO acknowledges, stops the sequence, applies touch-suppressed, and escalates to the coach immediately. It offers no advice, no assessment and no reassurance about any condition.
  • BO never quotes a figure for a save offer, downgrade or plan change. It states what each option includes and routes to a human or to bookings.appbo.io.

Numbers and channels

  • One provisioned local number for member communication, with coach replies flowing through the shared inbox under the business identity so a coach's departure does not take the thread with them
  • SMS as the primary channel for time-sensitive touches, email for the longer check-in and the surveys
  • Web chat and in-app messaging routed to the same inbox
  • A daily internal digest and a weekly owner dashboard, both built on the risk fields rather than on raw visit counts
03

How it runs, step by step

  1. A member establishes a baseline. Priya joins, trains three to four times a week through her first 30 days, and sits in Onboarding - First 30 Days where decay rules are suspended. At day 31 the nightly job writes Baseline Weekly Visits = 3.5 and moves her to Healthy.
  2. The baseline keeps moving. Every Sunday night the baseline is recalculated as her own rolling 8-week average. A member who genuinely settles into twice a week is not treated as declining; the standard follows the member.
  3. Nightly recalculation runs. At 2am the job rewrites Visits Last 7 Days, Visits Last 14 Days, Visits Last 30 Days, Days Since Last Visit, Attendance Ratio and Risk Score for every contact tagged member-active. Risk Band is derived last.
  4. The dip starts. Priya's work changes and she trains once in two weeks. Her Attendance Ratio falls to 0.29 and Risk Score crosses the Softening threshold. Previous Risk Band is set to Healthy, Risk Band to Softening, Risk Band Changed On to today.
  5. The first touch is light and specific. BO sends one SMS naming her usual class and offering the two upcoming sessions on the days she normally trains, plus the one-tap Barrier Check. No mention of risk, no guilt, no offer.
  6. The barrier answer routes the branch. Priya taps schedule. BO replies with the three class times outside her usual slot that have open spaces, and a note that she can switch her standing booking. If she had tapped something physical, the sequence would stop there and route straight to a coach with no further automated messaging.
  7. No recovery, so it escalates. Fourteen days later the ratio is still below threshold and Days Since Last Visit is 16. Risk Band moves to At Risk, the opportunity moves to At Risk, and the system stops messaging her.
  8. A coach gets a task, not a template. Priya's assigned coach gets a task with her name, baseline, last visit, her barrier answer, her favorite class and the last three things she booked. The task says to send a personal message in her own thread. The coach writes it; the system only made sure the coach knew.
  9. Human touch is recorded. The coach messages her. Last Human Touch Date and Last Human Touch By are stamped, touch-suppressed is applied for 14 days, and no automated attendance message can reach her in that window regardless of what the score does.
  10. If it keeps sliding, the owner steps in. Four weeks with no visit pushes Risk Band to Critical. The opportunity moves to Critical, and the intervention is a direct offer of a Goal Reset appointment with the Goal Reset Prep form attached. This is the point where a plan change, a freeze or a different membership shape is genuinely on the table.
  11. Recovery is detected and the file is closed. Priya books the goal reset, moves to two mornings a week, and holds it. Once Visits Last 7 Days meets or exceeds the recalculated baseline for two consecutive weeks, Risk Band returns to Healthy, the opportunity moves to Recovered, all risk tags clear, and the coach gets a short note so they can acknowledge it in person.
  12. If a cancellation comes anyway, it is routed not just processed. A cancellation request opens the freeze and downgrade options first, offers the Cancellation Call, and moves the opportunity to Cancellation Requested with a task for the owner. Nothing is canceled silently.
  13. Churn is coded honestly. On confirmed churn, Churn Reason is set from the Exit Interview rather than guessed, churned is applied, and the member exits all sequences. winback-eligible is applied at day 60 unless a do-not-remarket flag exists.
  14. The daily digest is the operating rhythm. Every morning each coach gets their own list: names that changed band overnight, names needing a touch today, names recovered. The owner gets a one-page weekly view: band distribution, movement between bands, interventions made, recovery rate and churn with reasons.
04

Automations in detail

1. Nightly Attendance Recalculation and Risk Scoring

Trigger: scheduled, 2:00am daily, iterating every contact tagged member-active.

Conditions: skip contacts tagged member-frozen or member-onboarding, and skip any contact whose Membership Start Date is less than 30 days ago.

  • Action 1: count attendance events in the trailing 7, 14 and 30 days and write Visits Last 7 Days, Visits Last 14 Days, Visits Last 30 Days.
  • Action 2: write Days Since Last Visit from the most recent attended event.
  • Action 3: compute Attendance Ratio = Visits Last 14 Days / (2 × Baseline Weekly Visits). Where the baseline is below 1, floor the divisor at 2 so a once-a-two weeks member does not produce a meaningless ratio.
  • Action 4: compute Risk Score 0-100 from weighted components. The ratio carries the most weight, then Days Since Last Visit relative to the member's normal gap, then no-shows in the last 30 days, then a declining class-booking trend, then any failed payment in the last 60 days.
  • Action 5, derive the band: ratio at or above 0.8 sets Healthy; 0.5 to 0.79 sets Softening; 0.2 to 0.49, or Days Since Last Visit over 14, sets At Risk; below 0.2, or Days Since Last Visit over 28, sets Critical. Thresholds are configurable and should be tuned against the first two weeks of silent running.
  • Action 6, on change only: if the derived band differs from Risk Band, copy the old value into Previous Risk Band, write the new Risk Band, set Risk Band Changed On = today, move the Member Health opportunity to the matching stage, and swap the risk- tags.
  • Action 7: enqueue the band-change event for the relevant touch workflow. Nothing in this workflow sends a message. It runs at 2am and must never be able to text anyone.

Exit: completes per contact each night. A contact that errors is logged to an internal exceptions list for the owner rather than skipped silently.

2. Weekly Baseline Recalculation and Onboarding Graduation

Trigger: scheduled, Sunday 11:00pm.

  • Action 1: for every member-active contact with at least 8 weeks of history, write Baseline Weekly Visits = mean weekly attended visits over the trailing 8 weeks, excluding any full week where the contact was tagged member-frozen.
  • Action 2: recompute Favorite Class as the most-booked class type in the trailing 12 weeks, and Usual Days as the two most frequent weekdays. These two fields are what make every message in this build specific.
  • Action 3, graduation branch: where Membership Start Date is exactly 30 days ago, remove member-onboarding, set the initial Baseline Weekly Visits from the first 30 days, and move the opportunity from Onboarding - First 30 Days to Healthy.
  • Action 4, ramp check for onboarding members: where member-onboarding is present and Visits Last 14 Days is fewer than 2, create a task for the assigned coach: "{{first_name}} has been in {{days_since_join}} days and trained {{visits_last_14_days}} times. First month sets the habit. Reach out personally today." No automated member-facing message; new members get a human.
  • Action 5: reset Intervention Count This Quarter to 0 on the first Sunday of each quarter.

Exit: completes weekly.

3. Softening Touch and Barrier Check

Trigger: Risk Band changed to Softening with Previous Risk Band = Healthy.

Conditions: suppress if touch-suppressed is present, if Last Human Touch Date is inside 14 days, if Intervention Count This Quarter is at the cap, or if cancellation-requested or save-attempt-active is present.

  • Action 1, immediate: apply risk-softening, increment Intervention Count This Quarter.
  • Action 2, wait until the next permitted send window: SMS from BO. "Morning {{first_name}}, BO here from {{business_name}}. Noticed we haven't seen you in {{favorite_class}} for a bit. There's a spot {{usual_day}} at {{next_class_time}} if you want it: {{booking_link}}"
  • Action 3, wait 2 days: if no booking and no reply, send the one-tap Barrier Check. "Quick one, {{first_name}}, what's getting in the way at the moment? Tap one and I'll see what I can do. {{barrier_check_link}}"
  • Action 4, branch on the answer. Time: "Totally fair. We run {{short_format_name}} sessions that are done in 30. Here's what's on this week: {{short_session_link}}" Schedule: "Let's find a slot that actually works. These three have space outside your usual time: {{alternate_times}}. Want me to move your standing booking?" Motivation: offer a Coach Check-In with the assigned coach: "Happens to everyone. {{assigned_coach}} has 15 minutes this week to reset the plan with you: {{checkin_link}}" Something physical: send one acknowledgement only: "Thanks for telling me, {{first_name}}. I'll let {{assigned_coach}} know and they'll come back to you directly." Then apply touch-suppressed, create an urgent coach task, and stop all automated messaging for this contact. BO offers no guidance, no reassurance and no suggestions of any kind on that branch.
  • Action 5, wait 5 days: if still no attendance and no reply, exit quietly. Do not send a third message at this band. The next step is the band escalation, which is a human.

Exit: any attendance event, any booking, band change in either direction, touch-suppressed applied, or STOP received.

4. At Risk Escalation and Coach Human Touch

Trigger: Risk Band changed to At Risk.

Conditions: none that block the internal task. The coach is always told. The member-facing message is suppressed by the same guards as workflow 3.

  • Action 1, immediate: apply risk-at-risk, remove risk-softening, move the opportunity to At Risk.
  • Action 2, immediate: create a task for Assigned Coach, due today, with the full picture on the task body: baseline, visits in the last 7 and 14 days, Days Since Last Visit, Favorite Class, Usual Days, the Barrier Check answer if one exists, and the date and author of the last human touch. The task instruction is explicit: "Send a personal message in {{first_name}}'s own thread. Do not use a template."
  • Action 3, immediate: post the name to the coach's channel in the daily digest and to the manager's At Risk list.
  • Action 4, wait 48 hours: if Last Human Touch Date has not been updated, escalate the task to the manager and re-notify. This is the accountability loop; without it the build degrades into a dashboard nobody reads.
  • Action 5, wait 5 days: if there has still been no human touch and no attendance, send one BO message as a backstop. "{{first_name}}, it's been a few weeks. No pressure at all, but if something's changed and the membership isn't working as it stands, tell me and I'll get {{assigned_coach}} to call you." Increment Intervention Count This Quarter.
  • Action 6, on any human touch: stamp Last Human Touch Date and Last Human Touch By, apply touch-suppressed for 14 days, and close the task.

Exit: attendance resumes, band changes, Goal Reset or Coach Check-In booked, or the member moves to Cancellation Requested.

5. Critical Intervention and Goal Reset

Trigger: Risk Band changed to Critical, or Days Since Last Visit reaches 28.

  • Action 1, immediate: apply risk-critical, move the opportunity to Critical, notify the owner directly rather than only the coach.
  • Action 2, immediate: create an owner task: "{{first_name}}, {{days_since_last_visit}} days, member since {{membership_start_date}}, {{membership_type}}. Decide the approach before any message goes out."
  • Action 3, wait 1 day, then send one message with a real option in it: "{{first_name}}, it's {{owner_name}} at {{business_name}}. You've not been in for a while and I'd rather ask than assume. If the plan you're on isn't fitting your life right now, there are other shapes it can take, including pausing it. Can we put 30 minutes in? {{goal_reset_link}}" No figure is quoted in this message or any other; options are described, and the conversation prices them.
  • Action 4, on booking: send the Goal Reset Prep form, move to Save Attempt Active, apply save-attempt-active, write Save Offer Made = today, and give the senior coach the member's full history on the appointment record.
  • Action 5, wait 4 days with no booking: email from the owner, same substance, longer form, with the freeze and downgrade options named as options and a direct line to reply to.
  • Action 6, wait 10 days with no response: stop member-facing messaging entirely. Apply nothing further, leave the opportunity in Critical, and create a single quarterly review task. A member who has ignored an owner-level approach is not helped by a fourth message.

Exit: goal reset attended, plan changed, freeze applied, cancellation requested, or messaging stopped by the 10-day rule.

6. Recovery Detection and Closure

Trigger: nightly, after workflow 1, on contacts carrying any risk- tag.

Conditions: Visits Last 7 Days is greater than or equal to Baseline Weekly Visits for two consecutive weekly evaluations.

  • Action 1: set Risk Band = Healthy, remove risk-softening, risk-at-risk, risk-critical, save-attempt-active and touch-suppressed; apply risk-recovered for 30 days for reporting.
  • Action 2: move the opportunity to Recovered and record which band it entered from, so recovery rate can be reported by entry band.
  • Action 3: notify the assigned coach. "{{first_name}} is back to {{visits_last_7_days}} a week. Worth saying something next time you see them." The acknowledgement comes from a person in the room, not from an automated congratulations message.
  • Action 4, wait 14 days: one short BO message only where the recovery followed a Critical intervention. "Good to see you back in, {{first_name}}. Anything you need from us to keep it going?"
  • Action 5, wait 30 days: remove risk-recovered, close the opportunity to Healthy, and clear Save Offer Made so the next cycle starts clean.

Exit: band falls again (which re-enters at the appropriate workflow), or 30 days elapse.

7. Cancellation Request Interception

Trigger: Cancellation Request form submitted, inbound message matching cancel intent, or a subscription-canceled event from the payment processor.

  • Action 1, immediate: apply cancellation-requested, move the opportunity to Cancellation Requested, and stop every other sequence on the contact. A member who has asked to leave must not receive a scheduled retention nudge the next morning.
  • Action 2, immediate: acknowledge properly and without friction. "Got it, {{first_name}}, I've logged your request and it's with {{owner_name}}. Before it's processed, two things you might not know are available: you can pause instead of canceling, or move to a lighter plan. If either is worth a conversation: {{cancellation_call_link}}. If not, just reply cancel and we'll finish it, no hard feelings."
  • Action 3, immediate: owner task with the member's attendance history and Churn Reason from the form, due same day.
  • Action 4, branch on reason. Cost: route to the owner with downgrade options; BO names them without figures. Moving away: no save attempt, process cleanly, offer a referral or transfer where the business has reciprocal arrangements. Schedule or time: offer the freeze and the off-peak plan. Not getting results: offer a Goal Reset with a senior coach. Health or injury: acknowledge, process without resistance, and make no save attempt at all: route straight to the owner.
  • Action 5, wait 2 days: if the member replied cancel or did not engage, process the cancellation, confirm it in writing with the effective date, and send the Exit Interview.
  • Action 6, on confirmed churn: apply churned, remove member-active, move to Churned, write Churn Reason from the exit interview, and remove the contact from every list except the one that workflow 8 governs.

Exit: cancellation processed, save accepted (returns to Save Attempt Active), or freeze applied.

8. Suppression Guard, Frequency Cap and Win-Back Gate

This is the workflow that keeps the other seven from becoming harassment. It is built as a set of always-on rules evaluated before any send.

Trigger: any outbound send attempt from workflows 3, 4, 5 or 6; plus a scheduled daily pass.

  • Rule 1: block the send if touch-suppressed is present. The tag is applied on any human touch, any inbound reply, any mention of a physical or health reason, and any member request to be left alone; it expires after 14 days.
  • Rule 2: block if Intervention Count This Quarter is at or above the configured cap. Instead of sending, create a task so a human decides whether this member needs a conversation.
  • Rule 3: block if Last Human Touch Date is inside 7 days, whatever the band. A coach's message takes precedence over the system's.
  • Rule 4: block if the send would land inside quiet hours, and queue it to the next permitted window in the member's own timezone rather than dropping it.
  • Rule 5: block if cancellation-requested, churned or do-not-remarket is present.
  • Rule 6, daily pass: expire touch-suppressed tags older than 14 days, and risk-recovered tags older than 30 days.
  • Rule 7, win-back gate: 60 days after churned, if Churn Reason is not health, moved away or complaint, and do-not-remarket is absent, apply winback-eligible and send one message. "{{first_name}}, {{owner_name}} here. Two months since you left us. No sales pitch, just checking how training's going. If you ever want to come back, you know where we are." Then wait 45 days, send one final email with whatever has changed at the business, and remove the contact from active sequences permanently.

Exit: these rules are permanently resident; the win-back branch exits after its two sends, on any reply, or on STOP.

05

What changes

Retention stops being a monthly post-mortem and becomes a daily list of names. The business can answer a question it previously could not: who is quietly on their way out right now. And because the baseline is each member's own rolling average, the answer is not just the people who train least. It is the people who are training materially less than they themselves used to, which is a completely different and far more useful list.

Intervention moves earlier and gets cheaper. At Softening the fix is usually a class time, a booking link, or the knowledge that Thursdays no longer work. That costs nothing. By cancellation the only remaining lever is a concession. Shifting the same conversation four to six weeks earlier changes both the odds and the cost of saving the member.

Coaches stop guessing who to care about. Instead of a vague instruction to build relationships, each coach gets three to five names a day with the context that makes a message land. The member's class, their usual days, what they said the barrier was. And the suppression fields mean the system never undercuts a coach by messaging someone they just spoke to.

Churn reasons become real data. Coded exit interviews replace the owner's impression, so when the pattern turns out to be the 6am class disappearing or a particular coach's slot changing, that becomes visible rather than anecdotal.

What to measure

  • Band distribution and weekly movement: how many members in each band, and the net flow between bands week over week. Flow matters more than the standing count.
  • Recovery rate by entry band: the share of members who return to Healthy, split by whether they were caught at Softening, At Risk or Critical. This is the number that proves early detection is worth building.
  • Median days from band change to first human touch: the operational discipline metric; if it drifts past two days the daily digest is not being worked
  • Intervention-to-booking rate: touches that result in a booked class, check-in or goal reset
  • Churn rate by last band held: if members are churning straight out of Healthy, the scoring thresholds are wrong and need retuning
  • Attendance ratio distribution for the whole active base, watched monthly for a shift in the middle of the curve, which is the earliest visible sign of a schedule or staffing problem
  • Churn reasons by code, with the free-text read quarterly rather than only counted
  • Message fatigue: opt-out rate and reply rate on retention sequences specifically, and the share of members hitting the Intervention Count This Quarter cap
  • Save offer dependence: what share of recoveries required a concession versus a schedule fix; a falling share means the early touches are doing the work
06

Before you start

Prerequisites

  • An attendance event source that is actually reliable. This is the whole build. Check-ins, class bookings and attendance statuses must arrive on the contact record consistently, with timestamps, every day. If half the member base trains without checking in, the engine will flag healthy members as at risk and destroy trust in the list within two weeks. Fix the data capture before building the scoring.
  • At least eight to twelve weeks of attendance history before go-live, so baselines are real rather than guesses. Launching the scoring on two weeks of data produces noise.
  • Defined thresholds signed off by the owner: what ratio and what gap constitute Softening, At Risk and Critical. Start deliberately conservative, run the engine silently for two weeks, inspect the lists by hand, then turn the messaging on.
  • Every active member mapped to an Assigned Coach. Unassigned members produce tasks nobody owns.
  • A named person who works the daily digest. This build generates a short, specific list every morning and its entire value depends on somebody acting on it.
  • Agreed rules for freeze, downgrade and save offers, so BO and the coaches know what they may offer without asking.

Integrations

  • Access control or check-in system: the door reader, class kiosk or member app, pushing check-in events in near real time. Where no native connector exists, use Zapier or Make to relay events, or a scheduled file import as a last resort, accepting that the engine then runs a day behind.
  • Stripe for subscription state, so a failed payment contributes to the risk score and a cancellation is detected immediately rather than at the next billing cycle
  • Google Calendar for coach availability behind the check-in and goal-reset calendars
  • Slack for the daily coach digest, where the team already lives there; otherwise email and in-platform tasks
  • Reporting warehouse export where the owner wants to trend band distribution beyond the platform's own dashboards

Number provisioning and messaging compliance

  • Provision the member-facing number and complete A2P 10DLC brand and campaign registration before switching on any automated SMS. Retention messaging is marketing in the eyes of most carriers and regulators even when it feels like customer care, so register it as such and expect the review to take days.
  • Collect SMS consent at membership signup with its own explicit checkbox, and re-paper consent for existing members before sending them retention sequences. An existing membership is not consent to be texted.
  • Honor STOP, UNSUBSCRIBE, CANCEL, END and QUIT, and make a stop keyword apply to the retention sequences specifically rather than only to a global marketing flag.
  • Enforce quiet hours of roughly 9pm to 8am in the member's own timezone on every workflow in this build. A nightly recalculation at 2am must never be able to trigger an immediate send.
  • Cap frequency hard. Intervention Count This Quarter exists so that a member whose score oscillates cannot be messaged weekly. Set the cap, and have the system escalate to a human instead of sending once the cap is reached.

Data protection

  • This build creates a behavioral profile of each member: attendance patterns, inferred habits, a risk score. Members should be able to understand from the privacy notice that attendance data is used to support engagement. Be straightforward about it rather than treating the score as a secret.
  • Do not let the Barrier Check or any other field become a record of health information. The something physical option exists only to stop automated messaging and route to a human; configure it to capture no detail and store no description.
  • Restrict Risk Score and Risk Band visibility to coaches and management through role permissions, and never surface a score to the member.
  • Set retention periods for attendance history and delete scoring fields on churned contacts after the agreed window rather than keeping profiles indefinitely.
  • Depending on jurisdiction, consumer-protection, automated-decision and privacy rules may bear on profiling members and on cancellation handling. Confirm the consent language, the retention schedule and the cancellation flow with the client's own counsel. This guide describes the mechanism and is not legal advice.

Build it with us.

Every build on this page is something we configure, test and hand over with the SOPs your team needs to run it.

Book a call