Industry guide · Booking & Scheduling

Personal training software for multi-location studios: where the off-the-shelf stack breaks

The short answer

If you run one or two studios with under fifteen trainers and standard packages, keep buying: Trainerize, TrueCoach or Mindbody plus Stripe will beat any build on price. Once you are past roughly four locations, twenty-plus trainers, and a comp plan that only exists in a spreadsheet, building is usually the cheaper option within two years. A focused first release, meaning the session and credit ledger, the scheduling engine, trainer pay, and a client web app, typically runs $60k to $130k and ships in 12 to 16 weeks. A full platform with native apps, multi-location finance, and corporate contracts runs $150k to $400k phased over 6 to 12 months.

Why booking and session software makes or breaks a multi-location training business

Picture the stack at a six-location group with 34 trainers and about 2,200 active clients. Mindbody or Zen Planner holds memberships, appointments and the front desk iPad. Trainerize or TrueCoach holds programming and the client app. Stripe or Square holds the cards. Smartwaiver or DocuSign holds the PAR-Q and the liability waiver. Gusto or ADP runs payroll. A Google Sheet named "TRAINER PAY FINAL v7" holds the only version of the truth about what anyone actually gets paid. WhatsApp holds every conversation that matters.

It repeats like this. Monday, 7:12am. A client walks in for a session that a trainer cancelled from his phone on Sunday night while tidying his calendar. Mindbody deducted the session from her 20-pack anyway, because a cancellation inside the window still burns a credit. The trainer trains her regardless, because she is standing there. That session is now delivered but not booked, so it never lands on the attendance CSV the general manager exports on the 3rd. The trainer texts the GM, who adds a row to the sheet by hand. The client disputes the missing credit in March. Reconstructing what happened takes 25 minutes across three systems and a WhatsApp scroll.

The cause is structural, not sloppiness. Mindbody models an appointment. Trainerize models a program. Stripe models a charge. Nobody in that stack owns the session as a single financial event with a delivery record, a credit consequence and a pay consequence attached. On the studio-group builds Digital Heroes has audited before writing a line of code, somewhere between 3% and 6% of delivered sessions were unbilled, double-deducted, or paid to a trainer with no matching client charge. At a $95 session rate and roughly 9,000 sessions a month, the low end of that range is real money walking out the door every quarter, and it walks out silently.

Problem 1: the session exists as three different objects in three different systems

Your front desk manager cannot answer "was this session delivered, charged, and paid" without opening three tabs. When it goes wrong, it goes wrong in a direction that costs you: the client gets the credit back as a goodwill gesture, and the trainer keeps the pay.

Zapier glue between Mindbody and Sheets does not fix this. Webhooks retry, and at-least-once delivery on a credit decrement means double decrements. The Mindbody API will tell you an appointment changed, but nothing in that payload knows your pay rules or your package terms, so the reconciliation stays human.

A custom build makes the session a state machine with one owner. States: booked, checked in, delivered, late cancel, no show, comped, disputed. Every transition writes a credit ledger line and a pay ledger line inside the same database transaction, with an idempotency key, so a retried event cannot double-burn a credit. Check-in is a real signal, not a memory: a kiosk QR scan or the trainer's phone at the rack. The trainer app can propose a transition, but only the engine commits it, and every override carries a reason code and a name. Nightly reconciliation compares delivered sessions against charges against pay lines and emails the exceptions to the GM before the pay run, not after the dispute.

Problem 2: package expiry, freezes and rollovers that live in a note field

You sell a 20-pack at $1,700 with a six-month expiry. The GM extends it because the client had surgery. That extension exists as free text in a note, or as an overwritten date field with no history. Multiply by 2,200 clients and you no longer know your deferred revenue balance, which matters because sold-and-undelivered sessions are a liability, and your accountant needs that balance split by location and month.

Off-the-shelf tools treat a package as a count and a date. They cannot express your actual rules: a $95 senior-trainer credit should not burn on a $70 junior slot without a top-up, family packs should transfer between two named members, cross-location use should be allowed at four sites and blocked at the two you franchise.

The build models a credit pool with rules attached: eligibility by trainer tier, transferability, freeze windows, cross-location scope, expiry with an extension history that never overwrites. Booking enforces eligibility at the point of reservation instead of at the point of complaint. The system generates a deferred revenue schedule and posts it to QuickBooks or Xero as a journal entry every month. The late-cancel policy becomes a policy engine: two grace cancels per quarter per contract, automatic beyond that, manager overrides logged and rolled into the location P&L so you can see which site is giving away $4,000 a month in goodwill.

Problem 3: trainer pay is rebuilt by hand every single month

Your comp plan is not exotic, it is just yours: $28 per session under 60 sessions in a month, $34 above, plus 5% on packages the trainer sold, plus a floor for the two salaried leads, plus a grandfathered rate for the three trainers who came over in the 2021 acquisition. Trainers who work two sites split across two schedules. On Digital Heroes intake calls with studio groups, the GM's pay run consistently eats 8 to 12 hours a month, and it is the single most error-prone process in the business.

Gusto imports hours. Mindbody's payroll reporting assumes flat or simple commission. Neither knows about a grandfathered rate or a session that was delivered but never charged, which is exactly the row you do not want to pay.

What the build does: a versioned rules engine with effective dates, so a rate change in June does not silently rewrite March. Back-dated corrections create visible adjustment lines. Trainers see a live estimate of their pay in their own app, which removes most of the disputes before they start, and they can flag a missing session in one tap, which creates a review item rather than a WhatsApp message. Approved runs push to Gusto or ADP through the API. The system reports gross margin per session per trainer per location, which is the number that tells you whether your $34 tier is actually working.

Problem 4: nobody can see a client about to churn until they are gone

Adherence data sits in Trainerize. Attendance sits in Mindbody. Payment health sits in Stripe. A client training twice a week at $95 is $760 a month, and the first signal she is leaving is that her booking density drops from 2.4 to 0.9 sessions a week, three weeks before she cancels. Nothing in your stack joins those three sources, so the first person to notice is the trainer, and only if he happens to.

The build gives you one client timeline: program adherence, session history, credit balance, card health, lead source, injury notes. On top of that, AI does two things worth paying for. First, a weekly risk score that names its reason in plain language, for example "booking frequency fell from 2.4 to 0.9 per week, card declined on the 1st, no program opened in 11 days", routed to the assigned trainer with a drafted message he approves or edits before it sends. Second, document extraction: a language model reads PAR-Q forms, physician clearance letters and InBody scans and pulls structured fields into the record, so the trainer opens a session screen that says "left shoulder impingement, cleared for pressing below 90 degrees" instead of an eight-page PDF attachment nobody opens. Human review before anything clinical is committed, always.

Problem 5: booking stops at 6pm and rebooking never happens

A prospect taps your Meta ad at 9:40pm, fills the intro form, and hears from you at 10:15 the next morning. By then she booked the studio two blocks away that answered in ninety seconds. Mindbody online booking will take a reservation, but only into slots you published in advance, and it has no idea which trainer is certified for pre-natal, which room has the second rack free, or whether this client's credits are even eligible for that slot.

A custom after-hours assistant on your site and on WhatsApp reads the real availability graph: trainer certifications, location, equipment, travel time for mobile trainers, and the client's own credit eligibility. It proposes, the scheduling engine validates and commits, so the model can never double-book a rack. Payment goes through a Stripe Checkout link, so no card data touches your systems and your PCI scope stays at SAQ A. The trainer gets a briefed summary before the session. After delivery, the next slot is offered based on the actual programming block rather than a generic "book again" nudge. The same data drives an eight-week capacity forecast per location, which is how you find out you need a fourth trainer at the Northside site before your waitlist tells you.

What this costs and how long it takes

These are Digital Heroes delivery bands across 2,000-plus projects, not industry averages. A focused first release, meaning the session and credit ledger, the scheduling and eligibility engine, trainer pay, and a client-facing web app, typically runs $60k to $130k and ships in 12 to 16 weeks. A full platform with native apps, multi-location finance, corporate contracts and franchise reporting runs $150k to $400k phased across 6 to 12 months.

What pushes you toward the top of the band in this category, specifically: the number of systems you must keep alive during cutover, because every location still on Mindbody with active auto-renew contracts means dual writes and reconciliation for the whole overlap period. Card vault migration is the sleeper: Stripe and Square will do a PCI-compliant transfer of stored cards, but the losing processor has to cooperate, and in our experience the calendar time is 3 to 6 weeks regardless of your engineering speed. Comp complexity scales badly: three pay rules is a week, twenty-two rules with grandfathered contracts is a month. Native iOS and Android with Apple Health or Whoop pulls plus store review adds roughly $35k to $70k and 4 to 6 weeks. And historical data is usually the most underestimated line: reconciling five years of package balances to the dollar has run 15% to 20% of the first release budget on the studio builds we have done. The cheapest path is one processor, one location live first, web-first client app, and leave your marketing site alone.

Build versus buy: take the off-the-shelf tool for as long as it is honest

If you have one or two locations, fewer than fifteen trainers, standard packages, and a comp plan you can describe in two sentences, do not build. Trainerize plus Stripe plus Acuity or Square Appointments will cost you a few hundred dollars a month and no build will beat that on total cost. Anyone who tells you otherwise is selling.

The signals that it is time are concrete. One: you employ a person, or a meaningful slice of a GM, whose actual job is reconciling systems. Two: you sell something the tool cannot model, for example corporate wellness billed to an employer on net-30 invoice, physiotherapy referral packages, semi-private 3:1 with per-head credit burn, or franchise royalties calculated on delivered sessions. Three: your differentiator lives in the product itself, like a proprietary assessment protocol or an outcome guarantee that requires you to prove delivery. Four: your combined subscription and per-client fees across locations are past roughly $4k to $6k a month and you still maintain the spreadsheet. Five: you have been told "that is on our roadmap" about something that costs you money every single month.

The position worth holding: build the ledger, buy the commodity. Do not rebuild Stripe, do not host your own video, do not write a waiver product. The builds that win are a session, credit and comp ledger plus a scheduling engine plus a client app, with Stripe, Twilio, Vimeo and Smartwaiver bolted onto the side.

How to choose a developer for personal training software

Make them separate the nouns before they quote. Ask them to distinguish an appointment from a session from a credit from an entitlement from a pay event. If they draw one box called "booking" and shrug, walk. That conflation is what costs you in year two, and it is the single fastest way to tell a fitness-literate team from a generic app shop.

Demand integration proof with names. Have they shipped against the Mindbody API, Stripe Billing with proration and dunning, Stripe Connect if you pay contractors, and a payroll API like Gusto or ADP. Ask for one specific failure they hit in production and how they handled webhook replay and idempotency. The answer tells you whether they have ever reconciled money that was wrong at 2am.

Ask how they test the ledger. You want to hear about a nightly reconciliation report, double-entry thinking, and property tests over credit math, not "we have unit tests". Then ask about scope: card data tokenized and hosted so you stay at SAQ A, health information from PAR-Q forms and injury notes treated as sensitive with access controls, and cancellation and auto-renewal flows built to satisfy the health club contract statutes (prepaid contract caps, cooling-off periods, cancellation rights) in the states you operate in, reviewed with your counsel. If you hold corporate or municipal contracts, add WCAG conformance on the client app.

Last, settle ownership before kickoff, in writing: code in your GitHub organization from commit one, infrastructure as code, a runbook, and a written handover test where a different engineer can deploy it. If the developer cannot hand you a system another team could pick up next quarter, you did not buy software, you bought a dependency.

Research & sources

The evidence behind this guide

Independent findings on why this investment pays off. Every link goes to the primary source.

  1. In an RCT, the no-show rate was 23.5% for patients receiving a text-message reminder versus 38.1% for the control group - a 14.6 percentage-point reduction (p = 0.04). Source: Clinical Pediatrics / PubMed Central (Lin et al.) (2016) →
  2. SMS reminders that stated the specific cost of the appointment to the health system reduced missed appointments in Trial One, with the DNA (did-not-attend) rate falling from 11.1% (control) to 8.4% (specific-costs message) - an odds ratio of 0.74 (95% CI 0.61-0.89), i.e. roughly a 24-26% relative reduction - at no additional cost. (Trial Two replicated this at an 8.2% DNA rate.). Source: PLOS ONE (Hallsworth et al.) (2015) →
  3. Technology 'Leaders' grow revenue at more than twice the rate of 'Laggards'; laggards surrendered 15% in foregone annual revenue in 2018 and stood to miss out on as much as 46% in revenue gains by 2023 if they did not change their enterprise technology approach. Based on a survey of more than 8,300 organizations across 20 industries and 20 countries. Source: Accenture (2019) →
  4. Only 16% of respondents said their organizations' digital transformations had successfully improved performance and equipped them to sustain gains over the long term; even in digitally savvy industries such as high tech, media, and telecom, self-reported success rates did not exceed 26%. Source: McKinsey & Company (2018) →
Rohan Malhotra · Enterprise Software Consultant

Rohan advises mid-market and enterprise teams on ERP, CRM and custom software, and has led delivery on dozens of business-software builds.

Writes for Digital Heroes, shipping business software for 2,000+ brands across 55+ countries since 2017.

FAQ

Frequently asked questions

How much does custom personal training software cost for a multi-location studio group?
For a group with several locations and 20 or more trainers, a focused first release covering the session and credit ledger, the scheduling engine, trainer pay and a client web app typically runs $60k to $130k in Digital Heroes delivery experience. A full platform with native apps, multi-location finance and corporate contracts runs $150k to $400k phased over 6 to 12 months. The biggest cost drivers in this category are historical data reconciliation, the number of legacy systems you keep alive during cutover, and how many exceptions your trainer comp plan contains.
Should we build our own system instead of paying for Mindbody and Trainerize?
Not until the combined subscription and per-client fees across your locations pass roughly $4k to $6k a month and you are still maintaining a reconciliation spreadsheet. Below that, Trainerize or TrueCoach plus Stripe plus a scheduler is unbeatable value and no build competes on cost. The stronger trigger is capability, not price: if you sell corporate wellness invoiced to an employer, semi-private with per-head credit burn, or franchise royalties on delivered sessions, the off-the-shelf tools cannot model it at any price.
How long before we can actually turn off Mindbody?
Plan on 12 to 16 weeks to a first release, then a dual-running period of one to three months while active auto-renew contracts and stored cards move across. Most studio groups go live at one location first, prove the pay run and the deferred revenue report for a full month, then roll the rest. Anyone promising a hard cutover across six locations on day one has not migrated package balances before.
Can we migrate our client and session history out of Mindbody?
Yes, through the Mindbody API and CSV exports, but the work is in reconciliation, not extraction. Getting five years of package balances to agree to the dollar with what clients believe they are owed has run 15% to 20% of the first release budget on the studio builds we have done. Budget for a signed-off balance reconciliation report before go-live, because unearned credits are a real liability and clients will test them.
Can we move saved credit cards to a new system without asking clients to re-enter them?
Yes. Stripe and Square both run PCI-compliant card vault migrations, and clients never see it happen. The catch is calendar time and cooperation: the outgoing processor has to release the tokenized data, and in our experience it takes 3 to 6 weeks regardless of how fast your developers work, so start it at the beginning of the project rather than the week before launch.
Who owns the code if we hire an agency to build our training platform?
You should, and it should be written into the contract before kickoff, with commits landing in your own GitHub organization from day one. Insist on infrastructure as code, a deployment runbook, and a handover test where an engineer who did not build it can deploy it. If the agency hosts everything in their account and hands you a login, you bought a dependency, not an asset.
Does personal training software need to be HIPAA compliant?
Usually not, because a fitness business that does not bill health insurance is generally not a covered entity, but confirm this with your own counsel. It changes if you run physician referral programs, medical fitness services, or contract with a health plan. Regardless of HIPAA, PAR-Q answers and injury notes are sensitive health information and should be access-controlled and audited, and your card handling should stay in SAQ A scope by using hosted fields or a Stripe Checkout link so raw card data never touches your servers.
Can a custom system handle tiered trainer pay and commissions?
Yes, and this is often the fastest payback in the whole build. A versioned rules engine handles session tiers, package commission, salary floors and grandfathered rates, with effective dates so a June rate change does not rewrite March. Studio GMs on our intake calls report spending 8 to 12 hours a month rebuilding pay by hand, and the automated run also blocks the case that quietly costs you money: paying a trainer for a session that was never charged to a client.
Can AI handle after-hours booking without double-booking trainers?
Yes, if it is built correctly: the model proposes, the scheduling engine validates and commits. The assistant reads the real availability graph including trainer certifications, room and rack capacity, location and the client's credit eligibility, then the deterministic engine rejects anything that violates a constraint, so a double-booking is impossible rather than unlikely. Payment goes through a hosted Stripe link, and the trainer receives a briefed summary before the session.
What should I prepare before contacting a software development agency?
A one-page brief beats a 40-page requirements document: the business problem in plain words, who will use the system, the 5 to 10 workflows it must handle, the tools it must connect to, and your budget range and deadline driver. You do not need wireframes, a specification, or technical vocabulary; producing those is the agency's job during discovery. Stating a budget range up front is the single best move, because it gets you honest scoping instead of a quote engineered to win the meeting.
How hard is it to move my client and appointment data out of Mindbody or Acuity?
Both platforms export clients and appointment history as CSV files, so the core migration is routine, typically 1 to 2 weeks of cleanup, field mapping, and import testing. The genuinely hard parts are stored payment cards, which cannot be exported directly and need a PCI-compliant token transfer through your payment processor, and future recurring bookings, which usually get rebuilt by script. Schedule the cutover for your slowest week and run both systems in parallel for a few days.
Is Mindbody worth the price, or should my studio build its own booking platform?
Mindbody earns its price while you run a single location; plans start around $129 per month and bundle scheduling, payments, and marketing in one place. The switch point we see at Digital Heroes is two or more locations, where combined fees reach $700 to $1,000 a month and a $35,000 custom build pays back in 3 to 4 years. The bigger reason studios go custom is that the Mindbody marketplace shows your clients competing studios, and owning the platform means owning the client relationship.
Should I hire a freelancer or an agency to build my booking app?
A strong freelancer works for a simple booking page with payments, roughly the $5,000 to $12,000 range in our experience. Choose an agency once the project needs a designer, backend and frontend developers, and QA working at the same time, which describes nearly every system with staff schedules, payments, and reminders. The practical freelancer risk is bus factor: if one person leaves mid-project, an agency replaces them and you cannot.
We have outgrown Calendly. When is it actually worth building our own booking system?
Build when your scheduling no longer fits Calendly's model of one person, one event type, one slot. The triggers we see most: bookings tied to rooms or equipment, appointments needing multiple staff at once, pricing that varies by client or demand, or paying for 20+ seats at Calendly's $16 per user per month and still exporting everything to spreadsheets. Below roughly 10 users running simple 1:1 meetings, Calendly stays the cheaper option and custom rarely pays off.
What can custom booking software do that Acuity Scheduling cannot?
Custom software handles the rules Acuity cannot express: appointments that need both a staff member and a specific room, pricing tiers by client history, approval steps before confirmation, and multi-stage bookings. Acuity's top Powerhouse plan at $49 per month also caps you at 36 staff calendars, so teams past that size need custom or enterprise tooling regardless. If your workflow fits Acuity's model, stay put; at $16 to $49 a month it is very hard to beat on price.
What does it cost to maintain a custom booking system each year?
Budget 15 to 20 percent of the original build cost per year, so a $30,000 system runs $4,500 to $6,000 annually in Digital Heroes maintenance plans. That covers hosting, typically $50 to $200 a month, plus security patches, dependency updates, and small feature tweaks. Costs spike only when a connected service changes, for example a payment API update or a calendar sync deprecation, which is why a retainer beats ad hoc emergency fixes.
How small can the first version of my software be and still be worth building?
One workflow, end to end, for one type of user: the single process that currently burns the most hours or loses the most money. In Digital Heroes delivery experience, first versions scoped to 6 to 10 weeks of build time ship, get used, and generate the feedback that makes version two obviously right, while 9-month first versions routinely launch with features nobody touches. Everything you cut from v1 gets cheaper to build later, because real usage reorders the roadmap for you.
What should I prepare before contacting an agency about a booking system?
Bring three things: a list of every service with its duration and price, your scheduling rules written in plain language (buffers, cancellation policy, staff availability), and screenshots of your current tool annotated with what fails. That package gets you a real estimate in the first call instead of a placeholder range. In Digital Heroes discovery calls, clients who arrive with documented booking rules receive proposals roughly twice as fast and file far fewer change requests later.
Keep reading
let's build

Build something worth launching.

A plan, a team, a timeline, within 24 hours. No decks, no discovery calls. Tell us what you're building and we'll come back with a real scope and a real number.

message us directly · we reply within one business day

mission briefing

Monthly dispatch

Playbooks, real build costs, and what we're shipping. One email a month. No fluff.

visit us

New York HQ

1140 Broadway, Suite 704 · New York, NY 10001

Get directions
Online now

Hey there 👋 How can we help you today?