Help

Practical how-tos for everything in Warrior Competitions — from finding a gym and registering for an event to running timing, memberships, and league seasons. Jump to a section or search.

Getting started

You can browse gyms, register for public events, view results, and shop without an account. Creating an account unlocks family registration, QR check-in in the athlete portal, and gym or league tools.

Create an account

In the app: Sign up

Open Sign up and pick the account that matches how you will use Warrior Competitions:

  • AthleteSign up as an athlete. After you create the account you complete a short profile (birthday, gender, phone, and address) before the athlete portal opens.
  • ParentSign up as a parent. This creates a spectator-style account. You skip the extra profile questions so you can add children and register them right away.
  • Gym ownerSign up as a gym. New users create an account and a gym organization, then land in the gym app (Daily Dashboard). If you are already signed in, the same page adds a gym to your current account. The page warns that this creates a publicly searchable gym and is only for people who own or operate a physical gym.
  • League organizerLeague inquiry does not create an account. It emails the Warrior Competitions team so they can set up your league organization.

Every signup asks for first name, last name, email, a password (at least 10 characters), and agreement to the Terms and Privacy Policy.

LimitLeague organizers cannot create a new organization themselves the way gym owners can. Use the inquiry form or email 321go@warriorcomps.com.

Sign in and reset your password

In the app: Sign in

  1. Open Sign in and enter the email and password you used at signup.
  2. If you followed a link (event, invite, claim, or profile), you return to that page after sign-in.
  3. Gym staff land in the gym app. League staff land in the League portal. Athletes and parents land in the athlete portal at Home.

Forgot your password? Open Forgot password, enter your email, then use the reset link we send. The link opens a page where you set a new password, then you sign in again.

Verify your email

Signup sends a verification email. Open the link to confirm the address.

Until you verify, the gym app and athlete portal send you to a verification-required screen where you can resend the email.

In the app: Verify email required

Staff invites and membership claim links

A gym can send you two kinds of email links:

  • Staff invite — the gym emails you an invite. Create an account or sign in, then accept a gym role (admin, staff, coach, and so on).
  • Membership claim — the gym emails a claim link that connects their roster record to your Warrior Competitions account. Sign in or create an account, confirm, then open that gym in the athlete portal.

If you are already signed in, open the link and confirm. If you are not, create an account or sign in first — you will be sent back to the invite or claim afterward.

Find a gym

In the app: Find a gym

  1. Open Find a gym.
  2. Search by name or location. Switch between list and map. The page can use your location to sort nearby gyms.
  3. Open a gym card to visit that gym’s public Shop.

Signed-in athletes can also search from Find a gym in the portal and send a join request. See Finding and joining gyms.

Register for a public event

Gyms that turn on public registration share an event page anyone can open from a link.

  • Without an account — fill in the guest form for one athlete and pay the entry fee when the event charges a fee.
  • Signed in — use group registration to add yourself, a spouse, and children on one payment.

After payment you get a registration receipt with the athlete name, bib number (when assigned), and a QR code for event check-in. Keep that page or screenshot — staff scan the QR at the door.

League-linked events may require birth date and gender so the athlete can be classed into a division and wave. See Event registration and QR check-in for the signed-in flow.

LimitPublic registration only appears when the gym enabled it for that event. If you do not see a form, contact the gym or register from the athlete portal Events page when you are signed in.

View live and final results

Each public event has a results page (often linked from the event itself). It shows the hosting gym’s name and logo, the league name and logo when the event is local-league or major-league sanctioned, the live or final leaderboard, event status, a link back to the event, and a spreadsheet download when available. Exhibition events do not publish official results.

Open a run to see obstacle-by-obstacle splits, times, and points.

Signed-in athletes can also review their own completed runs under History in the portal.

Public league pages

Each major league has a public page at `/l/` plus the league’s short web name. It shows the logo, description, current season, sanctioned events (gym-hosted and league-hosted Finals), a ruleset summary, and public qualifications.

Athletes who keep a private profile are omitted from public qualification lists. Results for each event still live on that event’s host results URL.

LimitFind-a-gym and public shops list gyms only. League organizations do not appear in the gym directory.

Shop for camps, memberships, and merch

Each gym has a public shop. You can reach it from Find a gym by opening a gym card. Browse offerings (camps, birthday parties, open gym, field trips, gift cards, merchandise, memberships, and other items), search, add to cart, and pay online.

After checkout you land on an order confirmation. Shop-only birthday-party offerings can include a scheduling form on that page. First-class parties take a deposit when you book a party slot on the gym’s public calendar.

LimitMembership plans marked Public shop appear here. Plans marked Logged-in users only are purchased from the athlete portal. Manual assignment only plans are granted by gym staff as Comp / House / Staff — ask the front desk.

Book a class from the public calendar

Each gym can share a public calendar for classes, open gym, parties, camps, and field trips. Open sessions without age, skill, or team limits can be booked with name and email — no account required. If the session is full, you are added to the waitlist. Parties ask for honoree and guest count and charge a deposit. Camps and field trips ask for a camper form. Each paid linked shop quantity covers one calendar booking of that product (a second week, extra child, or extra party slot is charged again). Hourly open gym stays extra and does not use that shop credit.

Open classes with an age, skill, or team limit ask you to Sign in or Create an account, then book. You may be asked for a birth date if the class has an age range. Age errors mention the gym’s cutoff (Day of class or Jan 1 of class year). Skill or team-tag misses still say to contact the front desk.

A priced drop-in, party deposit, camp week, or open gym session/hourly price opens Stripe Checkout when the gym can take online payments. Open gym hourly uses hours × the hourly price and shows that hourly rate on the calendar. If you leave checkout, the seat is released.

LimitMembership-only classes, drop-in-off classes, and priced sessions (drop-in, party deposit, camp week, or open gym session/hourly) when the gym cannot take online payments stay front-desk. The athlete portal Classes page shows bookings you already have; it does not book new sessions.

Pricing

In the app: Pricing

  • Athletes and parents — accounts are free. You pay gyms or events only when you buy a membership, class, shop item, or event entry.
  • Gyms — no monthly Warrior Competitions subscription. Payments go to the gym through Stripe. Warrior Competitions takes a 1% platform fee on those transactions, plus Stripe’s card processing fees.
  • Leagues — onboarding is arranged with the Warrior Competitions team (the Pricing page lists $499 the first year and $299 each year after). League billing is not paid inside the app. Use the league inquiry or email 321go@warriorcomps.com.

Contact

Email 321go@warriorcomps.com. For gym-specific questions (schedule, membership, event day), message the gym from the athlete portal once you are a member or registrant, or contact them directly.

Athletes and Parents

Athletes and parents share one portal. Parents typically sign up as spectators, add children, and act on their behalf. Competitors complete a profile, keep a Warrior ID, and track runs, records, and gym memberships.

Athlete portal overview

In the app: Athlete Home

After you verify email (and, for competitors, finish onboarding), the sidebar includes Home, Profile, Family, Events, Leagues, Classes, History, Messages, Gyms, WC Athletes, Billing, Waivers, and Privacy.

The sidebar footer has Help, then Create a gym (if you are not already a gym owner), then Sign out. Create a gym opens a warning, then Gym sign up, and adds the gym to your current account.

RoleAthlete signup defaults to competitor mode and requires a short profile setup. Parent signup defaults to spectator mode and skips that setup. You can change your default event role later on Profile.

Home shows upcoming registrations, gyms you belong to, and a home-gym shortcut for messaging. Verify your email from the banner if you have not already.

LimitCreate a gym is only for people who own or operate a physical gym. It creates a publicly searchable gym. Athletes and parents should join an existing gym instead. Regular gym members stay in this portal for every gym. The portal switcher appears only if you also have a coach, staff, admin, or owner role at a gym or league.

Profile onboarding and Warrior ID

In the app: Profile onboarding

Competitors must complete birthday, gender, phone, and address before the rest of the portal opens.

Every account gets a Warrior ID (shown as Warrior ID #00001-style). It is assigned to you and displayed on Profile, registrations, and public profiles. You cannot edit it.

In the app: Profile

Edit your profile, public page, PRs, and medical notes

In the app: Profile

On Profile you can update:

  • Name, phone, birthday, address, and gender.
  • Display name / handle, bio, and goals.
  • Default event role: competitor or spectator.
  • Enable public profile — when on, signed-in Warrior Competitions users can find you on WC Athletes and on your public profile. The public page shows display name, bio, goals, Warrior ID, personal records, milestones, and major-league qualifications. The public URL is based on your legal name, not your display name.
  • Medical notes — stored encrypted. Visible to you, connected family, and front-desk staff at member gyms.
  • Personal records — add or delete from presets (pull-ups, lifts, run times, and similar) with an optional video link. These are manual achievements, not competition scoring.
  • Milestones — title, date, and description.

LimitPublic athlete pages require a Warrior Competitions sign-in to view. They are not open to the entire web.

Family and guardian connections

In the app: Family

Family is how parents manage kids and how households share event registration, history, waivers, and classes.

  • Add a child — create a managed athlete without email or password (name, birth date, gender, competitor or spectator). A guardian connection is created automatically.
  • Give login — later assign that child a real email and password so they can sign in themselves. You stay connected as their guardian and can still manage their registrations.
  • Remove child — detaches the managed link and revokes the guardian connection. Run history is kept.
  • Invite by email — spouse / partner, or someone who is a guardian of you. Pending invites can be accepted or revoked.
  • Copy gym messages to my inbox — per child or linked ward, so guardian inboxes receive copies of that athlete’s gym threads.

Once connected, you can register, view history, cancel class bookings, sign waivers, request to join a gym, and pay for memberships for yourself and the people you act for (managed children, plus accepted guardian and spouse connections in both directions).

Find a gym lets you request join for yourself, a spouse, and children in one submit. After the gym approves (or staff send a claim link), those roster people can be grouped into that gym’s household for multi-member discounts.

Finding and joining gyms

In the app: Gyms

  1. Open Gyms to see organizations you belong to and pending join requests.
  2. Use Find a gym (or the public Find a gym directory). At the top, choose who to request for, then send Request to join on a gym. People already on that roster are skipped.
  3. Wait for gym admin approval. Staff can also send a claim link to attach an existing roster record to your account.

On Home you can set or clear a home gym for a quicker “Message home gym” path.

Open a gym from Gyms for membership status, skill-level progress (read-only), gym messages, and links to that gym’s shop and events.

In the app: Skill levels

LimitSkill requirements are checked off by gym staff. Athletes can view progress but cannot mark requirements complete.

Memberships and billing

In the app: Billing

Two places cover money:

  • Per-gym membership — from the gym page, open Membership. Choose a plan for yourself and connected family who are already on that gym’s roster, then Checkout once. Plans in one cart must share the same billing interval and trial length. Multi-member discounts from the gym’s household settings apply automatically. If staff marked a plan Due, tap Pay now on that row when the gym’s payments are connected — you cannot add a second plan in the cart until that Due is paid, waived, or canceled. Manage billing lets you update the card or cancel when the gym uses online billing, including memberships you paid for.
  • Billing hubBilling lists subscriptions across gyms (yours and ones you pay for), outstanding Due and past-due items, and recent payments (event registrations, group checkouts, membership charges). Open a Due item to pay it on that gym’s Membership page. If a membership card fails, you (and the billing parent) get an email to update the payment method. Facility and class check-in may pause at the gym (after the gym’s failed-attempt setting) until the charge succeeds or staff allows check-in. Event tickets you already paid for still check in.

RoleManual-assignment plans are staff-only. Staff can mark a priced plan due (unpaid) or start Stripe checkout when the gym’s payments are connected. You or a billing parent can Pay now on a named Due plan in the portal when checkout is set up. Comp, House, or Staff on the member profile are admin waive kinds — real access types, not paid Stripe memberships. The page tells you to ask the front desk. Portal users cannot create membership types or issue refunds.

Event registration and QR check-in

In the app: Events

  1. Open Events and use Find to search upcoming events.
  2. Open the event page. Signed in, choose yourself and family members, pick waves when the event asks, and pay once if there is an entry fee.
  3. Upcoming registrations appear on Events. Open a registration to see status, bib, wave, participant mode, Warrior ID, and the QR check-in image.

You can open a registration if you are the athlete or the person who paid. Show the QR at check-in after the ticket is paid (free events count as paid). Staff can also check you in from the gym Daily Dashboard; unpaid pending tickets are rejected.

Major-league later-stage events require an active qualification from the previous stage unless the host marked the event open. Spectators can still register. Sanctioned checkout may add a non-refundable League fee line.

Past competitions belong on History, which lists completed runs (not the registration record).

LimitGuest checkout (not signed in) registers one athlete and emails a receipt with QR. Family group checkout requires a signed-in account. Later-stage major-league events cannot be registered as a guest — sign in as the athlete or a guardian.

Major league qualifications

In the app: Leagues

Open Leagues to see active qualifications for you and people you act for, with links to each public league page (`/l/...`). You always see your own qualifications here, even if your public profile is off.

Public league pages and public standings omit athletes who keep a private profile. Your public profile shows qualifications only when Enable public profile is on.

Classes

In the app: Classes

The portal Classes page is a monthly calendar of existing bookings for you, people you act for, and guest bookings that match your email. You will see the product name (class, open gym, party, camp, or field trip), gym, time, instructor, location, and status (booked, waitlisted, checked in, canceled, or no-show).

Cancel a booking from this page unless you are already checked in. If the gym’s cancel cutoff has passed, the class policy may block the cancel, record a late cancel, or record it and use a class punch. If you were waitlisted as a member or trial (including a covering member on open gym session/walk-up) and a booked seat opens, you can be promoted automatically. A priced drop-in, paid camp, paid party, or open gym hourly waitlist that would owe is not auto-promoted — ask the front desk or book again when a seat is open.

To book a new session, open that gym’s public class calendar (the gym can share the link, and it is also linked from the gym’s public pages). Open classes without age, skill, or team limits can be booked with name and email. Classes with those filters ask you to Sign in or Create an account, then book — you may be asked for a birth date if the class has an age range. Age errors mention the gym’s cutoff (Day of class or Jan 1 of class year). Skill or team-tag misses, and membership-only classes, still say to contact the front desk.

A priced drop-in, party deposit, camp week, or open gym session/hourly price opens Stripe Checkout when the gym’s payments are connected. Trial and covering-member class bookings are not charged that way. Covering members are also $0 for open gym session and walk-up; hourly is extra. Each paid linked shop quantity covers one calendar booking of that product; extra weeks or extra kids are charged again. If you leave checkout, the seat is released.

LimitThe athlete portal does not include a full class catalog or new-booking form. Use the gym’s public calendar or ask staff.

Run history and compare

In the app: History

History lists completed runs for you and people you act for, grouped by person. Columns include event, date, points, and time or DNF. Exhibition events are not saved to History.

Open a run for obstacle splits (cleared or miss, split times) and a compare board against other athletes in the same wave. Sharing a compare link keeps the two runs you picked.

Manual personal records still live on Profile; they are separate from scored competition runs.

Messaging gyms

In the app: Messages

Messages is a gym inbox — not athlete-to-athlete chat and not a private DM with a specific coach unless that person is answering from the gym.

You can message a gym if you are staff there, you have a member record there, or you have registered (or paid for a registration) at that gym.

  • Messages lists every conversation across gyms, including threads copied for a child when you turned on message copy.
  • Per-gym threads live under the gym hub → Messages. Start a conversation if none exist, then reply in the thread. Guardians can reply on behalf of a linked athlete.

Gyms can auto-delete messages after a retention period (often 180 days; the gym sets this). The thread notes that policy.

Waivers

In the app: Waivers

Waivers lists active gym waivers for organizations where you or someone you act for has a member record.

  1. Open a pending waiver, read the text, enter signer name and email, and sign on the signature pad.
  2. Signed waivers show the date and a PDF download.

LimitIf someone is not on that gym’s roster yet, they will not appear here. Join or claim the gym first, or ask staff to add them and capture a signature at the desk.

Privacy, export, and delete account

In the app: Privacy

  • Read the Privacy Policy and Terms.
  • Export my data downloads a spreadsheet of profile fields, personal records, milestones, connections, and registrations. Medical notes are omitted from the export.
  • Delete my account requires typing DELETE. This clears personal information, removes records and connections, anonymizes the email, and signs you out.

LimitThere is no separate password-change or notification-settings page. Use Forgot password if you need a new password.

Find other athletes

In the app: WC Athletes

Search public athlete profiles (accounts that enabled a public profile). Open a result to view their profile while signed in.

Switch to a gym or league portal

If you also work at a gym (coach, staff, admin, or owner) or a major league, the portal switcher at the top of the sidebar lists Athlete portal plus each gym and league portal. Pick a gym to open Daily Dashboard or Events; pick a league to open League home or Events.

If you create a gym from the athlete portal, an owner portal for that gym is added to the switcher. League organizations are created by Warrior Competitions after a League inquiry.

RoleRoster-only member or spectator roles do not get a gym or league portal. Stay in the athlete portal to register, message, and manage family.

Gym Owners

The gym app is for owner, admin, staff, and coach roles at an organization. Higher roles inherit everything below them. Member and spectator are athlete-roster roles — they use the athlete portal.

Roles and who can do what

Role order: Owner (highest) → AdminStaffCoach. Settings → Team includes About roles & permissions.

  • Owner — everything an admin can do, plus the only role that can change another team member’s role. You cannot demote the last owner until another owner exists.
  • Admin — settings, team invites, billing, Stripe Connect, waivers editor, membership plans, join requests, local league configuration, major-league host requests, Business Stats, Staff page, Can't work for any coach or staff member, and Cover a shift (assign a sub).
  • Staff — Daily Dashboard, Kiosk check-in, Desk POS, members (create/edit, not delete), classes, offerings, full event management (create/edit, courses/obstacles/waves/run order, registrations, check-in, advance athletes), live leaderboards, TV mode, spreadsheet downloads, Seasons / Local Leagues list (not local-league setup). Staff also get Can't work and Cover a shift (request or take a sub/swap).
  • Coach — events list, timing, leaderboard, rankings, finalize, Can't work (nights or times they cannot be scheduled), and Cover a shift (request a sub or swap, or take a teammate's open request). No members, classes, offerings, billing, or settings in the sidebar. After login, coaches land on Events; staff and above land on Daily Dashboard. Coaches still get the sidebar Time clock (Clock in / Clock out) on every gym page. Owners do not punch; they see who is clocked in on Daily Dashboard.

RoleMessaging: every gym role can send as the gym. Inbox read is always on for owner and admin. Staff and coach only see the inbox if Settings → Messaging enables Allow staff inbox or Allow coach inbox (both default off).

LimitThe sidebar hides items below your role, but some buttons on a page you can open still require a higher role. If an action is forbidden, you do not have that permission. Opening Settings, Billing, Staff, or another page above your role shows You don't have access with a link back to your gym home — not a crash.

Set up a gym

In the app: Gym sign up

  1. Create the gym at Gym sign up. New users enter name, email, password, and gym name — that creates the user, the organization, and an owner membership. If you already have an athlete or parent account, the same page asks only for the gym name and adds the gym to your current account. From the athlete portal, use Create a gym (between Help and Sign out) if you are not already a gym owner.
  2. Verify your email when prompted (new accounts).
  3. Open Settings (admin) to upload a logo, set the Find-a-Gym location, invite staff, and publish a waiver.
  4. Open Payment settings and complete Stripe Connect so the gym can take event, membership, and shop payments.

The sign-up page warns that this creates a publicly searchable gym and is only for people who own or operate a physical gym.

If you belong to more than one gym, you will be asked to pick the active gym after you sign in.

Daily Dashboard and front desk

In the app: Daily Dashboard

RoleStaff and above. Coaches do not get this page.

Pick any date. The dashboard shows today’s class/event/wave timeline, recent check-ins, unread messages, waves today, join-request counts (admins), Staff on duty from the admin shift schedule, Can't work today from coach availability, a front-desk Time clock, and append-only daily notes.

Use Time clock at the top of Daily Dashboard to record when staff actually start and end work (admin, staff, and coach). Owners see Clocked in now only — they do not Clock in or Clock out. Staff on duty is separate — it shows planned shift windows from Staff → Shift schedule. A Can't work badge appears on a shift only when that person’s Can't work times overlap that shift window — a morning shift does not badge for an evening Can't work. Can't work today still lists anyone unavailable at any time that calendar day.

Front-desk check-in searches members, scans registration QR codes, checks athletes into class sessions, and checks in event registrants. Search results show Due when staff named someone on a priced plan that is still unpaid, and Past due when a recurring card charge failed. When an event is selected, search a gym member and tap Add to event to register them in one tap — wave is guessed from Jan 1 age and gender (league events use league divisions). The same roster person record is used for classes and events. Facility and class check-in need a covering membership or a remaining punch. A covering plan is active, frozen, or past-due that is still open or staff-allowed. Unpaid Due memberships do not cover; a remaining punch can still get them in (and is used).

In the app: Kiosk check-in

RoleStaff and above. Coaches do not get this page.

Kiosk check-in is a tablet-friendly screen for the front desk. Search a member (or tap someone from Recent today, which includes facility and event check-ins) to open one status view: waiver on file, last name and birth date, membership active, Due, or Past due, remaining punches, registered for an Event today, and photo if their linked Warrior account has one. Check-in is blocked when last name, birth date, or the lifetime waiver is missing (same rule as Daily Dashboard) — use Edit profile or Sign waiver to finish. Facility check-in also needs a covering membership or a remaining punch. A covering plan is active, frozen, or past-due that is still open or staff-allowed — that visit does not use a punch. Unpaid Due memberships do not cover; a remaining punch can still get them in (and is used). Past-due restricted does not cover; a remaining punch can still get them in (and is used). Otherwise the kiosk refuses check-in until you sell a pass or assign an unattached card. Members with a paid ticket that is not already checked in are routed to event check-in (timing) even if membership is past due. Unpaid or already-checked-in event registrations stay visible but fall back to facility check-in. If they are registered for more than one paid event today, pick which event before check-in.

Use Quick add member on Daily Dashboard check-in to create someone with first name only when they walk up, or type first and last — the last name is saved if you include it. If someone with that first name is already on the roster, you are asked to confirm before creating another. You are taken to their profile to add last name (if missing), birth date, and an email, then sign a waiver. First-name-only records are not the legal roster entry — last name, birth date, and a signed waiver are required before check-in or class booking.

In the app: Desk POS

RoleStaff and above. Coaches do not get this page.

Desk POS sells generic day-pass products at the front desk. Open it from the sidebar Desk POS item or from Daily Dashboard → Desk POS. One-tap buttons add a Day pass (~$19), 6-pack, or 8-pack to the current sale. Use or Remove on the current sale to undo a tap. Staff can override line price before checkout. First-class Open gym walk-up is sold from the Open gym session on Classes, not as a class named Open gym.

A Day pass, 6-pack, or 8-pack can be a walk-in sale with no roster person. Punches stay unassigned until staff attach them from Desk POS recent sales (Assign) or on a member profile (Assign to this person). Charge to account still needs a roster person — punches from that sale go to that person.

At checkout, choose a Pay type. Card (Stripe Checkout) charges through Stripe when Connect is set up in Payment settings. Cash, check, gift card, and comp are recorded pay types only — they do not collect money in the app. Charge to account spends account credit on the attached member (or their household billing parent). Attach a member and make sure the credit balance covers the sale. Comp sales must total $0. Refunds are owner/admin only, ask for confirmation, void unused punch credits, and restore account credit when the sale was Charge to account. Confirming refund without an amount refunds what is still left. A later desk refund cannot exceed that remaining amount after earlier refunds. Staff may include one free ($0) line per sale; unlimited free inventory on one receipt requires owner or admin.

Facility and class member check-in on Daily Dashboard, Kiosk, and class check-in need last name, birth date, a signed waiver, and a covering membership or a remaining punch. A covering plan is active, frozen, or past-due that is still open or staff-allowed — that visit does not use a punch. Unpaid Due memberships do not cover; a remaining punch can still get them in (and is used). Past-due restricted members can still check in with a punch (it is used). Class email guests and paid event tickets are unchanged — they do not consume a punch.

Hardware card readers and receipt printers are not part of Desk POS yet. There is no card-on-file charge at the desk.

Last name, birth date on file, and a signed waiver for the member profile are required before front-desk check-in and member class booking — one waiver signature covers class, event, and front-desk check-in for that person at your gym (ongoing, not day-limited). Missing last name, birth date, or waiver returns a clear staff error; check-in and booking are blocked (not skipped). Event check-in still requires a paid ticket (including free events, which are marked paid) and a linked member profile; unpaid pending registrations return Ticket not paid.

Members roster

In the app: Members

RoleStaff can create and edit members. Deleting a member requires admin.

  1. Open Members to search and sort the roster (plan, status, billing badges).
  2. Add a member from Members → New (first and last name required, including encrypted medical notes), or use Quick add member on Daily Dashboard for first-name-only desk create.
  3. Open a member for profile, current vs past memberships, account credit, punch cards, invoices, lifetime revenue, attendance, waivers, skill progress, and a claim link to connect their Warrior Competitions account.
  4. Incomplete desk profiles show a banner until last name, birth date, and waiver are on file. Use Edit profile and Sign waiver from that banner. The waiver form needs a signer email — add email on Edit profile first if the desk record has none.
  5. Staff can capture a waiver signature from the member’s Waiver page. Sign a waiver before front-desk or class/event check-in — the same signature covers class, competition, and front-desk check-in for that member at your gym until a new waiver is signed.

Past due on the roster means a recurring card charge failed. Facility and class check-in pause after the gym’s Failed membership cards setting (default: first failure), unless staff allows check-in on the profile or the member has a remaining punch. The member profile and kiosk say whether access is paused, still open, or staff-allowed.

The member profile syncs Stripe-backed memberships when you open it. Use Refresh from Stripe if the period, status, or invoices look stale. Lifetime revenue is net of refunds and sums every recorded charge for that member (not just the latest few) — account-credit adds and transfers are not revenue. Failed membership charges appear on the invoice list as failed until the card succeeds.

Account credit is a running balance on the member, or on the household billing parent when they are in a household. Staff can Add credit or Remove credit with a reason (audited), and Transfer credit to another member at the same gym (search the roster). Transferring to someone who already shares that household billing parent is refused — they already share the household credit. Desk POS Charge to account spends this balance; a Charge-to-account refund restores it.

Punch cards show open-gym / day-pass and class-pack credits, including makeup class credits issued when staff cancel a class and check Issue a makeup class punch. Weather cancel checks that box by default; staff can uncheck it. Staff can Issue punch card, Transfer punches (search the roster), or Assign to this person from unassigned walk-in cards. Facility and class member check-in use a punch only when the person has no covering membership. Sell a pack at Desk POS without attaching anyone, then assign it before that person checks in.

A member can have one current membership. For a priced plan, staff must choose Mark due, Waive / comp, or Charge now — naming someone does not collect payment and never silently marks the plan paid. Mark due puts them on the plan as unpaid (Due); it does not cover facility or class check-in until paid or waived (a remaining punch still can). Staff can Cancel a Due row they assigned by mistake. The athlete or a billing parent can Pay now in the portal when the gym’s payments are connected. Waive / comp is admin-only and grants Comp, House, or Staff access with no Stripe billing — including on an existing Due row. Charge now requires Stripe Connect and opens Stripe Checkout; it does not insert a Due row. The current plan stays until payment succeeds, then auto-renews and cancels every other current membership. Free ($0) plans grant access with no payment choice. Starting another plan asks you to replace the current one. Due and waive/comp replace take effect immediately.

Freeze pauses billing (Stripe-backed) or access (non-paid). Optionally set a resume on date — Stripe unpauses on that gym calendar day, and the member profile or a desk/kiosk/class check-in also auto-resumes local access. Cancel on Stripe stops at period end; immediate cancel on non-paid types records a prorated credit in the audit log (informational only). Each membership shows an audit log of freeze, cancel, resume, assign, and past-due events. Reactivate on a past membership is hidden when the member already has a current plan.

Enable Prorate join when starting mid-cycle so Stripe aligns the billing cycle to the gym’s calendar period (1st of the month for monthly plans) and charges Stripe’s mid-cycle proration on the first invoice. Trial days skip cycle alignment. Intro price is not applied on that first Stripe invoice when Prorate join is on (alignment wins). Non-paid assign stores quoted cents in the audit log.

If a Stripe membership shows Expired (pending sync) or invoices are missing, refresh from Stripe or open Payment settings and replay unprocessed webhook events.

When a recurring membership card fails, the roster and Daily Dashboard / kiosk check-in show Past due. Facility and class check-in pause after the first failed attempt (admins can change that under Payment settingsFailed membership cards), unless staff taps Allow check-in or the member has a remaining punch. The member profile and kiosk say whether check-in is paused, still open, or staff-allowed. Stripe retries the card on its own schedule — the app does not change live Stripe retry rules. The member and billing parent get an email (tests and local preview only unless email is configured). A successful retry clears Past due. Staff can tap Allow check-in on the member profile to let them train while the card is still past due (this is audited). Paid event tickets still check in.

Households and family billing

In the app: Households

RoleStaff and above.

Group roster members into a household with one billing parent, optional partners (spouse), and dependents (children). Each member can belong to only one household per gym.

  1. Open Households in the sidebar (or from Members → Households).
  2. Choose New household, enter a name, pick the billing parent, and add other roster members as partner or dependent.
  3. Open a household to change the billing parent, change a member’s partner or dependent role, add or remove members, or delete the group (admin only).
  4. Configure the multi-member discount under SettingsHousehold settings — default is 10% off from the 2nd household member. Admins set how many people pay full price, then percent or a fixed amount off.

The Members roster shows each person's household name. Member profiles link to their household and show whether they are the billing parent, partner, or dependent. Account credit for anyone in the household is kept on the billing parent — transferring credit to another household member is refused because they already share that balance.

When staff Charge now or a parent checks out a family cart, the multi-member discount applies automatically if enabled. The billing parent's linked Warrior account is stored as payer when set. Split pay between two parents is not available yet.

When a parent or child with Family connections is approved or claims a roster profile, the gym creates or updates a household for people who already share this roster — it never moves someone who is already in another household.

LimitHousehold billing groups are gym-roster records. Athlete-portal Family connections stay the acting-as graph (register, waivers, messages). The same people can appear in both after they join or claim.

Join requests

In the app: Join Requests

RoleAdmin.

Athletes send join requests from the portal — including separate requests for a spouse or child. The list shows requester (for name) when they are acting for family. Approve or deny them here. Approved requests attach that person to your gym so they can see membership, waivers, and messaging, and may add them to the family’s household at this gym.

Membership plans

In the app: Membership plans

RoleAdmin. Waive / Comp / House / Staff, and freezing, canceling, or resuming a subscription, are admin. Staff can mark a priced plan due or start Charge now when Connect is set up.

Create plans with price, interval (day / week / month / year), trial days, optional intro price for the first N periods (more than one intro period is monthly plans only), and first class free (on Comp / House / Staff assign, the billing period starts after the first desk, kiosk, or class check-in). Charge now and portal checkout start at payment — use trial days to delay the first charge. Set a sales channel:

  • Public shop — listed on the gym’s public shop and available for athletes to subscribe in the portal.
  • Logged-in users only — athletes subscribe in the portal, not on the public shop.
  • Manual assignment only — staff can mark the plan Due on the member profile, or an admin can assign it as Comp, House, or Staff (for example after a skills test or for staff access). Those waived billing kinds are not paid Stripe memberships.

On the member profile, priced plans require Mark due, Waive / comp, or Charge now. Charge now needs Stripe Connect and a synced Stripe price on the plan, and keeps the current plan until payment succeeds. Due memberships stay unpaid until staff charges, the athlete pays in the portal, staff cancels, or an admin waives. Comp / House / Staff grant access with freeze, cancel, resume, and an audit log. They are not catalog types.

Give a gym-created plan a color and a catalog status: Prospective (draft — hidden from shop and assign), Active (sellable or assignable), or Canceled (retired). Prospective is a plan draft status, not a person. Sync the plan to the gym’s Stripe account so checkout and subscriptions work. Only active plans appear for new sales.

Use Refresh on a plan to create it in payments if it is not set up yet, or to update its name and description if it already is.

Skill levels

In the app: Skill levels

RoleAdmin builds the curriculum. Staff check off requirements on the member profile.

You can define up to 15 levels and 15 requirements per level, then reorder them. Athletes see progress read-only on their gym hub.

Schedule (week view)

In the app: Schedule

RoleStaff and above.

The Schedule page shows one week grid for the active gym: classes, open gym, Warrior Competitions events, camps, parties, and field trips together. Blocks are color-coded by type. Open gym, party, camp, and field trip are products you create on Classes — not a class named Open gym and not a class with a pizza note.

Each block shows the start time, instructor or staff name when known, and capacity as enrolled/max when the model has it. If the assigned coach marked Can't work for that time, the block shows Can't work. Tap a block to open that session on Classes, or an event page. Shop-only camps and parties (not linked to a Classes product) still link to Offerings. Multi-day camps and field trips appear on each day they run.

Use the week arrows or Today to move between weeks. Product editing stays on Classes and Events. There is not a second calendar.

Use Find a member at the top of the page to search the gym roster by name or email while the calendar stays visible. Results show membership status, plan, and current skill level when configured. Tap a result to open that member’s profile.

Classes and sessions

In the app: Classes

RoleStaff manage class templates and sessions. Booking actions require coach or above (staff inherit this).

Create a repeating or one-time Class, Open gym, Party, Camp, or Field trip on the same Classes calendar. Pick What are you scheduling? first. Saving generates upcoming sessions on this calendar — there is not a second schedule. You can later change this session only, or this and following sessions.

Open gym is a sellable product with Sell session, Sell hourly, and Walk-up. Session price uses the drop-in price. Hourly uses the hourly price. Walk-up books from the session (front desk). Covering members are $0 for session and walk-up; hourly is still extra. It is not a class template whose name includes Open gym.

Party takes a Party total and a Deposit charged at booking. The remainder stays due for the desk. Add-ons (pizza, extra hour) are structured extras, not a note on a class. Camp is a week (default 5 days) with the same waitlist as classes and a required camper form (emergency contact, allergies, pickup, shirt size, photo permission). Field trip is a dated trip with a destination and the same participant form.

Turn on Sell in shop to list the product in the public shop. Shoppers still book a session on this calendar (or the public calendar). Each paid linked shop quantity covers one calendar booking of that product — a second week, extra child, or extra party slot is charged again. Hourly open gym stays extra and does not use that shop credit. Shop-only camps and parties without a Classes product remain catalog items.

Each session has its own capacity. When the class is full, new bookings go to the waitlist. Canceling a booked or unpaid pending-payment seat automatically promotes the next waitlisted person who would not owe money (unpaid class waitlist, member/trial, or a covering member on open gym session/walk-up). Priced drop-ins, paid camp or party waitlist spots, and open gym hourly waitlists that would owe stay waitlisted until staff books them (or waives the fee) or they book again when a seat is open — they are not auto-promoted to a free booked seat. Canceling someone who was only waitlisted does not open a seat. If someone abandons Stripe Checkout, the unpaid seat is released and the same promote rule runs.

Set a Cancel cutoff, then a Late cancel rule: block self-cancel after the cutoff, allow and record the late cancel, or record it and use a class punch when the person does not have a covering membership. Staff can still cancel after the cutoff. No-show on the session roster records a missed class, and can use a punch under the same rule. Member class check-in still uses a covering membership or a remaining punch — including a makeup class punch from a weather cancel. Drop-in and trial roster bookings do not need a covering plan or punch to check in (the drop-in fee or trial already covers that visit).

The same session can mix member, drop-in, and trial (first class free) access. A drop-in price, party deposit, or camp week is charged through Stripe Checkout when Stripe Connect is on. Trial and covering-member class bookings stay $0. Covering members are also $0 for open gym session and walk-up. On the session, Add booking / Charge now opens Checkout; check Waive drop-in fee, Waive deposit, Waive camp fee, or Waive open gym fee (the label matches the product) to book cash-at-desk without a card. If Connect is off, the public calendar tells guests to contact the front desk, and staff still use the waive checkbox.

Optional filters: minimum/maximum age, minimum skill level, and a roster team tag. Age uses the gym’s Class age cutoff in Settings: Day of class or Jan 1 of class year. Booking errors name that cutoff (for example ages 8+ (Jan 1 of class year)). Change the cutoff from Settings or the link on the class form. Changing it does not re-check people already booked. Auto-book from a membership skips anyone who fails age, skill, or team-tag. Public guests can still book open classes with name and email. Age, skill, or team-limited open classes require a Warrior account (and a birth date if the class has an age range). Skill or team-tag misses still say to contact the front desk. Membership-only classes stay front-desk. A priced party deposit, camp week, or drop-in also stays front-desk when the gym cannot take online payments.

On a session, staff can Cancel this class (staff or weather). Weather cancel checks Issue a makeup class punch by default; Staff cancel leaves it unchecked. Staff can still override the checkbox. Or set a Substitute coach for that session only — saving is refused if that coach marked Can't work during the session or already covers a different overlapping shift or class. Saving the same substitute again is allowed. Coaches who are assigned can also Request a sub or Request a swap from Cover a shift. Open a class or session to manage bookings, waitlist, pending payment, check-in, no-show, cancel, or reschedule. The roster shows pending payment, balance due, and party extras (honoree, guests, add-ons) or the camper form. Deposit paid / pending / waived appears for parties only — camp, field trip, open gym, and class drop-in payments are not labeled as a deposit. Member bookings require last name, birth date, and a signed waiver on the member profile. Guest bookings and email-guest check-in are not gated that way. The Classes page has month and week calendars. For classes and events on one grid, use Schedule.

Assigning an instructor on a new class, or changing the instructor on a saved class, is refused when any upcoming session overlaps that person’s Can't work times or an overlapping shift or class they already cover. Promoting someone who already substitutes upcoming sessions of this class is allowed — those hours are not treated as a conflict. Saving other class details (name, capacity) with the same instructor keeps the existing assignment even if they now have overlapping Can't work times. Coaches and staff set Can't work times on Can't work and request coverage on Cover a shift. Admins can set Can't work or assign a sub for anyone on the team.

Offerings (shop)

In the app: Offerings

RoleStaff.

Manage the public shop catalog: camps, birthday parties, open gym, field trips, gift cards, merchandise, memberships, and other items. Advanced types include class, event, and competition offerings. Upload images and review shop-only birthday-party scheduling requests on this page. First-class parties, camps, open gym, and field trips are created on Classes.

Shoppers check out on the gym’s public shop, which you can share from Find a gym or the shop link on the gym’s pages. Linked Classes products still need a session booked on the Classes calendar after checkout. Each paid shop quantity covers one of those calendar bookings; extra weeks or extra kids are charged again.

Staff shifts, Cover a shift, time clock, Can't work, trainers, and commissions

In the app: Staff

In the app: Cover a shift

RoleAdmin for shift schedule, Time clock hours, reports, and assigning a sub. Coach and above for Can't work (self) and Cover a shift (own assignments, plus taking a teammate's open request). Admin can set Can't work or assign a sub for any coach or staff member. Admin, staff, and coach Clock in / Clock out. Owners see who is clocked in on Daily Dashboard.

  • Can't workCan't work. Coaches and staff mark repeating nights (for example every Tuesday 5:00 PM–11:00 PM) or a One date window. Times are this gym’s timezone. Admins can set this for anyone on the gym team. Saving an overlapping shift or assigning that person as a class coach is refused. Existing assignments stay until staff change them.
  • Cover a shiftCover a shift. The assigned coach or staff member Request a sub (open to the team, or ask someone) or Request a swap (same kind only: shift↔shift or class↔class). The swap list shows each teammate assignment's time in this gym's timezone. A teammate taps I'll take it. The requester or an admin can Cancel request — your own open request stays on Open requests so you can cancel it even after the assignment moves. Changing who is on that shift (Staff → Shift schedule) or saving a different Substitute coach on the class cancels the open request. Admins can Assign a sub without waiting — on Cover a shift and on Staff → Shift schedule. Saving is refused when that person already covers overlapping hours, or marked Can't work then.
  • Shift schedule — admin-planned on-duty windows (this feeds Staff on duty on Daily Dashboard). Times are this gym’s timezone. A shift that overlaps that person's Can't work times, another of their shifts, or a class they already cover will not save. Admins can Assign a sub here, not only on Cover a shift.
  • Time clock — Clock in / Clock out on Daily Dashboard and in the app sidebar. Admin, staff, and coach punch; owners only see Clocked in now on Daily Dashboard. Only one open punch per person; clock in again while still clocked in is rejected.
  • Time clock hours — owner and admin on this page. Filter by anyone who has clocked in and by time frame (current/previous payroll period, this month, last month, or custom dates). Start and end dates appear only for custom dates. Hours are clipped to the selected days. The summary includes a Total row. Open punches count through now and show as In progress. Punches still open after 12 hours show Still open — hours keep counting until Clock out.
  • Trainers — commission percent on event revenue.
  • Event assignments — link trainers to events.
  • 30-day staff report — assignment hours and commission (not time-clock punches).

Gym messages

In the app: Messages

RoleCoach and above can open Messages if they have inbox access. Owner and admin always do. Staff/coach need the toggles in Messaging settings. All gym roles can send.

  1. Open Messages to read member and registrant threads.
  2. Compose to individuals or to event registrant groups from Compose.
  3. Reply from the gym in a thread.

Admin settings at Messaging: enable messaging, allow staff inbox, allow coach inbox, and set auto-delete retention (default 180 days).

Settings, branding, team, and waivers

In the app: Settings

RoleAdmin for settings. Only owners can change another user’s role. Staff can view a signed waiver detail page.

  • Logo and location (used by Find a gym).
  • Payroll period — how often you run payroll (weekly, every two weeks, twice a month, or monthly) and which day a period starts. For every two weeks, pick a date that starts a pay period so later periods follow every 14 days from that date. Staff → Time clock hours uses this for Current payroll period and Previous payroll period.
  • Class age cutoff — which birthday date applies when a class has a minimum or maximum age: Day of class or Jan 1 of class year. Changing this does not re-check people already booked.
  • Skill levels, Messaging, and Waivers shortcuts.
  • Team roster and Invite team (admin, staff, coach, member, or spectator).
  • Waivers — create, edit, and publish waiver text; search signed waivers; open a signature for PDF.

Staff-assisted signing also lives on each member’s Waiver page.

Stripe Connect

In the app: Payment settings

RoleAdmin.

Each gym connects a Stripe account for payouts. Connect or continue setup, then open the Stripe dashboard when charges and payouts are enabled.

The page shows whether details are submitted, anything still required, payment-connection health, and the Warrior Competitions platform fee (1% by default). Complete this before selling memberships, shop items, or paid event entries.

Webhook health lists required Stripe events, including connected-account events. The unprocessed count and Replay unprocessed events are this gym only (up to 50 at a time) — leftover events from other Stripe accounts are not in the queue. Then Refresh from Stripe on the member profile.

Failed membership cards sets when facility and class access pause after a failed dues charge (default: first failure) and whether to email on every Stripe retry. Card retries stay on Stripe Smart Retries — saving these settings does not change live Stripe retry rules.

Billing and refunds

In the app: Billing

RoleAdmin.

Billing shows a 30-day collected total (charges minus refunds), monthly recurring revenue, and recent payments, with a link to payment settings.

Refund a payment (full, partial, or per participant on a group registration) from the refund dialog. Partially refunded payments stay refundable up to what is still left after earlier refunds. A later refund cannot exceed that remaining amount. Refunds go through Stripe on the connected account, including the platform fee.

Business Stats

In the app: Business Stats

RoleAdmin.

Gross revenue for 7/30/90 days and the daily trend exclude refunds. Refunds is a separate total for that range. Monthly recurring revenue, active members, retention and churn, revenue and attendance trends, top events (revenue net of refunds), demographics, hardest obstacles, and 12-month Revenue (net of refunds).

Events overview

In the app: Events

RoleCoach and above can list events and open an event. Creating and editing an event requires staff.

  1. Open Events. Coaches and above tap Start exhibition, enter Number of obstacles, Points per obstacle, and First names of contestants (one first name per line), then start the class timing session. It discards by default when you leave (confirm first if any times were recorded). Staff use New event for a full competition setup with name, schedule, location, description, entry fee, Open to the public, and League.
  2. If League is Local League event, pick this gym’s local league. If it is Sanctioned League, pick a major-league season this gym is approved to host, then Stage. League events always save results.
  3. Draft events stay internal. Publish when you are ready for registration and timing.
  4. The event page shows stats, a rules summary, setup links (staff and above), and competition tools (coach and above). Copy the public event link to share with athletes.

Open to the public starts unchecked on New event. Check it to let anyone register. Leave it unchecked so only gym staff can add participants.

Regular events and exhibitions use the same timing pad. The difference is whether the event is official.

  • Regular event — create with New event. It shows on Events right away. You can turn on Open to the public, charge an entry fee, attach a League, and share the public event page. Timed results can write athlete History, personal records, and public results. A league regular event can also write league qualifications. There is no Delete exhibition control on a regular event.
  • Exhibition — unofficial class or practice timing. Start from Start exhibition on Events. You cannot attach a League or turn on Open to the public. Times stay on the gym event only: they do not write athlete History, personal records, public results, or league qualifications.
  • Unsaved exhibitionStart exhibition builds a session from that short setup (obstacles, points, first names). It does not appear on the Events list. Leave or Discard removes it (confirm first if any times were recorded) unless you tap Save exhibition.
  • Saved exhibition — stays on your Events list so you can reopen timing later. Open the event and tap Delete exhibition to remove it and its times.

Local League events merge that gym league’s default ruleset. Sanctioned League events lock scoring to the season’s official ruleset. See Seasons / Local Leagues.

Event setup: courses, obstacles, waves, registrations, run order

RoleSetup — courses, obstacles, waves, registrations, and run order — requires staff.

  • Courses — build the layout; copy courses between events.
  • Obstacles — define obstacles on each course. New obstacles prefill Points from the event’s Default points per obstacle (set on New event or Edit event).
  • Waves — age/gender brackets, team relay, and membership-linked waves.
  • Registrations — add athletes, import a spreadsheet, assign waves, check in, and manage the roster. League events can auto-class by birth date and gender. For priced events, staff must choose Mark due, Waive / comp, or Charge now when adding someone — registrations are never silently marked paid. Due and waive/comp work without Stripe Connect; charge now requires Connect and opens Stripe Checkout. Check-in requires a paid ticket (including waived/comp and free events), a linked member profile, and a signed waiver on file; pending unpaid registrations cannot be checked in.
  • Run order — drag-and-drop start order.

On an event’s Registrations page, Add one contestant is for walk-ins and manual entries — it creates a person on the gym roster (email required) and links their event registration to that record. Bulk CSV import does the same for each row so those tickets can be checked in after a waiver is on file. If any row fails, none of the list is imported — fix that row and import again. Public web registration does the same. Add athlete requires first name, last name, gender, and email. Phone is optional. League events also need birth date so the athlete can be classed. Staff add on a league event needs league divisions that cover the athlete’s Jan 1 age (and gender if the division is gendered). Without a matching division, add is rejected. When the event has a fee, choose Payment before submitting: Mark due (unpaid), Waive / comp (no charge), or Charge now (Stripe Checkout) if Connect is set up. Re-adding someone who is already paid or checked in does not mark them due, start another charge, or clear check-in. After a paid day pass, use Make this a member on the roster row to open their profile and optionally assign a membership plan (opt-in; no auto-enroll). Add member to event uses the same roster person as classes.

When creating or editing an event, the Competition rules editor includes How this mode works (event setup) — plain-language copy for the selected format preset so staff know what Retry, Speed, Burnout, and other shipped modes do before event day.

Staff can also print or show a registration QR at the desk for check-in.

Timing and scoring

In the app: Events

RoleCoach and above.

On Events, tap Start exhibition, fill in obstacles, points, and contestant first names, then go to timing. Or open a saved event and tap Start Comp. The timing surface records runs on the device and uploads when you are back online — scoring does not stop if Wi-Fi drops.

The Competition rules card on timing and the event page explains the active format in plain language (retries, reset wait, first-fail behavior, best-of runs). The clock subtitle shows the mode headline. Expand Technical summary for the saved ruleset fields.

Unsaved exhibitions show Save exhibition, Discard, and Leave on the timing page. Leaving with no times discards silently; leaving with recorded times asks you to confirm. Saved exhibitions stay on the Events list until you open the event and tap Delete exhibition (confirm first). Full competitions keep their times and cannot be deleted from that control. Exhibitions never publish official records or public results.

After you tap Clear or Miss on an obstacle, timing moves focus to the next unscored obstacle and scrolls it to the top of the screen (phone/tablet). Clear and Miss use extra-tall tap targets in focus mode. If you tap the wrong one, switch to the other — the original split time stays.

Open an individual run to edit obstacle results — fields load the saved run data. Multi-course events: staff can advance athletes (top-N from one course to the next) from the leaderboard.

Time-limit and relative-time options on the ruleset editor are explained in Time limits and relative-time bonuses.

Time limits and relative-time bonuses

In the app: Events

In the app: Seasons / Local Leagues

RoleStaff sets these on New event or a saved ruleset. Admin sets them on New league. Coach and above run timing under those rules.

Time limit behavior controls what happens when a run goes past the time limit. Cap time at limit (first in the list, and the default on new custom rulesets including New league) records the run at the limit instead of a DNF. DNF when exceeded marks the run DNF. Older rulesets that never stored this setting still score as DNF.

When Relative time point bonuses (field-fastest per obstacle) is on, scoring adds extra points after obstacle points. For each obstacle an athlete cleared, the field’s fastest clear of that obstacle is compared to that athlete’s segment time: bonus is about default points per obstacle × (fastest time / your time), rounded. Matching the field-fastest time earns a full bonus for that obstacle. A faster clear earns more; a slower clear earns less.

LimitDNF runs do not set the field-fastest time and do not receive bonuses.

Leaderboards, rankings, and TV mode

RoleLive leaderboard and rankings: coach and above. TV mode and spreadsheet export: staff and above.

  • Live leaderboard — real-time results on the event.
  • Rankings — detailed ranks with wave/gender filters and athlete compare.
  • TV mode — fullscreen board for a display screen. Open it on the machine connected to the TV. Use Auto-scroll to turn looping scroll on or off (your choice is remembered on that browser). TV mode shows your gym name and logo (when uploaded in Settings → Branding) and, for local-league or major-league sanctioned events, the league name and logo.
  • Rankings compare — pick Run A and Run B at the bottom without jumping back to the top of the page.
  • Leaderboards — a gym-wide list of events with Live, TV, and download links.

Anyone can view public results from the event’s results link — they do not need an account. Exhibition event results stay on the event and are not published as official records.

Finalize an event and export

RoleFinalize: coach and above. Spreadsheet exports: staff and above.

When status is published or in progress, use Finalize on the event page. That locks scores and sets status to completed.

Finalizing an Exhibition event locks the night on the event but does not save official records or write league qualifications.

Download the leaderboard or registrations spreadsheet from the live leaderboard or the gym Leaderboards page.

Seasons / Local Leagues

In the app: Seasons / Local Leagues

RoleStaff can open the list. Creating or editing a local league, seasons, or divisions requires admin.

This menu is for gym-scoped seasons (the leagues you run inside this gym). It is not the major-league organizer portal. Major leagues are a separate organization type; see League Organizers.

On New league, Web address fills from Name as you type (lowercase letters, numbers, and dashes). You can edit it. Changing the name on an existing league does not rewrite the web address.

On the same page, Major league hosting lets an admin request to host an active major-league season or accept a league invitation. The league can reject a pending request or revoke an active host. Only an active host can pick that season and stage when creating an event.

On New event or Edit event, League is one choice: Not a league event, Local League event (then pick this gym’s local league), or Sanctioned League (then pick a hosted major-league season and stage). An event cannot be both a local league event and a sanctioned major-league event.

League Organizers

A major league is its own organization with type League. After Warrior Competitions creates it, you sign in and use the League portal (Home, Seasons, Rulesets, Hosts, Events, Qualifications, Messages, Settings). Gym-scoped seasons stay on gyms under Seasons / Local Leagues.

How major leagues work

A major league is an organization, like a gym, with organization type league. It reuses the same team roles, events, timing, tablet sync, and Stripe Connect. Gym-only tools (Daily Dashboard, Members, Classes, Offerings, gym Billing, Staff, Business Stats, local leagues) are hidden.

RoleOwner and admin configure seasons, rulesets, hosts, and settings. Staff can view Home, Seasons, Hosts, and Qualifications, and can create and run Events (including league-hosted Finals). Coach and above can run timing.

The portal switcher lists Athlete portal, each gym you staff, and each league you belong to. Switching uses the same active organization.

In the app: League home

Request a league organization

In the app: League inquiry

  1. Open League inquiry (or email 321go@warriorcomps.com).
  2. Describe the league, region, scale, and rules. You can fill the ruleset editor on that form.
  3. Wait for Warrior Competitions to create the league organization and make the contact an owner. Then sign in and open the League portal.

League platform pricing ($499 the first year, $299 after, as listed on Pricing) is arranged with the team. There is no league subscription payment inside the app. Stripe Connect on the league is for athlete league fees and Finals registrations, not that platform fee.

LimitThe inquiry does not create an account or a league. Do not use Gym sign up if you only need a league organization.

Seasons, stages, and rulesets

In the app: Seasons

In the app: Rulesets

RoleAdmin creates and archives seasons and rulesets. Staff can view them.

  1. Create a named, versioned ruleset on Rulesets (for example 2026 UNAA Rules).
  2. Open Seasons → New season. Set name, dates, age-determination date, league fee, and the official ruleset.
  3. On the season, add stages in order (Qualifiers, then Finals). Later stages require an active qualification from the previous stage unless an event is marked open.
  4. Clone previous season copies the ruleset pin, stages and advancement, fee, and host gyms as pending invitations (gyms must accept again).

Only one season should be active at a time. An active season does not pick up later edits to a ruleset — pin a new version if you need changes.

On a ruleset, Time limit behavior defaults to Cap time at limit for new custom rulesets (first in the list): the run is scored at the limit instead of a DNF. Relative time point bonuses (field-fastest per obstacle) add extra points from how each cleared obstacle compares to the fastest clear of that obstacle in the field. Matching the field-fastest time earns a full bonus (default points per obstacle); faster earns more, slower earns less. DNF runs do not set the field-fastest time and do not receive bonuses. See Time limits and relative-time bonuses.

The league fee is a fixed amount for the season. Gyms collect it on sanctioned registration as a separate League fee line (non-refundable). Finals hosted by the league can include that fee too.

  • Advancement: top N, top percent, or the greater of the two.
  • If fewer athletes than top N finish, all eligible athletes qualify.
  • Percent uses ceiling rounding. Combined-result ranking is available per stage.
  • Roll-down: athletes who already qualified for that stage do not consume slots at later events in the same stage.

Host gyms

In the app: Hosts

RoleAdmin invites or approves. Staff can view the list.

Hosting is bidirectional and scoped to a season. The league cannot host-authorize itself — league-hosted Finals do not need a host row.

  • League invites a gym → the gym accepts on Seasons / Local Leagues.
  • A gym requests a season from Seasons / Local Leagues → the league Approves (active) or Rejects (rejected).
  • League can Revoke an active host (revoked). Host rows expire automatically when the season ends or is archived.

LimitOnly an active host can attach a gym event to that season and stage.

Sanctioned events and Finals

In the app: Events

RoleCoach and above time and finalize. Creating or editing an event requires staff.

League-hosted Finals are normal events whose organization is the league. Use Events the same way a gym does: courses, waves, timing, leaderboard, TV mode, finalize.

Gym-hosted sanctioned events pick League → Season → Stage. Official scoring is locked to the season ruleset. Gyms still set name, dates, entry price, and waves.

Uncheck Require prior-stage qualification only for open or wildcard events. Spectators are never gated.

Qualifications

In the app: Qualifications

When a sanctioned event is finalized, the league writes official qualifications immediately from that stage’s advancement rules (combined result when the stage asks for it). First source wins if the athlete already qualified. Parallel events in the same stage each run this independently.

Public lists on /l/your-league omit athletes who keep a private profile. Staff still see every name here.

LimitThere is no manual override in this version. Team, relay, and head-to-head league advancement are not included.

Settings, logo, Connect, and contact

In the app: Settings

RoleAdmin.

  • Logo — shown on the public league page, sanctioned event chrome, TV mode, and emails.
  • League profile — public description and contact method (in-app messaging, email export, or both).
  • Team — invite admin, staff, or coach (not member or spectator).
  • Payment settings — Stripe Connect so league fees and Finals payouts can land on the league account.
  • Messaging — same inbox tools as a gym, keyed to the league organization. Eligible athletes are sanctioned-event registrants, qualified athletes, and guardians who copy gym messages.

Email export downloads contacts the league is allowed to reach. Guardians are included only when Copy gym messages to my inbox is on for that athlete.

In the app: Public league page