Membership renewal reminders
When to use it
Section titled “When to use it”- Your members pay for a month, a quarter or a year at a time, and many forget to renew.
- You already track expiry dates in a spreadsheet, or you record new members on a form.
- You would rather call a lapsed member than lose them quietly.
Where the data comes from
Section titled “Where the data comes from”| How | What |
|---|---|
| A Google Sheet or Excel file, synced | Your members sheet in Google Sheets or Excel, synced as People every hour: phone, first name, expiry date and a status column (active, expired or frozen). |
| A form your staff fill in | Or the New member form from the Trial class to member playbook, which saves the same expiry date and status. |
What it sets up
Section titled “What it sets up”| Kind | Name | What it does | Lands |
|---|---|---|---|
| Team | Front desk | Calls members who haven't renewed. Can be one person. | Empty |
| Team | Managers | Gets the monthly summary. | Empty |
| Segment | Membership ending soon | Membership ends within the first-reminder window. | Ready |
| Segment | Membership ends today | Membership ends today. | Ready |
| Segment | Membership just lapsed | Membership ended between 1 and 14 days ago. | Ready |
| Segment | Renewals due in the next 30 days | Membership ends in the next 30 days (for the monthly summary). | Ready |
| Segment | Lapsed in the last 30 days | Membership ended in the last 30 days (for the summary and the call task). | Ready |
| Template | Membership ending soon (SMS) | Reminder a week before the membership ends. | Ready |
| Template | Membership ending soon (WhatsApp) | Reminder before the end date on WhatsApp (needs Meta approval). | Ready |
| Template | Membership ends today (SMS) | Reminder on the day the membership ends. | Ready |
| Template | Membership ends today (WhatsApp) | Day-of reminder on WhatsApp (needs Meta approval). | Ready |
| Template | Membership ended (SMS) | Kind message after the membership has ended. | Ready |
| Template | Membership ended (WhatsApp) | Message after the membership has ended, on WhatsApp (needs Meta approval). | Ready |
| Follow-up | Renewal reminder 1: ending soon | Daily run over "ending soon": one reminder per membership. | Off |
| Follow-up | Renewal reminder 2: ends today | Daily run over "ends today": one reminder. | Off |
| Follow-up | Renewal reminder 3: lapsed | Daily run over "just lapsed": a message, then a front-desk call if they still haven't renewed. | Off |
| Report | Monthly: renewals due and lapsed members | Renewals due in the next 30 days and members who lapsed in the last 30, sent to the managers each month. | Off |
The questions it asks
Section titled “The questions it asks”| # | Question | Default | Fills in |
|---|---|---|---|
| 1 | What should messages call your gym or studio? | none, must answer | org_name |
| 2 | Which team calls members who haven't renewed? (can be one person) | Front desk | front_desk_team |
| 3 | Where can members renew online? (a payment or booking link; leave empty to ask them to call or visit) | empty: skipped | renew_url |
| 4 | Should reminders go by WhatsApp instead of SMS? Needs a connected WhatsApp Business number and Meta approval for three templates. | No | use_whatsapp |
| 5 | How long before the membership ends should the first reminder go? | 7d | remind_before |
Other settings
Section titled “Other settings”These have defaults. Change any that don’t fit.
| Setting | Default | Key |
|---|---|---|
| Number members call to renew | ‹workspace phone› | contact_phone |
| Trait that holds the expiry date | membership_expires_at | expires_trait |
| Trait that says active, expired or frozen | membership_status | status_trait |
| Team that gets the monthly summary | Managers | manager_team |
| Daily send time | 09:00 | send_time |
| When the monthly summary arrives | 0 8 1 * * | monthly_report_cron |
| Greeting when a first name is missing | there | greeting_fallback |
| Time zone for the daily run | ‹workspace timezone› | timezone |
Timings
Section titled “Timings”- Runs every day at 09:00 in ‹workspace timezone›.
- A reminder when the membership ends within 7d, another on the day it ends, and a message in the 14 days after it ended. Each reminder reaches a member once per membership.
- Two days after the lapsed message, if the member still hasn't renewed, a call task for Front desk, due in 48 hours.
- A summary on the 1st of each month.
Channels
Section titled “Channels”| Channel | Needed for | Before it can send |
|---|---|---|
| sms | The three renewal messages | An SMS provider, or Origamy managed SMS after business verification (KYC). |
| The same three messages, if you switch WhatsApp on | A connected WhatsApp Business number, and the three templates approved by Meta. |
What you need to do
Section titled “What you need to do”- Keep each member's expiry date in the membership_expires_at column as a date (like 2026-12-01) and update it when they renew: a future date is what stops the reminders. Fill membership_status for every row (active, expired or frozen). Set a member to frozen to pause their reminders.
- Add the people who make calls to the Front desk team (it can be one person), and managers to Managers.
- Connect an SMS provider or finish business verification. If you chose WhatsApp, connect your WhatsApp Business number and submit the three templates for Meta approval first.
- Check the five segment sizes against your sheet, then switch the three follow-ups on.
- Keep it friendly: don't mention fees or arrears in the messages, and follow your local consumer rules.
- Most renewals fall through because nobody asked, not because members left. Keep the sheet current on the day each payment arrives, whether by transfer, POS or cash, and the reminders look after themselves. A member who renewed but whose date wasn’t updated will get a reminder, so update the date first.
- If your members pay yearly or in advance, move the first reminder out to 14 days (change the first-reminder setting). For monthly members, 7 days is plenty. If you run several plans, add a plan column and copy the segments per plan.
- Freeze status is for members who paused for travel or injury. Set it to frozen and they stop getting messages, then set it back to active with a new date when they return.
- Call, don’t chase. The lapsed message is gentle on purpose, and the front-desk call two days later is where most lost members come back. Note why people leave on each call. The summary shows how many left, and only the calls tell you why.
This playbook is synthesized: no customer has run it with us yet. If you build it, tell us what you changed, and we’ll replace it with the real version.
Copilot eval
Section titled “Copilot eval”The request used to test the copilot on this playbook (a live eval):
We're a gym and keep our members in a Google Sheet with their phone, expiry date and whether they're active, expired or frozen. Text members a week before their membership ends and again on the day. If it ended in the last two weeks, text them again, and if they still haven't renewed two days later, give the front desk a task to call. Skip frozen members. Send our managers a monthly summary of renewals due and members lost.
It passes when every piece is a valid draft and everything lands off, with at least: segment, workflow, message_template, report. It must never use: discount.
