CrossFit Client Management Without Software: The Google Sheets System That Replaced Three Apps
A CrossFit box owner's system for client management, programming, and file tracking in Google Sheets — no expensive software required.
Last Tuesday at 5:45 AM, fourteen athletes were warming up for our 6 AM class, and I was behind the front desk scrolling through three different apps trying to figure out if a new member's liability waiver had actually been signed. Her OnRamp was supposed to start that day. I had her intake form in an email, her payment confirmation in Stripe, her emergency contact info in a Google Doc someone on my staff started six months ago, and her waiver — nowhere. She was standing there in brand new Metcons ready to go, and I was the bottleneck.
That was the morning I decided our box needed one system, not five. I'd looked at dedicated CrossFit client management software — Wodify, PushPress, SugarWOD with add-ons — and the per-member pricing made my stomach hurt. We have 87 members. At $1.50–$2.50 per member per month, that's $130–$220/month for features I only half-use. So I built what we actually need in Google Sheets, and nine months later, I haven't lost a waiver, missed a billing flag, or scrambled for an emergency contact since.
Why Most CrossFit Boxes Outgrow Notebooks but Can't Justify Software
There's a weird middle zone that every affiliate owner hits. You start with a whiteboard, a notebook, and maybe a shared Google Doc. That works until you have 40–50 members. Then things start slipping — someone's punch card gets lost, you forget who owes for their last drop-in, a coach can't find the scaling notes for an athlete coming back from a torn labrum. So you look at software.
The problem is that most CrossFit management platforms are built for boxes doing 200+ members with a front desk staff. They bundle class scheduling, payment processing, workout tracking, and a member app into one monthly bill. If you're a 60–120 member affiliate where the owner also coaches the 6 AM and mops the floor, you don't need a member-facing app. You need to know who signed their waiver, who's paid through the month, who has a movement restriction, and where the heck you put that athlete's InBody scan PDF.
That's a spreadsheet problem, not a software problem. But only if the spreadsheet is set up right.
The Member Tracker: One Tab to Replace Your Intake Folder
The core of our system is a single Google Sheet called "Member Hub." The first tab is the member roster. Every row is one athlete. The columns aren't complicated, but they're specific, and that specificity is what makes it actually work day-to-day.
- Full name, preferred name (because nobody calls him "Jonathan"), pronouns
- Email and phone — the phone number you'll actually text, not the one from their intake form
- Emergency contact name + number (this one saves lives, literally — we've called it twice)
- Start date and membership type (Unlimited, 3x/week, Punch Card, Drop-In)
- Status dropdown: Active, On Hold, Cancelled, OnRamp In Progress
- Billing status: Current, Past Due, Comp'd, Prepaid Through [date]
- Movement restrictions / injury notes (free text — coaches read this before class)
- Waiver on file (Yes/No + the actual PDF attached to the row)
- OnRamp completion date
- Notes (the catch-all — "prefers 7 AM class," "allergic to latex bands," "competing in November")
The magic isn't the columns — it's the files. Every row has the member's signed waiver, their intake form, and any relevant documents (doctor's clearance letters, InBody scans, even photos of their movement screen) attached directly to that row. No hunting through a Google Drive folder called "Waivers 2024" wondering which "Smith_waiver.pdf" belongs to which Smith.
I use FileFox to attach files directly to each member's row — waivers, scan results, clearance letters. It sounds like a small thing, but before I set this up, our waiver "system" was a Google Drive folder with 140 PDFs and zero naming consistency. One coach saved them as "FirstLast_waiver.pdf," another used "waiver_2024_firstname," and a third just left the filename the member's phone generated. FileFox lets me drag the PDF into the cell and it's just... there. Click the row, see the person, see their file.
Tracking Programming and Cycle Notes Without a $200/Month Platform
The second tab in our sheet is the programming log. This isn't where I write the daily WOD — I still use a whiteboard and our Instagram for that. This tab tracks our macro programming cycles so coaches aren't guessing what phase we're in or when we last tested 1RM back squats.
Each row is a training cycle (usually 4–6 weeks). Columns include: cycle name, start date, end date, primary focus (strength, conditioning, skill, competition prep), secondary focus, benchmark WODs programmed, and a notes column for what worked and what didn't. I also attach the full cycle plan as a PDF or Google Doc link directly to the row.
Why does this matter? Because last September, a member asked me, "When did we last do a strength cycle focused on Olympic lifts?" And instead of scrolling through six months of SugarWOD posts, I filtered the programming tab, saw it was March, and could pull up the exact cycle plan. That kind of recall makes you look like you have your act together — and honestly, it makes programming better because you can see patterns. We realized we'd done three conditioning-heavy cycles in a row and hadn't tested any barbell benchmarks in four months.
The Billing and Retention Tab That Pays for Itself
I'll be honest: for actual payment processing, I use Stripe. I'm not trying to reinvent that wheel. But Stripe's dashboard is terrible for seeing the big picture of your membership health. So our third tab is a billing overview that I update weekly (takes about 15 minutes on Monday mornings while the coffee brews).
Each row mirrors the member roster — same name, same order. But the columns here are: membership rate, last payment date, next payment date, status (Current / Past Due / On Hold / Cancelled), cancellation date (if applicable), cancellation reason, and a "last check-in" column. That last one is the sleeper. It's the date you last had a real conversation with that member — not just a "hey" during class, but an actual check-in about their goals, how they're feeling, whether the programming is working for them.
I color-code the "last check-in" column with conditional formatting. Green if it's been less than 30 days, yellow for 30–60, red for 60+. When I scan that column and see red, I know who I need to talk to this week. Most cancellations don't come out of nowhere — they come after 60–90 days of someone quietly drifting. This column has caught at least a dozen members I would have lost.
Put that in a column next to your "last check-in" date (assuming H2 is the date cell), and you've got a retention early-warning system that would cost you $50/month as a feature in most gym CRMs.
Handling Waivers, InBody Scans, and Coach Certifications
This is where most spreadsheet systems fall apart for gym owners, and it's the reason people end up paying for software they don't love. The data part of member management is easy — names, dates, dropdowns. The file part is hard. Waivers are PDFs. InBody scans come as printouts you photograph. Coach certifications (CF-L1, L2, first aid, CPR) expire and need to be re-uploaded. Movement screen videos are .mp4 files sitting in someone's camera roll.
Before FileFox, I had a Google Drive folder structure that looked reasonable on paper: Members > [Last Name, First Name] > Waivers, Scans, etc. In practice, nobody maintained it. Coaches would save a file to the wrong folder or just email it to me and assume I'd file it. I'd "file it later" and later never came. Within three months the Drive was chaos.
Now each document lives in the spreadsheet row where it belongs. The member roster has a "Waiver" column and a "Documents" column. The coach tab (yes, there's a fourth tab for staff) has columns for "CF-L1 Cert," "First Aid/CPR," and "Cert Expiration Date" with the actual certificate images or PDFs attached. When it's time for an insurance audit or a spot check, everything is one click away from the person it belongs to.
How to Set This Up in an Afternoon (Not a Weekend)
I know how this reads — four tabs, file attachments, conditional formatting, formulas. It sounds like a project. But I set the bones of this up on a Sunday afternoon between the 9 AM class and open gym, and refined it over the following two weeks as I used it. Here's the order I'd recommend:
- Start with the member roster tab. Just names, contact info, membership type, and status. Export your current member list from Stripe or whatever payment processor you use and paste it in. Don't add every column I mentioned — start with what you need this week.
- Add a waiver column and spend one session uploading the waivers you already have. Flag anyone missing one. (You'll be surprised — or horrified — how many gaps there are.)
- Build the billing overview tab. Copy names from the roster. Add last payment date, next payment date, and the check-in date column with the formula above.
- Add the programming log tab when you start your next training cycle. One row per cycle. Attach the plan document.
- Add the coach/staff tab last. It's important but not urgent unless you have a cert expiring soon.
What This System Won't Do (And When You Actually Need Software)
I'm not going to pretend Google Sheets replaces everything. There are real scenarios where dedicated CrossFit client management software earns its price tag. If you have 200+ members, multiple locations, or need members to book classes through an app, you need a platform. If your coaches need to log individual athlete results and deliver custom programming through a member portal, SugarWOD or BTWB does that and Sheets doesn't.
What Sheets does — and does better than any $200/month platform I've used — is give the owner a single, honest picture of the business. Who's paid, who's drifting, what docs are missing, what we programmed last quarter, which coach's CPR cert expires in three weeks. That operational layer is where most small boxes actually bleed time, and it's the layer that expensive software buries under features you'll never configure.
If you're running a box with under 150 members and you're the one doing intake, billing follow-ups, and programming, start here. You can always migrate to software later — and when you do, you'll have clean data to import instead of a pile of sticky notes and email threads.
The one thing I'd do first: open a new Google Sheet right now, name it "[Your Box] Member Hub," and build the roster tab with just the names and emergency contacts of your current members. That alone puts you ahead of most affiliates I know. Everything else builds from there.
Frequently Asked Questions
How do I track CrossFit clients in Google Sheets?
Create a member roster tab with columns for name, contact info, membership type, status (Active/On Hold/Cancelled), billing status, movement restrictions, and a file attachment column for waivers and documents. Use data validation dropdowns for status fields and conditional formatting to flag past-due payments or missing waivers. The key is keeping one row per athlete with all their info and files in one place.
What's the best free alternative to CrossFit client management software?
Google Sheets with a file-attachment add-on like FileFox covers 80% of what small affiliates (under 150 members) actually need: member tracking, billing oversight, document storage, and programming logs. You won't get a member-facing app or automated class booking, but you'll have a cleaner operational view than most software dashboards offer out of the box.
How do I store signed waivers and liability forms for my CrossFit box?
The most reliable method for small gyms is attaching waiver PDFs directly to each member's row in a Google Sheet using a tool like FileFox. This keeps the document linked to the person instead of buried in a Drive folder. Add a "Waiver on File" column with Yes/No values so you can quickly filter for anyone missing one.
Do I need gym management software for a small CrossFit affiliate?
Not necessarily. If you're under 150 members and don't need a member-facing class booking app, a well-structured Google Sheet can handle member tracking, billing oversight, document storage, and programming logs. Software becomes worth it when you scale past 200 members, add locations, or need athletes to self-serve bookings and workout logging.
How do I build a CrossFit programming template in Google Sheets?
Create a tab where each row represents a training cycle (typically 4–6 weeks). Include columns for cycle name, date range, primary focus (strength/conditioning/skill), benchmark WODs tested, and notes on what worked. Attach the full cycle plan as a PDF or doc to each row. This macro-level view is more useful long-term than a daily WOD planner because it helps you spot gaps in your programming over months.