<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" />

Gym Owner — User Guide

You run the business. MyTrainerOS gives you the tools to provision your team, manage members across one or more locations, set policies, and see exactly how the gym is performing — without the eight-app shuffle.

At-a-Glance (5-minute orientation)

After signing up as an Owner, complete these in order:

Settings opens from the avatar in the header — it is not one of your bottom tabs. Your tabs are Home, Members, Trainers, Schedule, Business and More.

  1. Complete owner onboarding. Eight stages: Profile, Delivery Mode, Facility, Training, Payments, Team, Import Data, Branded URL. This is where your facility details are captured.
  2. Connect Stripe. Settings → Stripe Connect, in the Payments group. You can't collect payments until this finishes.
  3. Invite your team. Settings → Invite Management. Trainers and admin assistants both come from here.
  4. Set your cancellation policy. Settings → Cancellation Policies, in the Business Tools group.
  5. Bring your members in. Use the Import screen on your dashboard for a spreadsheet, or invite them individually.

Once those five are done, your gym is operational. Everything else (scheduling, programs, marketing) is layered on top.

In-Depth — User Stories

US-OW-001: Set up the facility

Settings is not a tab. Your tabs along the bottom are Home, Members, Trainers, Schedule, Business and More. Settings opens from the avatar in the header, at the top-right of any screen.

The facility screen is currently unreachable. It is built, and it saves, but nothing in the app links to it — it is not in Settings and it is not under More. Until that is fixed there is no honest sequence of taps to give you. Your facility details are captured during owner onboarding instead.

When you do reach it, the fields are: facility name, description, address, city, state, ZIP code, country, phone, email and website.

Not on that screen, despite what this guide used to say: time zone, business hours, and logo upload. None of the three exist there. Your logo and colours live on the Domain & Branding screen, which you reach from your dashboard.

US-OW-002: Connect Stripe and start collecting payments

  1. Settings → Stripe Connect, in the Payments group.
  2. You're handed off to Stripe. Provide business details, bank account, and verify identity — this is Stripe's own flow, and how long it takes is up to them, not us.
  3. When Stripe finishes you land back in Settings, and the Stripe Connect row shows your connection status. If Stripe still needs something from you, that row says so.

The Payments group also holds Billing & Plan (your own MyTrainerOS subscription), Pricing Tiers and Payment History.

Important: MyTrainerOS takes 0% commission on what you collect. Your subscription covers the platform; the trainer keeps 100% of every member payment. See the pricing page for current plans.

US-OW-003: Invite a trainer

  1. Settings → Invite Management.
  2. Enter the trainer's details and pick the role:
  • Trainer — coaches their own roster of members.
  • Admin assistant — front desk, with permissions you grant individually.

There is no "Trainer + Admin" role. The roles the system actually has are trainer, client, gym owner, gym staff, admin assistant and admin — an earlier version of this guide invented a combined one.

  1. Tap send.
  2. The trainer gets an email and completes a 5-step onboarding: Profile, Delivery Mode, Business, Availability, Template.

Note what is not in that flow: there is no certifications step, and no Stripe Connect step. A trainer who needs to take their own payments sets Stripe up afterwards from their own settings.

US-OW-004: Add a member directly

  1. Settings → Invite New Client, or Settings → Invite Management if you want to see and manage everything you have already sent.
  2. Enter their details and send.
  3. The member receives a setup email and completes their own 8-stage onboarding.

Invite Management is also where you resend or revoke an invitation that has gone stale.

US-OW-005: Configure cancellation policy

  1. Settings → Cancellation Policies. (There is no "Policies" submenu — it sits directly in the Business Tools group.)
  2. Set the Cancellation Window. This is a dropdown, not a free-text field: 1, 2, 4, 8, 12, 24 or 48 hours.
  3. Set the Late-Cancel Fee ($) and the No-Show Fee ($).
  4. Save.

Both fees are entered in dollars, to two decimal places — not in cents. Leaving a fee at 0.00 is how you run free cancellation.

The policy applies to every new appointment immediately. Existing appointments keep their original policy (audit trail preserved).

US-OW-006: View business analytics

There is no Analytics tab. Go to More → Analytics & Reports, which gives you two:

  • Facility Analytics — utilization & KPIs.
  • Growth Analytics — new members this month, active members, churned in the last 90 days, average sessions per member, cohort retention, and the referral funnel.

The same menu also holds CRM Pipeline and Email Campaigns.

Both analytics screens require a plan that includes advanced analytics. On a plan that does not, tapping through lands you on an upgrade page naming the feature rather than refusing outright — that is the gate explaining itself, not a bug.

Removed as fabricated: an adherence/compliance heatmap. That component exists in the codebase but is not placed on any screen, so there is nothing to open. Ignore any advice telling you to use it to spot at-risk members — use Growth Analytics' churn figure instead.

US-OW-007: Multi-location management (Studio tier)

What works today: if your account has more than one facility, a facility switcher appears in the header and lets you switch between them or view All facilities. It stays hidden if you only have one, which is why most owners never see it.

What does not work today: there is no screen for adding or editing a location, and no per-location analytics rollup. Both are built but neither is wired into the app — nothing routes to them. This guide previously walked through "Settings → Locations → Add location" and "Analytics → Locations". Neither exists. Getting a second facility onto your account is a conversation with us for now.

Also removed as fabricated: assigning a trainer to specific locations via Trainers → [Trainer] → Locations. There is no such screen.

This was never franchise management, and it is not becoming that — MyTrainerOS is built for solo trainers and small studios.

US-OW-008: Run a CSV member import

The importer lives on your dashboard, not under Members — it is the Import screen there.

The member layout is 8 columns, not 15:

  • Full Name — required
  • Email — required
  • First Name, Last Name, Phone, Emergency Contact, Notes, Tags — all optional

Column headers are matched loosely, so e-mail, mail and email address all resolve to Email, and member name resolves to Full Name. You do not have to match our spelling exactly.

There is no joined-date column and no trainer-assignment column. This guide used to claim both, and used to claim trainers were matched by display name. They are not — assign trainers after the import.

  1. Upload the CSV.
  2. Review the preview.
  3. Import.

The limit is a 10 MB file size, not a row count. The "up to 500 rows per batch" figure was wrong.

US-OW-009: Custom domain (white-label)

  1. Settings → Domain Management.
  2. Enter your domain (e.g. app.mygym.com). MyTrainerOS provisions a Firebase Hosting site for it.
  3. Update your DNS — copy the CNAME target shown in the UI. The page shows a live verification badge that flips to Verified when DNS propagates (usually 5–30 minutes).
  4. Once verified, members log in at your domain. The MyTrainerOS branding is replaced with your facility's logo and colors.

Availability: white-label custom domain support is included on the Studio tier. See the pricing page for what each plan includes.

Filing a support ticket

You can file a support ticket from the Help section of the app. Tickets are handled by MyTrainerOS staff — this is support for you as the business, not the channel your members use to reach you.

When to file a ticket vs. check the help center

Search the help center first — it is faster than we are, and most "how do I…" questions are already answered there. File a ticket when:

  • Something is broken, not just unfamiliar.
  • You've found the right help article and it doesn't match what you're seeing.
  • Money is involved — a payment, a payout, a refund, or a subscription.
  • It affects a member, not just you.

As an owner, two things are worth flagging as urgent and are the reason the Urgent tier exists: you cannot take payments, or your trainers cannot access the app at all. Both stop the business, not just a workflow.

These are the response targets we publish. Severity is chosen when the ticket is created.

SeverityFirst responseResolution target
Urgent — production down, you can't take payments<2h business<24h
High — a feature is broken, or a member is blocked<8h business<72h
Normal — how-to questions, minor bugs<24h business<7 days
Low — feature requestsacknowledged within 7 daysno commitment

What to include

The difference between a ticket resolved on the first reply and one that takes four round-trips is almost always the detail in the first message. Include:

  • What you were trying to do, in one sentence.
  • What happened instead — the actual message or behaviour, not a paraphrase of it. If there was an error, quote it exactly.
  • Steps to reproduce, numbered, starting from a screen you can reliably get back to.
  • A screenshot, if anything was visible on screen.
  • Who it affects — just you, one member, or everyone. If it's a specific member, include their member ID rather than their name.
  • When it started, and whether it has ever worked.

Please don't paste health details into a ticket. We don't need a member's measurements, injuries, or nutrition history to fix a software bug, and a ticket is not the right place to store them. A member ID is enough for us to find the right account.

Owner-specific detail worth adding: which location (if you run more than one), whether it affects one trainer or all of them, and whether the member in question was imported via CSV or signed up directly — import-related issues and signup issues have completely different causes.

Tracking status

Every ticket moves through four states:

  • Open — filed, not yet picked up.
  • In progress — someone is actively working on it.
  • Resolved — we believe it's fixed and we're waiting on you.
  • Closed — finished.

A resolved ticket stays reopenable for 7 days. Reply within that window and it reopens; say nothing and it closes automatically. Closing is not a deadline on you — if the same problem comes back later, file a new ticket and reference the old number.

If you're stuck

If a ticket has gone past its first-response target above, reply on the existing ticket rather than opening a second one — a reply bumps it, and duplicate tickets split the history across two threads and slow things down. If the problem has got worse since you filed (it started as a question and is now blocking payments), say so in a reply and ask for the severity to be raised. Severity is not fixed at intake.