Solution — Fitness & yoga studios

Fitness studio management software that gets the money right.

A studio is a scheduling problem wearing a billing problem as a coat. Seats, credits, waitlists, family wallets, recurring memberships, and instructor pay all describe the same class from different angles — and when two of them disagree, someone works a free shift or a member pays twice. This is the studio side of Eco Systems: one schedule, one credit ledger, one till, and payments on your own Stripe account.

01 — The schedule

Recurring classes that actually exist as rows

Most studio software stores a repeat rule and guesses the rest. Here a materializer turns your recurring templates into real sessions on a schedule, which is what lets capacity, waitlists, reminders, and payroll all point at the same object.

  • Week time-grid calendarFront desk sees the week as a grid. One-off classes, subs, and room changes are edits to a session — not a new repeat rule you'll be untangling in March.
  • Waitlists that charge at promotionJoining a waitlist is free. The credit burn or card charge happens when the seat opens and the promotion is confirmed — the one moment a member is actually getting something.
  • Raise capacity, fill the seatsMove a class to the big room and the open seats get filled from the waitlist automatically. Change the teacher and the booked members get told.
  • Standing reservationsThe 6am Tuesday regular gets booked into 6am Tuesday, every week, without re-booking it. Applied on a schedule, not by hand.
  • Reminders at 24h and 2hTwo class reminders, deduplicated by a ledger so a cron re-run can't text the same member twice. No-shows are a reminder problem before they're a policy problem.
  • Check-in three waysFront desk marks them in, the member self-checks in from 60 minutes before to 30 after, or they tap in on the counter kiosk — which knows about classes on a studio account.

02 — The money

Credits, memberships, and a till that balances

Payments run on Stripe Connect against your own Stripe account, as direct charges. Your money, your rates, your payout schedule — we never sit in the middle of it.

Packs & credits

One ledger, never negative

Class packs are a credit ledger with expiry, not a number on a profile. Credits can't go negative and refunds are capped at what was granted — invariants the test suite holds down, because this is the number members argue about.

Family wallets

One pack, two kids

A parent buys a 10-pack; both kids book off it. Shared wallets instead of the "buy a second account and hope" workaround every studio has lived through.

Memberships

Recurring billing with a freeze

Subscriptions via Stripe Checkout on your connected account, with membership freezes, and the Connect webhook mirroring paid and failed invoices back into the member record.

Terminal & POS

A drawer you can close

Sell retail and services at the desk with Stripe Terminal, then reconcile the till: expected cash = float plus cash sales minus cash refunds. Off by four dollars is a conversation, not a mystery.

Appointments

One-to-one on the same calendar

A slot engine for privates, intros, and assessments — booked, paid, and reported through the same system as classes.

Liability

What you actually owe

Outstanding liability is computed, not guessed: remaining credits times unit price, plus gift balances. That's the number that tells you whether a good month was really a good month.

Until you connect Stripe, a studio runs in free mode — the schedule, booking, and waitlists all work, there are simply no plans or packs and no payment gate. It's a fine way to run a pilot week before you point real money at it.

03 — Staff and paperwork

Instructor pay and waivers, off the spreadsheet

Instructor payroll uses tiered rates — pay by head count band, per class, or per rate card — and exports a Gusto-shaped CSV, so the studio's most annoying monthly hour becomes a download. Instructors get an instructor role with their own view: their week, their classes, their subs board, their pay.

Waivers are documents with merge fields, not PDFs you re-type. {name}, {dob}, {gym_name} and the membership fields render live while the member fills them in, with a cheat-sheet in the editor. Multiple waivers can be active at once, and a signature targets the specific document version it signed. Sign-up forms are the front door: build a form with text, date, select, checkbox, photo and salesperson fields, publish it at its own URL, run it in kiosk mode on a tablet with an auto-reset loop, and let it collect the waiver signature in the same flow. Known fields sync where they belong — date of birth, emergency contact, address, who sold it.

Reporting is 14 reports, every one of them with a CSV export, including an attendance heatmap by weekday and hour — the report that tells you which class to move rather than which class to cut. And lifecycle emails run on their own: a welcome a few days in, a miss-you for members who've drifted 14 to 45 days (at most once a month), birthdays. Every send is ledgered before it goes out, gated to business hours, respects email opt-out on marketing sends, and has a single kill switch.

04 — What members see

Your brand on every surface

The member app is a phone-OTP login and four tabs — Home, Book, Shop, Me. No password to reset, no app-store download, no vendor logo. The public schedule page is server-rendered, so a search engine and a link preview can both read it; and if you already have a website you like, the embeddable schedule widget drops the live schedule into it with one script tag. Studios that also sell retail get the same member portal and points engine the supplement stores run on — the platform doesn't make you choose which kind of business you are.

If you run a staffed floor, open gym hours, or sell memberships with signup fees and door access, the gym version is the same system with the extra parts turned on. Everything either studio does sits on the shared platform tour, and the connections we've actually built are listed on integrations.

05 — Getting off your old system

The migration, honestly

There's a built-in importer for MindBody Online and Marketing Suite exports: clients, account balances, and the class schedule. Every run can be a dry run, so you see the exact rows that would be created before anything is written — and you run it as many times as it takes to trust it. One rule we won't bend: imported SMS consent arrives as pending, never as opted in. A spreadsheet column is not consent, and the carriers agree. Your members opt in again themselves, at the kiosk or in the app, with a timestamp you could show someone.

Setup and migration is a one-time $500, and the platform is $200/mo with 5,000 texts included and no contract — the same published pricing every other store pays. What's shipped versus what's early access is on the roadmap, in public, because that's the only version of a roadmap worth reading.

06 — Questions

Straight answers.

Do I have to switch payment processors?

No. Payments run through Stripe Connect on your own Stripe account, as direct charges — the money lands in your account, not ours, and you keep your Stripe rates. Until you connect Stripe, the studio runs in free mode: the schedule, booking, and waitlists all work, there are just no plans or packs and no payment gate on a booking.

Can you move my data off Mindbody?

There is a built-in importer for MindBody Online and Marketing Suite exports: clients, account balances, and the class schedule. Every import runs as a dry run first, so you see exactly what would be created before anything is written. One deliberate exception: imported SMS consent lands as pending, never as opted in — a spreadsheet is not consent, so your members opt in again themselves.

When does a waitlisted member get charged?

At promotion, not at join. Someone joins the waitlist for free; when a seat opens and their promotion is confirmed, that is the moment a credit is burned or a card is charged. No holding money for a class they may never get into.

What do my members actually use to book?

Three surfaces, all in your brand. A member app with phone-OTP login and four tabs (Home, Book, Shop, Me). A public schedule page that is server-rendered, so it is crawlable and linkable. And an embeddable schedule widget — one script tag — if you would rather keep members on the website you already have.

07 — Next step

Bring your schedule to the demo.

Twenty minutes: your real week on the calendar, a pack bought and burned, a waitlist promoted, and an honest read on what your Mindbody export would import cleanly.

$200/mo platform · 5,000 texts included · $500 one-time setup & migration · no contracts