Automation: Inactive Member → Automatic Win-Back Email

Tools:Zapier + Mailchimp + gym software
Time to build:1-2 hours
Difficulty:Intermediate-Advanced
Prerequisites:Comfortable sending email campaigns in Mailchimp — see Level 3 guide: "Set Up an Automated New Member Welcome Sequence"

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:

  1. You receive the win-back email in your inbox
  2. 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.