Automation: Inactive Member → Automatic Win-Back Email
What This Builds
Instead of manually checking who hasn't visited in 21 days and writing individual outreach emails, this automation runs silently in the background: when a member hasn't checked in for 21 days, they automatically receive a win-back email sequence. You set it up once and it runs every week without any involvement from you — reclaiming 30–45 minutes per week and recovering members before they formally cancel.
Prerequisites
- Comfortable with Mailchimp email campaigns (see Level 3 guide)
- Zapier account (zapier.com — free tier works for this; paid tier gives more runs/month)
- Mailchimp account with your member list set up
- Your gym software must support data export or webhooks — Mindbody, PushPress, and ClubReady all do
- Account/subscription needed: Zapier (free tier: 100 tasks/month; $20/month for 750 tasks)
- Cost: $0–$20/month for Zapier + Mailchimp free tier
The Concept
Think of Zapier as a relay race baton. Your gym software tracks check-ins. When 21 days pass without a check-in, Zapier detects that condition, grabs the member's information, and passes it to Mailchimp — which automatically sends your pre-written win-back email. The baton passes automatically every day without you touching it.
The hard part isn't technical — it's building the right trigger. Most gym software doesn't natively push "member inactive" events to Zapier. You'll use a workaround: a scheduled Google Sheets check that acts as the trigger.
Build It Step by Step
Part 1: Set Up the Data Source (Google Sheets as the bridge)
Step 1: Export your member visit data weekly Set a recurring calendar reminder (Monday morning, 8am) to export a member activity report from your gym software. Export: member name, email, last check-in date. Save it as a CSV.
Step 2: Create a "Retention Tracking" Google Sheet Create a new Google Sheet with columns:
- Column A: Member Email
- Column B: Member First Name
- Column C: Last Check-In Date
- Column D: Days Since Last Visit (formula:
=TODAY()-C2) - Column E: Status (formula:
=IF(D2>=21,"At Risk","Active"))
Each Monday, paste your exported data into this sheet, replacing the old data.
Step 3: Add a "trigger" column Add Column F: "Trigger Sent" — leave blank for new at-risk members. This prevents the system from emailing the same person every week.
Part 2: Build the Zapier Automation
Step 4: Create a new Zap Go to zapier.com → click "Create" → "Zap."
Step 5: Set the Trigger Search for "Google Sheets" as your trigger app.
- Trigger event: "New or Updated Row in Spreadsheet"
- Connect your Google account and select your Retention Tracking sheet
- Set it to watch for rows where Column E = "At Risk" AND Column F is blank (empty = not yet emailed)
What you should see: Zapier shows a sample row from your sheet to confirm it's connected.
Step 6: Add a Filter Add a "Filter" step between the trigger and the action:
- Only continue if: Column F (Trigger Sent) = blank/empty
This ensures you don't email the same person twice.
Step 7: Set the Action — Add to Mailchimp Search for "Mailchimp" as your action app.
- Action event: "Add/Update Subscriber"
- Connect your Mailchimp account and select your member audience
- Map: Email Address → Column A (email), First Name → Column B
Add a tag: "At Risk - [Week]" — this puts the member in a specific Mailchimp segment.
Step 8: Trigger the email sequence in Mailchimp In Mailchimp, create a simple automation triggered by the tag "At Risk":
- Email 1 (immediately): Your win-back email (see Level 1 win-back prompt guide)
- Optional Email 2 (5 days later): A softer follow-up with a small offer
Step 9: Mark the row as "Triggered" in Google Sheets Back in Zapier, add a second action:
- App: Google Sheets
- Action: Update Row
- Set Column F (Trigger Sent) = "Yes" + today's date
This prevents re-triggering.
Part 3: Test and Refine
Step 10: Test with a real example Add a row to your Google Sheet with your own email address and a last check-in date 22 days ago. Leave Column F blank. Run the Zap manually (Zapier has a "Run Zap" test button). Verify:
- You receive the win-back email in your inbox
- The row in Google Sheets updates to show "Triggered"
What good output looks like: You receive the email within 5 minutes. It addresses you by first name and mentions your gym by name. The Google Sheet row shows the trigger date in Column F.
Common adjustments:
- If emails send to the wrong people: check your "At Risk" filter formula in the sheet
- If emails look generic: update your Mailchimp email template with your gym's specific offer
- If the Zap triggers too frequently: check that the Column F "Trigger Sent" update is working correctly
Real Example: Weekly Retention Routine
Setup: You've built this automation. It's been running for 3 weeks.
Monday morning, 8am:
- You export last week's check-in data from PushPress (3 minutes)
- You paste it into your Google Sheet (1 minute)
- Zapier automatically identifies 7 new "At Risk" members — those who went 21+ days without a visit
- Mailchimp automatically sends 7 win-back emails over the next hour
- You go handle your opening checklist
Wednesday: 2 of those 7 members reply: "Oh thanks for reaching out! I've been busy but I'll be in this week." One books a PT session through the email link.
Time saved: 45 minutes of manual report-pulling and individual email-writing — every week. Members recovered (estimated): 1–2 per week at a 15–20% response rate on your at-risk list. Revenue retained (at $30/month average): $30–$60/month per recovered member, ongoing.
What to Do When It Breaks
- "Zapier isn't triggering" → Check that your Google Sheet formula in Column E is returning "At Risk" exactly (case sensitive). Open the Zapier task history to see what's happening.
- "Members are getting emailed multiple times" → Check that the Column F update step is actually writing "Triggered" to the correct row. Test manually with a dummy row.
- "Emails look wrong" → Log into Mailchimp and preview the email template directly. The problem is in Mailchimp, not Zapier.
- "I can't find the Mindbody/PushPress export" → Go to your gym software's Reports section and search for "Member Activity" or "Last Visit." Every major platform has this report — the name just varies.
Variations
- Simpler version: Skip Zapier entirely. Just use your Mindbody "Clients at Risk" report (Level 2 guide) + manually send a Mailchimp campaign to the exported list once a week. Less automated but still 80% of the benefit.
- Extended version: Add a third email at Day 30 with a more direct offer: "Your membership renews in [X] days. Here's a special offer to keep your streak going." This targets members who haven't responded to the first two emails.
What to Do Next
- This week: Build the Google Sheet with the formulas. Export one real week of data and verify the "At Risk" column works correctly.
- This month: Build the Zapier automation, test it, and let it run for 30 days. At the end of the month, check: how many members were tagged at-risk? How many responded to the emails? What's your recovery rate?
- Advanced: Once this is working, build a second automation: new member (joined 90 days ago, no PT session booked) → automated PT upsell email sequence.
Advanced guide for Gym Operations Manager professionals. Zapier pricing and workflow logic may change — check zapier.com for current documentation.