The whole gym.
One board.
Most gym software runs one department well and leaves you to reconcile the rest. Studio holds the timetable, the memberships, the payments, the door, the equipment and the staff in a single record — so the question stops being "what happened in each area" and becomes "which area is moving the others".
Get Repple Studio
Two figures show a dash rather than a number. One because twelve sessions have not been marked and pricing them would mean paying for no-shows; the other because no accounting is connected. Studio would rather leave the space honest than fill it.
Nothing in a gym
happens on its own.
A quiet Tuesday class is not a timetable problem. It is a staffing cost, a retention signal and a revenue forecast wearing a timetable's clothes. Take one fact — a member stops coming in — and read it from each part of the business.
Their coach sees it first
The pattern breaks in week two and the client rises to the top of their coach's roster, while there is still something to be done about it.
The visit log knows before the till
Attendance used to be countable only where a class was booked and ticked. The door log counts the member who walks in, trains on the floor and leaves — so moving from classes to the floor no longer looks like leaving.
A recurring slot frees up
Worth re-timing before the gap becomes the shape of the week. Fill and show are measured per class, so the decision has evidence behind it.
Fewer delivered sessions
Which changes what is owed this month — computed from the sessions somebody confirmed, not from the ones that were merely booked.
A membership likely to lapse
Visible now, in the register, rather than at renewal when the only remaining option is a discount.
Four views, not four systems
In separate tools these are four unrelated rows nobody joins up until quarter end. Here they are one member, one record, read four ways.
Booked and the clock passed
is not the same as delivered.
The easy way to count a trainer's month is to count the bookings whose start time has gone by. It counts no-shows, slots nobody cancelled and sessions the trainer never turned up to — and then it feeds payroll, so the gym pays for sessions that did not happen. Studio will not do it. A session is delivered when somebody recorded that it completed, and a session nobody has marked is reported as unknown rather than rounded in.
What happened to 115 booked sessions
Payroll by trainer
- Delivered 84
- Awaiting an outcome 12
-
1
State the policy, once
Do you pay for a no-show? For a cancellation that came too late to fill the slot? Both are real differences between gyms, so Studio asks rather than assuming, and the answer changes the payable count in front of you.
-
2
The rate is stamped at the moment of marking
Whatever a session was worth when its outcome was recorded stays with it. Changing your session fee next quarter cannot rewrite what last month cost.
-
3
Settling pays sessions, not periods
A settlement stamps the exact sessions it covered, so a session marked late simply joins the next run instead of being paid twice — and a session already paid can never be picked up again.
-
4
Unpriced work is reported, not zeroed
A payable session with no rate against it reads as not priced. The run tells you how many there are and asks you to set a fee, rather than quietly settling them at nothing.
Fill and show are
two different questions.
Fill is how full the room was booked. Show is how many of those people turned up. One word for both is how a class reads 71 per cent on one screen and 80 per cent on another. Studio keeps them apart, sums first and divides once, and leaves either as a dash when the figure it needs was never recorded — a class nobody booked has no show rate, which is not the same as everybody failing to turn up.
Capacity, booked and turned up
- Places on the timetable 2,002
- Booked 1,668
- Turned up 1,433
- A series is real rows, not a rule — build twelve weeks in one action and then move one week to a different room, or drop the week of a public holiday, without unpicking a recurrence pattern.
- Skip dates when you build it — hand the series the days the gym is closed and those weeks are simply never created.
- The roster is a list you tick — at the desk or on the trainer's phone. Only a ticked name counts as having turned up, which is what makes show rate a measurement.
- A class in the future shows a dash — not a zero. Nought turned up would read as nobody came, rather than as not yet.
- Class payroll from check-ins — attendance times the per-attendee rate you type. The rate field starts empty, because a figure that belongs to no pay agreement should not be on screen before you have seen what it multiplies.
Two slots are structurally quiet, one is turning people away, and one is filling then losing a quarter of the room between booking and arriving. Those are three different problems, and only a record that separates fill from show can tell them apart.
Recurring revenue,
by the rules you can check.
Monthly plans count in full. Annual plans are spread across twelve. One-off items — a day pass, a joining fee, a block of personal training — contribute nothing to a monthly figure, because they are not recurring. And if no active membership sits on a priced plan at all, the answer is a dash and a sentence, not a zero.
Where the monthly figure comes from
- A price book you can audit — retire a plan rather than deleting it, so the memberships sold on it keep pointing somewhere and the history has no holes in it.
- Money is held in whole units of currency — never as a decimal fraction. Floating point is a rounding error in a spreadsheet and a dispute in a gym.
- A payment is here because somebody recorded it — never because it was inferred from a membership that ought to have renewed. Card, cash, transfer, direct debit or other, taken at the desk and logged against the member.
- Freeze, reactivate, cancel — the four states a membership actually has, with the plan it sits on, the day it started and the day it ends, on the same row.
- Nothing taken is not nothing earned — a period with no payments recorded shows a dash. A gym that has recorded no payments has not necessarily taken none, and the screen refuses to say otherwise.
Prices in this sketch are a made-up gym's own price book, not Repple's. What Repple costs is not published yet, and nothing on this page quotes it.
Every visit,
not just the booked ones.
Attendance used to be countable only where a class was booked and ticked off, which made every member who walks in, trains on the floor and leaves invisible. That under-count reaches further than the headline: retention is read from a break in someone's pattern, so a member who moved from classes to the floor looked exactly like a member who stopped coming.
Arrivals by hour
Measured only where it was measured
A visit with no recorded exit has no length — the member may still be inside. It is left out of the average rather than counted as zero minutes, and the screen says how many of the day's visits the average came from.
A walk-in still counts
Check somebody in without attaching a member and the visit is recorded as unattributed — which is true — rather than dropped, which would lose a person your gym actually let in.
Who the record believes is here
Everyone still open in the log, with how long they have been in. A visit left open overnight is swept with a note attached, never given a guessed exit time.
Days since each member came in
Read from the door log, not from bookings — so it catches the member who quietly moved to the floor and the member who quietly stopped, and tells them apart.
Drop-ins, guests and class packs
Sold at the desk with a number of visits and an expiry. A pass expiring today is still good today. Guest passes remember which member brought whom.
A pass nobody priced is not free
Pass revenue reads as a dash when no price was recorded, and says how many of the passes it did count. A gym reading "pass revenue: 0" after a week of cash takings makes a worse decision than one reading a dash.
A capacity of fourteen
is a claim about the room.
It stops being true the moment six of the rowers break, and a gym then measures its fill rate against a number that quietly became fiction. The equipment register is an inventory that the timetable actually reads: put a class on at a capacity the kit cannot support and Studio says so while you are still typing it. Be clear about where that stops — the check is a warning at the moment you set the number, not a correction applied afterwards. Fill rate is still measured against the capacity somebody typed, so when kit goes out of service it is the owner who decides whether the class capacity moves. Studio makes that visible; it does not quietly re-divide last month’s figures behind you.
- It names the number it can actually seat — "six of eighteen bikes out of action, this class seats twelve, not twenty" — and lets you add the class anyway, because a stale inventory should not stop a class reaching the timetable.
- An empty register is not an empty gym — if nothing of that kind is recorded, the check returns nothing and says why. It never reports zero, which would tell an owner their class cannot run on the strength of a form nobody filled in.
- Staff take a machine out of action — from the floor, where they are standing next to it, with a note about what is wrong. Usable units drop immediately, and so does the seat count the check reports the next time somebody sets a capacity.
- Retired kit is gone, not broken — it leaves the counts entirely, rather than sitting in the out-of-action pile making the gym look worse than it is.
The spin bikes are the interesting row. Six of eighteen are out of action, so the Wednesday cycle class advertised at twenty seats can hold twelve — and the timetable says so before the class is created rather than after twenty people book it.
| Service state | What it means |
|---|---|
| No schedule | You decided this kit needs no service interval. A decision, recorded as one. |
| Never serviced | An interval was set and no service has ever been logged against it. Deliberately not the same state as the one above — collapsing them would hide the one that matters. |
| In date | Serviced, and the next one is more than a week away. |
| Due | Owed within the next seven days — the grace window, so you can book an engineer before the machine is overdue rather than after. |
| Overdue | The date derived from the last recorded service has passed. Sorted to the top of the maintenance list. |
A due date is only ever shown when it was worked out from a service somebody actually recorded. The arithmetic is done in plain calendar dates, so no timezone can shift a service due date by a day.
An import that refuses
is doing its job.
Everything Studio does is worthless against an empty record, so your existing spreadsheet has to come with you. The governing rule of the importer is that it never guesses at an ambiguous value. An import that silently reads 03/04/2026 as the third of April when you meant the fourth of March does not fail loudly — it produces a year of plausible, wrong history that nobody notices until a renewal is missed.
The import is step four of eight. How it works puts it in the order the rest of the setup happens in, and lists what every figure in Studio needs before it can show you anything.
-
1
Paste the sheet, header row and all
Column names are matched against the spellings real exports use — member, customer, client; started, joined, member since; amount, total, gross. Anything it does not recognise is reported to you, never dropped quietly, in case one of them mattered.
-
2
It reads the whole column before it reads a row
If any date in the file settles the convention — a day above the twelfth can only be a day — that settles it for the file. If every date works read either way round, it stops and asks you which, rather than moving somebody's renewal by nine months.
-
3
You see what would happen before anything happens
How many rows are ready, how many need attention, which lines they are and what is wrong with each. Nothing is written until you say so.
-
4
And it tells you plainly what it did
All of them, none of them, or the exact split — including the warning that the rows which did land are saved, so paste only the fixed ones back or you will import them twice.
| What the sheet says | What the importer does, and why |
|---|---|
| A quarterly plan | Refused with a reason. A price book holds monthly, yearly and one-off, and there is nowhere truthful to put a quarter. Calling it monthly would divide your recurring revenue by three; calling it yearly would multiply it by four. |
| A plan with a blank price | Refused. A blank price is an unfinished row, not a free plan. A deliberate zero is accepted, because a complimentary or staff membership is a real thing a gym sells at nothing on purpose. |
| A status it does not recognise | Refused rather than defaulted to active. A cancelled member imported as active gets chased for money. |
| An amount with four decimal places | Refused rather than rounded. A column of four-decimal figures is a unit price or an exchange rate, and rounding it silently turns a data problem into a money problem. |
| A negative payment | Refused — that is a refund, and this is not the tool for one. A zero is accepted, because a comped month and a correction both really happen. |
| The same email twice | The first row keeps its place and the second is flagged against the line number of the first. Two members for one person is not a thing you want to discover later. |
| A membership ending before it starts | Refused. So is the thirty-first of February, which a date library would otherwise roll helpfully forward into March. |
| A payment with no name and no email | Refused — it cannot be attributed to anybody. A payment whose member simply cannot be matched is still recorded, as unattributed, because that is true and dropping it would lose money you actually took. |
Payments and plans import in full. Member rows can be checked but not yet imported — a membership has to point at a real Repple account, and creating one is an invitation rather than a row we can insert. Running the check is still most of the work of cleaning an export: it finds the bad dates, the unreadable amounts and the columns nobody will recognise.
Somebody asked to be
erased. There is a clock.
The store listing tells your members their account is deleted within thirty days of asking. The clock starts the moment they tap it in the app, not when you next open the console — so the queue exists, it counts down, and it goes red when a request is past the promise.
- Two confirmations, and both say what goes — the profile, the workouts, the logs, the scans, the messages and the bookings, across every table that hangs off the account, and the sign-in account itself. Their invoices and memberships are not in that set. Those are your financial record and they survive; the deletion page counts what is reached, from the database's own foreign keys rather than from memory.
- What stays, and why — invoices, memberships and payments remain, and so do door-log visits and guest passes. Each loses its link to the account. Several keep the name on purpose, copied onto the row as the account goes, because an invoice billed to nobody reconciles nothing and a waiver without the name that signed it is not evidence of anything. Detached is not anonymous, and your books do not develop a hole because somebody exercised their rights.
- The erasure is logged even though the person is not — that they asked, and when you actioned it, is kept. The record of the deletion is the evidence that it happened.
- A failed read is never an all-clear — if the queue cannot be loaded the screen says so in as many words, because "we could not check" and "nobody is waiting" are different answers and only one of them is safe.
An empty queue here is the outcome you want, and the screen says so rather than looking like a page that failed to load. Loading, empty and could-not-read are three different states with three different sentences.
Some jobs need
a proper screen.
Studio runs on a phone for the floor and in a browser for the office. Reconciling a month, restructuring a timetable or working through an import is work for a keyboard and a wide table. Both call the same functions through the same permissions — there is no second version of the truth.
| Page | Who can open it | What it is for |
|---|---|---|
| Overview | Owner | Money taken, recurring revenue, active members, class fill, who is in the building, sessions awaiting an outcome and the trainer roster. Each department is read separately, so one failing read shows a dash instead of blanking the page. |
| Members | Owner | One member, everything the gym knows: membership and plan, what they have paid, when they were last actually in the building, classes booked against attended, one-to-ones and their outcomes, passes. It separates a member who moved from classes to the gym floor from one who stopped coming — on the timetable alone those two look identical. |
| Timetable | Owner | Build a class or a weekly series with skip dates, check the capacity against the equipment register as you type, and open a class's roster to mark people present. |
| Sessions | Owner | The personal-training payroll: outcomes waiting to be marked, payroll by trainer, what is outstanding, what has already been settled, and an undo on anything marked wrongly. |
| Money | Owner | The price book, the memberships on it, and every payment recorded in the last thirty days. |
| Door | Owner, staff | Check people in and out, see who is inside, and sell or redeem a drop-in, a guest pass or a class pack at the desk. |
| Import | Owner | Paste a spreadsheet, see exactly what would be written, then decide. |
| Export | Owner | The other direction, deliberately next to Import in the console's own menu: the gym's whole record out as a folder of spreadsheets. What is in it, and what it is for, is the next section. |
Open a page your role does not cover and it says so plainly — the money is owner-only, the door is for gym staff — rather than showing an empty screen you would have to interpret.
Those are the eight this page explains, and they are not the whole console. Its menu carries thirty-one pages in five groups — Floor, Delivery, Money, My book and System — because a gym is not eight jobs. Floor is the overview, the members, the invitations, the retention list, the passes and the door; Delivery is the staff, the classes, the timetable and the one-to-ones; Money runs from the price book through online orders, revenue, costs, the accountant's month, tax and payroll to signing a month off; System holds analytics, the equipment register, the gym's own settings, the sites an owner holds, compliance, the activity log, the erasure queue, and the import and export. My book is the fifth, and it is there because an owner who still takes clients is one person: their own roster and their own earnings sit in the same console, kept separate from the gym's.
A gym you cannot export
is a gym that cannot leave.
So Export sits directly beside Import in the console's menu, and it is a page you open yourself rather than a request you send us. It writes the gym's whole record as a folder of spreadsheets — one file per part, a manifest and a plain-text README saying what is in it and what is not. Nothing about this is a retention feature: the point of writing it down here is that you can check it before you migrate rather than after.
| The part | What you would be leaving behind without it |
|---|---|
| the price book | what the gym sells and for how much |
| the member roster | who the members are |
| the gym’s own file on each member | contact numbers, next of kin, the medical note and what the desk wrote about each member |
| memberships | who holds what plan, since when, and in what state |
| payments | every payment the gym has recorded |
| the invoice register | what the gym billed, to whom, and what is still owed on it |
| what members bought online | every card payment the gym took online, and the Stripe reference each one reconciles to |
| the reconciliation marks | which payments and invoices somebody accepted as explained, and the reason they gave |
| what the gym paid out | everything the gym spent — rent, power, staff off payroll, maintenance, stock, insurance and the rest of what leaves the account |
| the months that were signed off | the figures each month was signed off on, who signed it, and what they were told was wrong at the time |
| the timetable | what was on the timetable |
| class attendance | who booked a class and who turned up |
| one-to-ones | one-to-ones delivered and what they were worth |
| pass types | what a drop-in, guest pass or class pack costs |
| passes issued | passes sold and the visits still owed on them |
| the door log | who came through the door and when |
| invites | who was invited and whether they joined |
| payroll settlements | what the gym actually paid its staff, and when |
| payroll adjustments | the bonuses, deductions, reimbursements and advances behind what the staff were actually paid |
| the equipment register | what the gym owns and what is due a service |
| the maintenance and accident book | when each machine was serviced, what the engineer found, and every incident recorded on one |
| the rota | who was rostered on the floor and when |
| member contact | the record that anybody was ever contacted about leaving |
| promo codes | what was discounted and how often it was used |
| the activity log | what happened in the building, as the database recorded it |
| PT packs sold | what the coaches sold through their own checkout |
| the documents people are asked to sign | the wording of every waiver, consent and set of terms, as each version stood |
| signatures | who signed what, when, and whether they signed it themselves |
| the filing cabinet | the contracts, insurance, certificates and incident reports the gym holds |
The right-hand column is not marketing copy written about the export. It is the sentence the console itself prints beside a part when that part cannot be read — the product's own account of what a gym would be walking away without.
What stops it lying about itself
- A part that could not be read is named, not omitted. It gets a file of its own saying so, the word “INCOMPLETE” goes into the name of every file in the bundle, and the manifest records that it is not complete. A folder in Downloads is read by its filename long before anybody opens the README, so that is where the warning goes.
- No read comes back short in silence. Each one either asks for a row more than it will accept and fails on getting it, or pages until it has the set. There is no third behaviour where a large gym quietly exports the first thousand rows of its door log.
- A slice says it is a slice. Take a month or a year rather than everything — this month, last month, the last ninety days, this year, last year, or two dates you type — and the bundle is labelled with the period and separately with the day it was taken, so two dates in one filename cannot be read as one. “Complete” on a windowed bundle is stated to mean nothing was lost to a failed read, not that this is the whole record.
- A missing column is absent, not blank. Where member email addresses could not be read, the roster ships with no email column at all and a note saying why — because an empty column reads as “this member has no address”, which is a different and worse thing to believe.
- Every run is written down. Who exported, what they took and when is a row in your gym's own record — which is what makes an export something you can be accountable for rather than something that merely happened.
One member, on request
The same page builds the record of a single person — their own file, memberships, payments, invoices, attendance, one-to-ones, passes, visits, invitations, contact history, what they bought and the events against them. It is named for the person, so a folder of them cannot be mistaken for a backup of the gym.
Spreadsheets, not our format
Comma-separated files in a zip, with a manifest and a README. Nothing in the bundle needs Repple to open it, which is the only definition of portable that is worth anything.
Where it is not
This is a console page, not a phone screen — the Studio app on your phone has no gym export in it. And the Export My Data button in any app's own Settings is a different thing entirely: that one hands you your own record as a person, not your gym's. Two exports, two meanings, and it is worth knowing which you pressed.
A trainer carrying clients
and running no sessions.
That is the signal an owner wants, and it is invisible on a headcount. Studio scores a trainer on the only two things a gym can honestly observe — how many clients they carry, and how many sessions they actually delivered — and it says which of the two is the problem in a sentence.
- Client load and delivery weigh the same — a full book is a dozen clients and twenty sessions a month, not a ceiling on how good anybody is.
- Idle sits outside the ranking — a brand-new trainer with nobody yet is not doing badly, and the roster refuses to call them that.
- The exposure, not the headcount — alongside how many trainers are flagged, Studio reports how many clients are sitting with them. One flagged trainer with thirty clients is not a small problem.
- Never a figure about what they pay Repple — an owner's dashboard shows the gym, not somebody's subscription. What a trainer's work is worth is priced at your fee, and only once every session has an outcome.
Trainer E is the row worth opening: six clients on the books and not one session delivered in thirty days. Trainer F joined last week — idle is a state, not a verdict, and it sits outside the ranking rather than at the bottom of it.
Your figures against your records
Two sources for one number,
and nothing comparing them.
The financial-health review works from figures you type — revenue, expenses, members, joiners and leavers — and it is honest that it is doing so. But your register already knows two of them: memberships on priced plans give recurring revenue, and memberships marked active give the member count.
Studio does not pick a winner. An owner typing a different number is usually right about something the records do not hold — a corporate contract invoiced offline, a price that changed mid-month — and silently overwriting that would replace one wrong number with another and lose what you know in the process. So it names both figures, says how far apart they are, and leaves the decision with you.
Anything inside two per cent is treated as agreement — rounding, a payment landing a day late or a mid-month price change should not raise a flag. Nothing at all recorded is reported as no record, never as a derived zero.
The parts that are not
built yet, said out loud.
A gym choosing an operating record deserves to know where the edges are before the migration, not after it. These are the ones that would otherwise be discovered in month two.
A membership needs a Repple account
A membership belongs to a person, not to a row of spreadsheet text. Somebody who has never opened Repple cannot be given one yet, and member rows in a CSV are validated rather than imported. The screen says so instead of failing quietly.
Not connected
There is a place for a ledger integration and it is not switched on. That is why the cash position on the overview is permanently a dash with the words "connect accounting" under it, rather than a number nobody can source.
Queued, not delivered
Push a promotion to your members and Studio reports how many it queued. Whether a notice arrives depends on each member's phone, so nothing here claims a delivery it cannot see.
A note to yourself, for now
The announcement box saves to your device and does not reach your trainers yet. The placeholder in the field says exactly that, so nobody writes an important message into it believing otherwise.
Promo codes are not counted
A promotion shows its code and its discount and nothing else, because nothing in the system increments a redemption count. A number that never moves is worse than no number.
No churn signal, no LTV
A lifetime-value figure needs a measured lifespan. Until there is one, Studio does not print an invented multiplier and call it analysis — it says the figure is not available.
Your gym's data,
fenced off properly.
- Rows
- Isolated at the database. Every table carries row-level rules keyed to your gym. Another gym's account cannot reach your rows even if its app asked for them.
- Roles
- Owner, trainer, member. Staff see their own clients and rota; owners see the business; nobody sees private coaching messages. The console enforces it page by page.
- Export
- Yours to take. Anyone with an account can export everything Repple holds about them as a file, from Settings, without asking a person for it.
- Brand
- Your colours. Set the name and the palette and it carries through what your members and coaches see, with a live preview before you commit to it.
Security & data is the long version: what a coach can and cannot read, why the test is “the owner of this gym” rather than “an owner”, and exactly what account deletion removes and what it leaves behind.
Straight answers
The questions worth asking before you move a gym's operating record into something new.
Can we bring our existing members and history across?
Payments and membership plans import from a pasted spreadsheet in full, with a preview first and a reason attached to every row it refuses. Member rows can be checked but not yet written, because a membership has to point at a real Repple account — so the members themselves join by invitation. Running the member check anyway is worth it: it finds the bad dates, the unreadable amounts and the columns nobody will recognise.
Do our trainers have to use it for payroll to work?
Somebody has to record what happened to each session — the trainer in Repple Coach, or you in the console. That is the whole point: the alternative is inferring delivery from the clock, which is how a gym ends up paying for no-shows. Until every session in a period has an outcome, the payroll figure tells you it is not final and names how many are outstanding.
What happens if a figure cannot be worked out?
You get a dash and a sentence saying what is missing — no session fee set, no priced plan on an active membership, no capacity recorded against these classes, no exits logged so no average stay. A confident number from a thin record is the most expensive thing a business tool can hand you.
Who can see what?
Access is enforced by row-level rules in the database rather than by what a screen chooses to render. Your gym's rows are unreachable from another gym's account. Trainers see their own clients and rota; you see the business; nobody sees the private messages between a coach and a client. The detail is in Privacy, and the mechanism behind it — including what a coach cannot see — is in Security & data.
Does it replace our door system?
It records visits — at the desk, from a member's entry barcode, or as an unattributed walk-in — and that log is what attendance, dwell time and last-seen are read from. It is a record of who came in, not a lock on the turnstile.
What currency does it work in?
Yours. There is no default currency anywhere in the system — a gym picks one of forty once, and everything written after that is denominated in it: the price book, a pass, a session fee, a recorded payment. Until one is picked, money renders as a dash and asks rather than guessing, which is deliberate; an amount printed in a currency nobody chose is worse than no amount. Change it later and nothing already recorded moves — a payment is a historical fact, so it keeps the currency it was taken in, and any total that would mix the two is withheld rather than added up.
Can we put our own name and colours on it?
Partly, and it is worth being exact about which part. A gym sets its own name and one accent colour. The name is the part that reaches your members: the app in their hand takes your gym's name, and their member card and member number are issued under it rather than under ours. The colour is not — it themes the console and an owner's own app, and does not reach the member or coach apps today. There is no logo upload for a gym, no gym-specific web address, and no gym-branded app in the App Store: a chain that wants its own apps under its own name is a build and an onboarding project rather than a setting, and it is a conversation to have before you sign rather than after. If branding is a large part of what you are buying, say so early and you will be told exactly where it stands.
What does it cost?
Pricing isn't published yet. The apps are in their first release and we would rather set it against how gyms actually use them than guess in advance. Email support@repplefitness.com, tell us how your gym runs, and we will talk plainly about it. Pricing sets out what can honestly be said in the meantime — including that a gym is billed per site rather than per member, and that no subscription is charged today — the one live charge being 10% of anything sold through Repple’s own checkout.
See the whole picture.
Tell us how your gym runs and what you currently cannot see. If Studio is not the right fit we would rather say so than sell you a migration.
Not on the stores yet — each button is that app’s permanent address and opens the moment its listing publishes. Create your account today and sign in when it lands.
