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:

  • Athlete — Sign up as an athlete. After you create the account you complete a short profile (birthday, gender, phone, and address) before the athlete portal opens.
  • Parent — Sign 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 owner — Sign 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. Gym name must be unique. Capitalization and spaces at the start or end do not make it a different name. If that name is already used by a gym, league, or franchise organization, the page shows an error and the gym is not created.
  • League organizer — League Inquiry does not create an account. It emails the Warrior Competitions team so they can set up your league organization. League name must be unique among gyms, leagues, and franchise organizations. Capitalization and spaces at the start or end do not make it a different name. If that name is already used, the form shows an error and the inquiry is not sent.
  • Franchise HQ — Start a Franchise HQ. Sign in first (create an athlete or parent account if you need one). The page then adds a Franchise HQ to that account. It sits above gyms so you can see locations side by side. It does not replace a gym, and it does not create a league. Location owners still run each gym. When a location owner accepts an invite, they can link a gym they already own or create a new gym. Linking is only for a gym they own that is not already in a franchise. The name must be unique among gyms, leagues, and other franchise organizations.

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, profile, or Notification Preferences), 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, the athlete portal, and a trial page for an email already on the roster send you to verify that address. There you can resend the email or delete the account. Gym tools, portal changes, shop checkout while you are signed in, and starting another gym wait until that link is confirmed.

A membership claim link, a family connection invite, or a staff invite can still be accepted. Downloading your data waits until the email is verified.

Messages from Warrior Competitions include the company’s mailing address and a Manage notifications link. The unsubscribe link asks you to confirm. After you confirm, Notification Preferences says optional emails are turned off. A link with extra characters says the link is not valid. Verification and password-reset mail keep arriving after you unsubscribe from optional emails.

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.

You can accept a staff invite before the email is verified. Gym tools stay closed until you confirm the address.

Find a Gym

In the app: Find a Gym

  1. Open Find a Gym.
  2. Search by gym name or city. Switch between list and map. The page can use your location to sort nearby gyms.
  3. A gym with one site appears once, under the gym name, and opens that gym’s shop. A gym with two or more sites appears once per site, titled with the gym name and city, and opens that site’s shop.

Signed-in athletes can also search from Find a Gym in the portal and send a join request. See Finding and Joining Gyms.

If the gym turned on a trial page, you can also Try a First Class from that gym’s shop or public calendar.

Try a First Class

A gym shares a trial page link with you. The path is public landing page → sign the waiver → pick a first class. You do not need an account or payment to start.

  1. Open the gym’s Try a First Class link (also on the gym shop and public calendar when the gym has it on).
  2. Enter the athlete’s name, email, birth date, and last name. A referral code is optional.
  3. Sign the gym waiver if the gym has one published.
  4. Pick a first class that the gym marked for trial. That booking is free. If the class is full, joining the waitlist does not finish the trial. If that waitlist spot is canceled, you can pick another class.

A person who signs up for a trial becomes a Prospect on the gym roster — not a draft membership plan. Booking the first class does not require payment and does not start a paid membership. A personal referral code cannot name the same person who is signing up. The page shows that error and stays on this step.

A brand-new email can continue without an account. If that email is already on the gym’s roster, the page does not open that record, show the name, sign a waiver, or book a class unless you are signed in with a verified account for that person (yourself, someone you act for, or the same verified email when the roster row has no login). If several people share that email, the page continues only when that account matches exactly one of them. Otherwise it asks you to sign in, or to verify your email if you are already signed in, or to talk to the front desk. An existing name, birth date, and member status stay as they are. Warrior Competitions does not email you from this page unless the gym later clicks Send in Messages.

LimitThe public class calendar guest booking is still a drop-in or waitlist booking. It does not create a prospect. Use Try a First Class when the gym wants the public landing page → sign the waiver → pick a first class path.

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. An event that is not open to the public accepts a registration only from a signed-in verified account whose home gym is in that league. The form email has to be that account (or someone that account acts for).

Guest checkout signs the host gym’s waiver for that signup only. A signature for one registration does not cover a different registration that uses the same email. Typing a member’s email does not skip that waiver and does not open their roster record. Each athlete has their own profile and waiver. Using a parent’s email does not put a child on the parent’s profile, and the parent’s waiver does not cover that child. When the name and date of birth match a person at that gym but the email is different, the registration can use that profile. It does not change the profile’s email, phone, or emergency contact, and check-in stays blocked until a host waiver is signed for that registration. A signed-in checkout does not replace an unclaimed walk-up. That signup gets its own registration. The card payment and the host-waiver signature stay on that new registration. A matching email does not file them on the front-desk walk-up person. The same name and email without a birth date cannot buy a second ticket for that event, and that signup does not attach to the other person’s profile. An athlete under 18 has the parent or guardian recorded as the person who signed. The signature is stored on that registration. When the email differs from the child’s roster profile, it is not filed on that profile. The parent or guardian is the signer. Guest checkout does not show the host waiver until that name is entered, and it does not continue without it. A minor who does not name a parent or guardian is not registered. The signature stores that person’s name, and their relationship and email when those are entered. An adult is recorded as signing for themselves. On Host Waiver, a minor enters the parent or guardian name and relationship. An adult can leave those blank. A signed-in family registration links each athlete when the first name, last name, and birth date match a person at that gym. That link does not change the person’s email, phone, or emergency contact. A different email still needs a host waiver on that registration.

LimitPublic registration only appears when the gym enabled it and has not closed online registration. A finished event stays on its public page with results, and the form is closed. Draft and archived events stay hidden. 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). A finished event stays on its public page with a link to results. 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 and parents review official runs on History. Official event results are saved to the athlete portal. That includes sanctioned league events, local league events, gym events that are not in a league, and events at another gym. Walk-up and guest registrations show up after that roster profile is linked to the athlete’s account. Class exhibitions and practice timing stay at the gym. Exhibitions stay off History.

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. A gym with one site opens that shop directly. A gym with several sites asks you to Choose a Location, then opens the shop for that city. Browse offerings (camps, birthday parties, open gym, field trips, gift cards, merchandise, memberships, and other items), search, add to cart, and pay online. When the gym turned on a trial page, the shop header includes Try a First Class.

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. When the gym turned on a trial page, the calendar also links Try a First Class.

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. Signed in, use Who is taking this class on this calendar or on Classes in the athlete portal to book for yourself or someone you act for.

Pricing

In the app: Pricing

  • Athletes and parents — Athletes and parents never pay Warrior Competitions fees. You pay the gym or the event only when you buy a membership, class, shop item, or event entry.
  • Gyms — Gyms pay 1% of gym-management card sales (memberships, classes, POS, the shop, parties, and passes) and 1% of competition entry fees. All of those fees count toward a $30 a month minimum per location. A gym with 3 locations has a $90 minimum. There is no minimum for the first 60 days. The 1% still applies during the first 60 days. Athletes and parents never pay Warrior Competitions fees. Billing months run on Central Time. The $30 minimum for each location starts on the first full Central Time month after that location’s 60 days, with no charge for a partial month. Billing months run on Central Time. A location that starts July 15 has no minimum through September 15. Its first billed month is October. The 1% still applies during those 60 days. Warrior Competitions helps start and grow ninja. When they win, we win, and all of ninja wins. Gym-management card sales and competition entry fees both count toward that minimum. The $30 minimum is per location. Sites are billed separately. A waiver delays only that location’s $30 minimum. The 1% still applies during a waiver. The 1% counts toward that location’s $30. Athletes and parents never pay Warrior Competitions fees. About seven days before that first month starts, the owner gets one email. A missed day is sent once on the next daily run. A charged month’s receipt shows that location’s minimum, the fees collected, and the difference charged, and it says billing months run on Central Time. End billing on a location stops only that location’s $30 monthly minimum. End billing in Payment Settings stops only the $30 monthly minimum. That month can still show a floor and an estimated shortfall. A later month shows a $0 floor and a $0 estimated shortfall. The 1% fee on card sales continues, and the gym can keep taking payments. Payments go to the gym through Stripe. Stripe's standard processing fees apply on top.
  • 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.

What's New

In the app: What's New

Open What's New from the public footer or the top of the site. It lists release notes in plain English. You do not need an account. A note appears there after it is approved.

Contact

In the app: Contact

Open Contact from the footer. Enter your name, email, a topic (Question, Suggestion, or Bug), and a message, then choose Send message.

The message goes to support@warriorcomps.com. That address is shown under the form. A confirmation email comes back to the address you entered.

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, Privacy, Notifications, and Suggestions.

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. If that gym name is already used by another gym, league, or franchise organization, including a difference in capitalization only or spaces only at the start or end, the page shows an error and does not create the gym.

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. From the same login you can book or cancel a class, see punch cards and account credit, pay a Due membership, update the card on file, sign a waiver, see a child’s class schedule and level progress, and register for a competition.

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. The form still opens when the account has no athlete profile yet and no encryption key. Continue creates that profile.

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, competition results, and major-league qualifications. Results include events the gym added you to once that roster profile is linked to your account. 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). A gym with one site is listed once. A gym with several sites is listed once per city. At the top, choose who to request for, then send Request to join on a card. That card’s site is where you become a member. People already on that roster are skipped.
  3. On a gym you already opened, open Membership. Not on this roster yet lists connected family who are not on that gym. Check who to include, then Request to join. That sends the request for this gym.
  4. 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 memberships for you and people you act for, gym messages, credits, and links to that gym’s shop and events. When the gym turned on a trial page, the hub also has Try a First Class. Gyms include ones where a child or someone else you act for is on the roster. On that gym hub, tap Open Level Progress for a light view of the last completed (or working) level, the gym path, and level testing status when the gym has set one (On test list or Ready to promote). Remaining obstacle skills show as Still open — staff and coaches record them at the gym; you cannot check them off or change the testing status.

A parent can share a gym or personal referral code on the public trial page. That code only names who sent the visitor. It cannot name the same person who is signing up — the page shows that error and does not continue. There is no points or rewards program.

In the app: Open Level Progress

That control opens `/account/gyms/{slug}/skill-levels` for that gym. There is no Level progress page on the Gyms list.

LimitStaff and coaches record obstacle skills at the gym. Athletes and parents can see the last completed or working level, path, and remaining skills as Still open. This is not homework, and you cannot check off skills.

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 hub — Billing lists subscriptions across gyms (yours and ones you pay for), outstanding Due and past-due items, punch cards, account credit, and recent payments (event registrations, group checkouts, membership charges). Pay now on an unpaid Due membership for yourself or someone you act for, when the gym can take online payments. Update card opens that gym’s billing page when you are the member or the person who pays and a card is already on file — the same place as Manage billing on the gym Membership page. Punch cards show remaining class-pack, makeup, and open-gym punches for you and people you act for. You cannot transfer or issue punches here; ask the front desk. 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. A registration canceled because two profiles were merged does not show that QR.

Find Events lists public competitions and, when your home gym has joined a league, that league’s events even if they are not open to the public. A fee, including $0, is set by the gym hosting the event and is paid to that gym.

Times on Events, a registration, the public event page, and the guest receipt use the host location’s time zone and a short label such as PT. An event with no site uses that gym’s organization time zone.

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.

Sign the hosting gym’s waiver during signup unless you are signed in with a verified account that is already an active member of that gym, or of another active gym in the same Franchise HQ and the same state. Typing an email does not skip the waiver and does not open that person’s roster record. Each athlete has their own profile and their own waiver. A parent’s waiver does not cover a child, even when the registration uses the parent’s email. When the name and date of birth match a person at that gym but the email is different, the registration can use that profile. It does not change the profile’s email, phone, or emergency contact. It does not use that profile’s waiver or a signature from another registration. Check-in stays blocked until a host waiver is signed for that registration. Open that registration and sign Host Waiver there. The form is shown even when the profile already has a waiver on file. Signing stores the waiver on that registration, and check-in can proceed. A guest signature covers that signup only. It does not cover a different registration that uses the same email. A guest card payment stays on that registration and is not filed on a different person because the email matches. A gym in that Franchise HQ in a different state does not skip it, and a gym in a different Franchise HQ does not skip it. Being in the league does not skip it. A gym with no franchise only skips the signature for its own members. Group registration signs with each competitor’s first and last name from their profile. If staff added you, open the registration and sign the Host Waiver there before check-in. The signature is stored on the hosting gym for that signup. A member of the host gym, or of a same-state gym in its Franchise HQ, checks in on the waiver already on file at their gym. An athlete under 18 has the parent or guardian recorded as the person who signed, including their name and, when available, their relationship and email or account. The signature is stored on that registration. When the email differs from the child’s roster profile, it is not filed on that profile. The parent or guardian is the signer. A different registration still needs its own host waiver. Guest checkout does not show the host waiver until that name is entered, and it does not continue without it. A minor who does not name a parent or guardian is not registered. An adult is recorded as signing for themselves. On Host Waiver, a minor enters the parent or guardian name and relationship. An adult can leave those blank. Family group checkout asks for the parent or guardian name and relationship when a selected athlete is under 18. A registration paid by someone else shows Host Waiver even when the athlete is already a member of the host gym, and after it is signed the page shows that waiver as signed for that registration. Family group registration and a signed-in signup link each athlete when the first name, last name, and birth date match a person at that gym. That link does not change the person’s email, phone, or emergency contact. A different email still needs a host waiver on that registration.

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, not the registration record. Official event results are saved to the athlete portal. That includes sanctioned league events, local league events, gym events that are not in a league, and events at another gym. Walk-up and guest registrations show up after that roster profile is linked to the athlete’s account. Class exhibitions and practice timing stay at the gym. Runs the gym added for you show up after your account is linked to that roster profile, including on your public profile when it is enabled.

On Events, each Past card opens the latest run on History when that registration has a run. The card says View run. When there is no run yet, the card says View registration and opens that registration. A registration canceled because two profiles were merged is left off Past.

Verifying your email links a guest registration that used that same email, and links one roster profile per gym when exactly one profile has that email and no login yet. Those runs then show on History. If two profiles at the same gym share the email, including one that already belongs to your account, that gym stays unlinked until staff merge the profiles or link the right one.

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 bookings for you, people you act for, and guest bookings that match your email, plus a schedule grouped by person. You will see the product name (class, open gym, party, camp, or field trip), gym, time, instructor, location, the person’s name, and status (booked, waitlisted, checked in, canceled, or no-show). Class times on this page use that class site time zone, or the organization time zone when the class has no site, with a short label such as PT. The calendar puts each class on that time zone's day, not the day where you are viewing the page. A day with one class says 1 booking; more than one says the count and bookings.

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, open Classes and choose Book at that gym (also on the gym hub). On the session, set Who is taking this class to yourself or someone you act for, then Book. The same choice appears on the gym’s public calendar when you are signed in. Open classes without age, skill, or team limits can still be booked with name and email when you are not signed in. 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. If you have not joined the gym yet and the gym has a trial page, use Try a First Class instead — public landing page → sign the waiver → pick a free first class. If that email is already on the roster, sign in with the verified account for that person first (yourself, someone you act for, or the same verified email when the roster row has no login). If several people share that email, the page continues only when that account matches exactly one of them.

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.

LimitMembership-only classes, and priced sessions when the gym cannot take online payments, stay at the front desk. You can only book for yourself or someone you already act for.

Run History and Compare

In the app: History

Official event results are saved to the athlete portal. That includes sanctioned league events, local league events, gym events that are not in a league, and events at another gym. Walk-up and guest registrations show up after that roster profile is linked to the athlete’s account. Class exhibitions and practice timing stay at the gym. Exhibitions stay off History. Parents see those results on History for themselves and for athletes they act for. History lists runs for you and people you act for, including in-progress and DNF rows, grouped by person. Columns include event, date, points, and time or DNF. A run the gym added on the roster appears here, and opens with its splits, once that profile is linked to the account. Verifying your email links a guest registration that used that email, and one roster profile per gym when that email matches a single profile with no login.

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.

A gym may also message a class, a team, members with a past-due membership, or recent no-shows. It can send a welcome, a waiver reminder, a failed-payment note, or a we-miss-you note. Each person gets a private thread. Those arrive in this same inbox. A guardian copy arrives when Copy gym messages to my inbox is on. The gym clicks Send. Warrior Competitions does not send those on its own.

Warrior Competitions also emails you when that gym sends a message. The email links to the thread. Turn off those emails under Notification Preferences. The thread stays in Messages. A guardian copy follows the guardian’s own email preference.

A league invite arrives here when a founding gym invites an email address that already belongs to your account. The thread includes the link to accept for a gym you own. It arrives even when that gym has messaging turned off. If the address has no account yet, the invite is email only.

LimitText messages and competition-day on-deck alerts are not sent from this inbox yet.

Waivers

In the app: Waivers

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

If the gym asked a class, an event, or the roster to sign, the pending waiver says who it was for (for example a class or field trip name). That request shows up here. Warrior Competitions does not email it.

  1. Open a pending waiver, read the text, enter signer name and email, choose Relationship when you are signing for a child, and sign on the signature pad. A profile with no birth date still records that parent when the signer name is not the athlete’s name, or when Relationship is set.
  2. Signed waivers show the date and a PDF download. A child’s signature shows the parent or guardian who signed.

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.

Notification Preferences

In the app: Notification Preferences

Open Notification Preferences from the athlete portal sidebar, or open Manage notifications in any email from Warrior Competitions. The email link works without a sign-in. If that signed-in page sends you to sign in, Warrior Competitions brings you back to Notification Preferences.

  1. Leave Gym Message Emails, Event Reminders, or League Recaps checked to keep those emails.
  2. Clear a box and choose Save changes to stop that kind of email. The button says Saving… while that save is in progress, and Saved. appears only after it finishes. Changing a box hides Saved. The boxes stay as you saved them when you reload the page.
  3. Choose Unsubscribe from optional emails on that page, or open the unsubscribe link in an email and choose Unsubscribe from optional emails. That turns all three off and shows Optional emails are turned off. A link with extra characters shows This link is not valid. instead of the form.

LimitPassword resets, email verification, registration receipts, membership payment problems, and invitations keep arriving. Turning off gym message emails does not remove the thread in Messages.

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. This waits until your email is verified.
  • Delete my account requires typing DELETE. This clears personal information, removes records and connections, anonymizes the email, and signs you out. The same control is on the verification screen if you have not confirmed your email yet.

LimitTo change your password, use Forgot Password. Email choices are on Notification Preferences.

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.

Suggestions

In the app: Suggestions

Open Suggestions in the athlete portal sidebar. Parents and athletes both see this item. Gym members and spectators use this page. Gym staff use Suggestions in the gym sidebar.

Warrior Competitions isn't perfect, and we're always working to get better. If you have ideas for how we can improve, please let us know.

  1. Choose a topic: Question, Suggestion, or Bug. The form starts on Suggestion.
  2. Write the message and choose Send message.

Name and email are filled from your account and cannot be edited here. Gyms you belong to are included with the message. A gym that belongs only to a child you act for is not. support@warriorcomps.com is shown under the form.

LimitUse Contact when you need to write from a different name or email.

Switch to a Gym or League Portal

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

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) → Admin → Staff (front desk) → Coach. 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. Owners and admins can refund or void a closed sale.
  • 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, Cover a Shift (assign a sub), Pay rules for anyone on the team, add or update first aid, background check, and similar certifications on Staff (Certs is the read-only own list), Download hours CSV from Time Clock Hours for the accountant, Accounting Export, inventory edits, counts, retire, sales tax, void a gift card, and Clock out, Edit times, or Add punch for a teammate who forgot. Owners and admins can turn off a teammate’s My Calendar link on Staff, Merge into this profile, and Ask this group to sign.
  • Staff — the front-desk role. Daily Dashboard, Kiosk Check-In, Desk POS, Inventory (view and sell), members (create/edit, not delete), Level Testing (lists, Save path, and Mark {level} complete), 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, Cover a Shift (request or take a sub/swap), read-only Pay for their own rule and earnings preview, read-only Certs for their own certifications, and My Calendar. Daily Dashboard also lists team certs that are expired or expiring soon. Staff can set Roster Status, record an Incident or Concussion, Clear return to play, and record a No Sale. Staff cannot refund or void a closed sale, change on-hand counts, edit or retire a product, set sales tax, void a gift card, download Accounting Export, merge two roster people, or ask a group to sign a waiver — those need an owner or admin.
  • Coach — Level Testing to Check off and Undo current-band skills (not lists, path, or Mark complete), events list, timing, leaderboard, rankings, finalize, Can't Work (nights or times they cannot be scheduled), Cover a Shift (request a sub or swap, or take a teammate's open request), read-only Pay (their own rule and earnings preview), read-only Certs (their own certifications), and My Calendar (a private Google Calendar or Apple Calendar link for their shifts, classes, and event assignments). No Members roster, classes, offerings, billing, Business Stats, 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. Coaches do not see gym money and cannot refund or void a sale.

Coach, staff, admin, and owner see Notifications at the bottom of the gym sidebar. It opens Notification Preferences for the signed-in account. Those email choices are personal. They are not gym settings. The same page is in the athlete portal sidebar. Suggestions sits under Notifications and opens Suggestions. Staff (front desk), coach, admin, and owner see it. Members and spectators use Suggestions in the athlete portal.

When a gym has two or more sites, the Location picker appears in the gym header. A gym with one site hides the picker; new classes, events, and desk sales still use that site. Choose a site to see that floor’s classes, events, Daily Dashboard, and desk sales. Owners and admins add, rename, or readdress sites under Settings → Locations. The main site can be changed, not removed. Another site is removed in two steps and can be restored for 7 days. This is not a second gym. Anyone on the gym team can switch the picker. Per-staff location assignment is not built yet. My Calendar does not follow the picker: it lists every site that person coaches, and each class or event on the link names its site. Shifts stay gym-wide.

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.

Suggestions

In the app: Suggestions

RoleOwner, admin, staff (front desk), and coach. Members and spectators use Suggestions in the athlete portal.

Open Suggestions under Notifications in the gym sidebar.

  1. Choose a topic: Question, Suggestion, or Bug. The form starts on Suggestion.
  2. Write the message and choose Send message.

Name and email are filled from your account. The message includes the current gym. support@warriorcomps.com is shown under the form.

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 (this also sets the gym timezone), invite staff, publish a waiver, and turn on Trial Funnel if you want the public landing page → sign the waiver → pick a first class flow.
  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.

Gym names are unique across Warrior Competitions. Gym name on sign-up is refused when another gym, league, or franchise organization already uses that name, including different capitalization or spaces only at the start or end. Choose a different name and submit again.

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, Certs Expiring (expired or within 30 days), a front-desk Time Clock, and append-only daily notes. Quick Links include Level Testing for the obstacle skill and promotion lists. Owners and admins also see Business Stats, which opens on 1d. Classes, events, and waves on this page follow the selected site and that site’s time zone, with a short label such as PT. A class with no site still shows on every site, and its time uses the organization time zone. Recent Check-Ins use the site where the check-in happened: the event’s site, or the class site. When the gym has two or more sites and no site is selected, a check-in that is not tied to an event or a class uses the organization time zone. Daily Notes use the selected site’s time zone, or the organization time zone when no site is selected on a gym with two or more sites. Kiosk Check-In uses the same site for Event Today. Shift schedule, Can't Work, and certs stay on the organization time zone from Settings → Address.

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. Certs Expiring lists team certifications that are expired or expire within 30 days — staff open it from Daily Dashboard; admins add or change those records on Staff. This is a tracking list, not a background-check service.

Front-desk check-in searches members, scans registration QR codes, checks athletes into class sessions, and checks in event registrants. The check-in destination list shows each class and event start in that class or event site time zone, or the organization time zone when the row has no site, with a short label such as PT. A class with no site is listed at every site. 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. A facility check-in already recorded today shows that time in the selected site time zone, with a short label such as PT. 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 the gym uploaded one or their linked Warrior account has one. Check-in is blocked when last name or birth date is missing, and when the lifetime waiver is missing while Check-In Waiver Override is off — use Edit profile or Sign Waiver to finish. When an owner or admin has turned that setting on, and the waiver is the only thing still blocking, staff on this screen choose a reason and can check the person in. The reason is required. Missing last name, birth date, and roster blocks stay on the screen with the waiver. An athlete on a self-service kiosk cannot use it. 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.

The kiosk also shows an Allergy row when the profile has allergies or an EpiPen. A roster photo is preferred over the linked account photo. Check-in is also blocked when Roster Status is Inactive or Alumni, when return to play is still pending after a concussion, or when that roster person was merged into another profile. Set Roster Status back to Active, or Clear return to play, on the member profile. History stays either way. An allergy flag does not block 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. Card reader charges the sale on a paired reader at the selected location. The sale stays unpaid until the card succeeds. Leave this page and come back — the unfinished card reader sale is still here. While the reader is taking the card, only Cancel payment is shown. Try again appears with Cancel payment after a decline or reader failure, and also when you come back and the charge is waiting to be sent to the reader again. Cancel payment stops that in-progress charge and puts shelf counts back. It is not a refund. If the card already went through, Cancel payment records the sale instead of canceling it. A card that goes through after the sale was canceled is recorded too, and shelf counts go back down. A declined card stays on the same charge so staff can choose Try again. An optional receipt email is sent by Stripe after the card succeeds. If the reader is offline, use Card (Stripe Checkout). Offline mode and Tap to Pay are not available. Cash and check are recorded pay types — they do not collect money in the app. Gift card spends the balance on a code issued at the desk. The balance must cover the total, including sales tax. 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, restore account credit when the sale was Charge to account, and put merchandise back on the shelf when the refund is the full remaining amount. Each refund of a Gift card payment puts that amount back on the card. Refunding the sale that issued a gift card is refused once any of that balance has been spent. A full refund of an unused card voids the code. A partial refund of that sale is refused while the code is still active. 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.

Merchandise on Desk POS comes from Inventory for the selected location. Taxable products add that location’s sales tax on top of the price. Open-gym passes and a new gift card are not taxed. A card checkout or card reader sale takes the items off the shelf when the sale starts. The count goes back if checkout is canceled, Cancel payment stops a reader charge that has not gone through, or the Stripe session expires without payment. Add gift card puts a code on the sale (at least $1). Cash, check, and charge-to-account sales show the code immediately. A card sale stores it after payment, and Inventory lists recent codes for this location. No Sale records why the drawer was opened without a sale. It does not open a hardware drawer.

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.

Pair a reader under Card Readers (owner or admin). The same link is in the gym sidebar under Settings. Receipt printers are not part of Desk POS. There is no card-on-file charge at the desk. Card readers run only while Stripe is in test mode.

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, waiver, and roster status are shown together when more than one is blocking. A missing waiver can be overridden only when it is the only remaining block and an owner or admin has turned on Check-In Waiver Override. Booking a class without checking the person in still needs the waiver. The same block applies when Roster Status is Inactive or Alumni, return to play is pending, or the profile was merged into another person. Event check-in on Registrations and the registration QR still needs a paid ticket (including free events, which are marked paid). Unpaid pending registrations return Ticket not paid. On the event roster, an unpaid registration shows a disabled Unpaid button and cannot be checked in until payment completes. A registration that needs its own host waiver stays blocked until that registration is signed. Staff cannot skip that host waiver.

Check-In Waiver Override is off until an owner or admin turns it on under Waivers. While it is off, a missing lifetime waiver still blocks front-desk, kiosk, class, and event check-in. When it is on, staff at the front desk and on Kiosk Check-In can check the person in after they choose Gym's own waiver on file, Paper waiver signed at the desk, Guardian will sign before training, or Other with a written note. The check-in stores the staff member, the time, the reason, the person, and the site or class session, and writes an audit entry. The reason and note are for that check-in. Switching to another person clears them. Recent Check-Ins and the member’s Recent Attendance show that note. An athlete checking in on a self-service kiosk cannot override. A walk-up class check-in that uses the override does not leave the person on the roster when the class still needs payment or the check-in does not finish. Removing that unconfirmed walk-up opens the seat for the next waitlisted person under the same rule as a normal cancel.

Inventory, Tax, and Gift Cards

In the app: Inventory

RoleStaff can view stock, sell it, look up a gift card, and record a no-sale. Owner and admin add products, edit them, retire them, change counts, set sales tax, and void a gift card.

  1. Open Inventory. The list is the location selected in the header. A gym with one site uses that site.
  2. Owners and admins use Add a Product for a name, SKU, vendor, price, opening count, and whether the item is taxable. Save changes updates the name, SKU, vendor, price, low-stock mark, and taxable flag. Update count receives stock, records damage, or sets the shelf count. A reason is required. Retire removes the product from Desk POS. The count and history stay. Return to register puts it back.
  3. Set Sales Tax as a percent for that location. It applies to taxable merchandise at Desk POS and is added on top of the price. Open-gym passes and new gift cards are not taxed. There is no tax until a rate is saved.
  4. Sell merchandise from Desk POS → Merchandise. The button shows how many are on hand. A sale will not go through when the shelf does not have enough. A full refund puts the items back.
  5. Use Add gift card on Desk POS for at least $1. Cash, check, and charge-to-account sales show the code when the sale completes. A card sale adds the code after Stripe marks it paid — look it up on Inventory. Pay a later sale with Gift card and that code. The balance must cover the whole total. Owners and admins can Void a card from Inventory. Void is refused while a sale that spent the card can still be refunded, so that refund can put the balance back.
  6. On Desk POS, No Sale records Make change, Count the drawer, Petty cash, or another reason. Coaches cannot record one.

In the app: Accounting Export

Owners and admins open Accounting Export for payouts and dues in a date range (gym time zone, up to one year). Download CSV is the file for the accountant. Dues, desk sales, events, league fees, and refunds are included. Account credit is not. The CSV includes the gift card load on each row. The platform fee column is the fee already stored on each successful card charge. That percent is not the $30 monthly minimum per location. Cash, check, gift card, comp, and account credit have no platform fee. When QuickBooks is configured, Download QuickBooks journal saves a second file on this computer. A gift card sale credits Gift card liability. Paying with a gift card debits that liability. Refunds reverse sales tax and the stored platform fee. Warrior Competitions does not send the file and does not connect to a live QuickBooks account. When QuickBooks is not connected, the journal download stays off and the CSV is the export.

LimitAthletes and parents do not redeem a gift card in the portal. Staff redeem it at the desk. The public shop gift card listing is still a catalog item and does not create this desk balance.

Members Roster

In the app: Members

RoleStaff can create and edit members, set Roster Status, and record incidents. Owner and admin merge duplicates and ask a group to sign.

  1. Open Members to search and sort the roster (plan, status, Level, billing badges). Filter People to Prospects or Members. Filter Roster Status to Active (the default), Inactive, Alumni, or Everyone. A Prospect is someone who signed up for a trial and does not have a membership yet — it is not a Prospective draft plan. The Level column shows the last completed skill level (or the working level if Settings says so) and the gym path — the same badges as Find a member on Schedule. Use Level Testing for the test and promotion lists.
  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. On the form, Person status can be Member or Prospect. You can also save a second emergency contact, a pickup list, allergies, an EpiPen flag, injuries, and a photo. Naming someone does not require payment.
  3. Open a member for profile, current vs past memberships, account credit, punch cards, invoices, lifetime revenue, attendance, waivers, level and gym path, a claim link to connect their Warrior Competitions account, and a Referral card (personal code and who sent them).
  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. For a child, the signer name is the parent or guardian, and Relationship records how they know the athlete. The signed waiver shows that signer and is not stored under the child’s name. A profile with no birth date still records the parent when the signer name is not the athlete’s name, or when Relationship is set. An adult is recorded as signing for themselves. 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.

Roster Status is Active, Inactive, or Alumni. Staff set it on the profile with Save roster status. Inactive and Alumni keep memberships, attendance, and waivers. Front desk, kiosk, class, and event check-in wait until the status is Active again. Freezing a membership is separate and still pauses that plan. Marking someone Alumni in a date range counts on Business Stats Churn unless a membership cancellation in that same range already counted them.

Safety on the profile shows emergency contacts, the pickup list, allergies, injuries, and a roster photo. Those notes are encrypted. Kiosk Check-In shows the allergy or EpiPen line and prefers the roster photo.

Incidents records what happened and optional care notes. Choose Incident or Concussion. A concussion starts as return to play pending and blocks check-in until staff tap Clear return to play. The note stays encrypted. The incident is stamped with the location selected in the header.

Merge Duplicates is owner and admin. Search the other spelling or the other parent’s roster row. Check The other profile will leave the roster, then Merge into this profile. The person you are viewing is kept. The other row leaves the roster and is not deleted. History moves onto the kept profile. A live class spot, household seat, skill, wave, or waiver request that would collide stays on the hidden row, and the profile lists what stayed. When both people are registered for the same event, the registration on the kept profile stays. If that registration has no run, the other registration’s run moves onto it. The extra registration is canceled, tagged as a duplicate, and listed on the hidden profile. Nothing is deleted. The kept name and email do not change. Blank phone, birth date, photo, and login are filled from the other row. Contacts and pickup names are combined. Registrations that move onto the kept profile take that profile’s login when it has one. Merge stops when both people have a Warrior account, or when both have a current membership — cancel one plan first so the kept profile is not billed twice.

When the gym has two or more sites, the roster shows Home Location and the profile has Home Location. That is the site where the person became a member. Checkout from a site shop, a join request from that site’s Find a Gym card, and staff creating a member while a site is selected all set it. An admin can change it. A removed site still shows on the roster until someone transfers those members.

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 Settings → Failed 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 Settings → Household 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. Approval copies birth date and gender from the person’s profile onto the roster, and later profile saves keep those in sync. A walk-up or prospect who is already on the roster is linked and becomes an Active Member instead of being treated as already joined. A child’s managed email does not replace a real roster email and is not used to match a different person.

Trial Funnel

In the app: Trial Funnel

RoleAdmin turns the public trial page on or off and adds gym referral codes. Staff see Prospects on the roster and can create a personal referral code on a profile.

The trial funnel is public landing page → sign the waiver → pick a first class. Share your trial page from your Settings. A trial does not require payment.

  1. Open Settings → Trial Funnel.
  2. Leave Allow the public trial page on (or turn it off if you only want walk-ups).
  3. Optionally write a short intro, then Save trial page.
  4. Add a gym referral code (letters and numbers) if you print cards or tell parents a code. Turn a code off when you no longer want it used. A turned-off personal code stays on the roster profile as off and is not a shareable link.
  5. Use Copy Link on Trial Funnel for the full trial URL, or open it from the shop header or public calendar. A parent can share an active personal code on a roster profile. That code cannot name the same person who is signing up. The trial page shows that error and does not continue.

A new-lead email to gym staff shows the received time in the organization time zone, with a short label such as PT. Times on Pick a First Class use that class site time zone, or the organization time zone when the class has no site, with a short label such as PT.

A person who signs up with a new email becomes a Prospect on your gym roster. If that email is already on your roster, the trial page does not show their name or book a class unless the visitor is signed in with a verified account for that person (the linked login, someone who acts for them, or the same verified email when the roster row has no login). If several people share that email, the page continues only when that account matches exactly one of them. A signed-in visitor whose email is not verified yet is asked to verify it. Their name and birth date stay as they are, and a Member stays a Member. Signing the waiver (when you have one published) and booking a first class does not change them to Member. Assigning a membership, or a successful shop/portal subscription, does.

The first class must be a class product with trial access allowed. Trial bookings are $0. A waitlist spot does not finish the trial — if that spot is canceled, they can pick another class. A booked first class does. Guest drop-in booking on the public calendar does not create a Prospect.

LimitWarrior Competitions does not email prospects or members from the trial page. Messages still send only when someone at the gym clicks Send. There is no email list, drip, or rewards engine.

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. A roster Prospect is a different thing — someone who signed up for a trial. 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.

Level Testing

In the app: Level Testing

In the app: Skill Levels

RoleCoaches check off and undo current-band skills on Level Testing. Staff and admin run lists, Save path, and Mark {level} complete. Admin builds the skill lists and path list under Skill Levels.

Use Level Testing instead of a side spreadsheet. Put athletes on the Test list and check off remaining obstacle skills. The last check-off on the current level puts them on Ready to promote — it does not unlock the next band. Mark White Band complete records that finished level official, checks off remaining skills, unlocks the next test, and removes them from lists. Set each person’s path with Save path. Path does not move automatically.

  1. Open Level Testing (sidebar, Daily Dashboard, or Members). Coaches use the sidebar Level Testing item.
  2. Search a name and Add to test list. That control only adds to the test list (staff and above).
  3. Check off remaining obstacle skills on the current level. The last check-off puts them on Ready to promote. Next-level check-off stays locked until staff mark this level complete.
  4. Staff use Mark White Band complete — the button names that level. The label to the right explains it checks off remaining skills, records this level complete, and unlocks the next level.
  5. Choose a gym path, then tap Save path. Changing the dropdown does not save. Admins edit the path list under Skill Levels.
  6. Undo a finished skill to put them back on the Test list. After Mark {level} complete, they are off the lists so you can start the next test.

On a member profile, the Level Testing card lists each level as an expanding section. The current level starts open; the others start closed and show the level name, description, and how many skills are checked off.

The Members roster Level column uses the same badges as Find a member on Schedule and the member profile header: last completed skill level (unless Settings shows the working level) and the gym path.

Admins still create up to 15 levels and 15 obstacle skills per level under Skill Levels, then reorder them. On that page they also set Show Member Level As last completed or currently working, and add, rename, reorder, or delete paths. Delete is blocked while any member still uses that path.

LimitAthletes and parents see a light current-level view on the gym hub — last completed or working level, path, and remaining skills as Still open. They cannot check off skills. Coaches cannot open the Members roster or Settings.

Schedule (Week View)

In the app: Schedule

RoleStaff and above.

The Schedule page shows one week grid for the site selected in the Location picker: 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. Shop-only offerings that are not a Classes product stay gym-wide.

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, last completed skill level (or the working level if Settings says so), and the gym path when configured. Prospects show a Prospect badge. 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. The list and calendars follow the Location picker in the header. Month and week calendars group each session on that site’s calendar day and show the start time in that site’s time zone. A new product is saved to the selected site. 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.

Web address is filled from the name on a new class, and you can edit it before you save. It must be unique at this gym. If another class already uses that web address, Schedule class or Save details stays on the form and asks you to pick a different name or web address.

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. A gym with one site keeps that shop. A gym with two or more sites shows Choose a Location on the main shop link, and each site has its own shop titled with the gym name and city. When you create or edit an offering and the gym has two or more sites, check All locations or the shops that should list it. Saving is refused when All locations is off and no shop is checked. All locations includes a site you add later. 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, Pay, Certs, Trainers, and Commissions

In the app: Staff

In the app: Cover a Shift

In the app: Pay

In the app: Certs

RoleAdmin for Shift Schedule, Time Clock Hours, Download hours CSV, Clock out / Edit times / Add punch, Pay Rules, Certifications, reports, and assigning a sub. Coach and above for Can't Work (self), Cover a Shift (own assignments, plus taking a teammate's open request), read-only Pay, and read-only Certs. Admin can set Can't Work, assign a sub, or edit a pay rule for any coach or staff member, and add a certification for anyone on the gym team. Admin, staff, and coach Clock in / Clock out for themselves. Owners see who is clocked in on Daily Dashboard. Owners and admins correct someone else's punch on Time Clock Hours.

  • Can't Work — Can'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 from Settings → Location. 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 Shift — Cover 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 from Settings → Address. 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. Owner and admin can Clock out an open punch (now or a chosen gym-local time), Edit times on any punch, or Add punch for a missed shift. Those corrections show Edited on the row and in the CSV. Coaches and staff cannot change another person's times. Download hours CSV saves the same filtered hours for your accountant's spreadsheet. CSV kind is person, total, or punch. Payroll hours for the accountant are person rows or Total — do not sum punch hours onto person hours (the same hours column would triple). Clock in and Clock out are actual punch times and can fall outside the selected range; Hours are clipped to the selected days. This is not a payroll product: there is no tax filing, direct deposit, ADP/Gusto export, or Stripe payout, and the file is not emailed.
  • Pay Rules — owner and admin edit on Staff only. Everyone on the team opens Pay to see their own rule (owners and admins also see the team earnings preview). Pick Hourly, Per class, Per head, or Commission. One rule per person. This is not a payroll system: there is no direct deposit, tax filing, or Stripe payout from these rules.
  • Hourly — rate × hours in the selected date range so far. Hours come from Time Clock punches first. If a scheduled shift has already started and has no overlapping punch, that shift's length through now is used instead. Remaining scheduled hours later in the range are not counted yet. Open punches count through now, same as Time Clock Hours.
  • Per class — flat amount × class sessions that person coaches in the range that have already started (the substitute coach if one is set, otherwise the class instructor). Canceled sessions and upcoming sessions do not count.
  • Per head — amount × athletes checked in on those same sessions (already started, not canceled). Registered or waitlisted people who did not check in do not count.
  • Commission — the percent is stored on the rule. Desk sales are not attributed to a coach yet, so the earnings preview shows $0 and Not attributed yet. It does not charge or pay anyone in Stripe.
  • Earnings Preview — same date range as Time Clock Hours on Staff, or the filters on Pay — not the Time Clock Person dropdown. It adds the estimated dollars from work so far in that range. Remaining scheduled work is not counted yet. It is a preview for the gym, not a paycheck.
  • Certifications — owner and admin add, update, or remove on Staff. Everyone on the team opens Certs to see their own list (read-only). Pick First aid / CPR, Background check, or Other (type a name). Issue date and expiry date are optional. Status is Expired, Expires today, Expires soon (within 30 days), Valid, or No expiry. Staff and above also see expired and soon-to-expire team certs on Daily Dashboard → Certs Expiring. This is a gym tracking list: it does not run a background check, prove legal compliance, or email a reminder.
  • Trainers — a separate list for event-day trainers. Their commission percent is on event revenue for event assignments (the 30-Day Staff Report), not the Pay Rules above.
  • My Calendar — My Calendar. Coach and above copy a private link into Google Calendar or Apple Calendar. Owners and admins turn off someone else’s link on Staff → Calendar Links. Changing someone to Member or Spectator turns their link off. Turning a link off does not delete shifts or classes. Google Calendar and Apple Calendar refresh on their own schedule, so a change may not show up right away.
  • Event assignments — link trainers to events.
  • 30-Day Staff Report — trainer assignment hours and event commission (not time-clock punches, and not Pay Rules).

LimitDownload hours CSV is hours for your accountant’s spreadsheet. Warrior Competitions does not run payroll, file taxes, send direct deposit, or pay wages in Stripe.

My Calendar

In the app: My Calendar

RoleCoach and above create, copy, replace, or turn off their own link. Owner and admin turn off someone else’s link on Staff. Changing someone to Member or Spectator turns their link off. Members and spectators do not get this page.

Open My Calendar and choose Create calendar link. Copy the Google Calendar link or the Apple Calendar link. Warrior Competitions does not sign in to Google or Apple, and it does not email the link. Those calendar apps refresh the link on their own schedule, so a change may not show up right away.

  1. Google Calendar, on a computer: open Google Calendar, choose From URL next to Other calendars, and paste the Google Calendar link.
  2. Apple Calendar: choose File, then New Calendar Subscription, and paste the Apple Calendar link.
  3. Choose New link if the old one was shared with the wrong person. The old link stops working, so paste the new one into the calendar app.
  4. Choose Turn off to stop the link. Shifts, classes, and event assignments stay on the schedule in Warrior Competitions.

The link includes that person’s shifts, classes they coach (class, open gym, party, camp, or field trip), and event assignments from the past 14 days through the next 120 days. An event assignment is included when that trainer’s Email on Staff matches the person’s account email. A Substitute Coach sees the session. The original coach does not, until they are assigned again. A canceled session stays on the link and shows as canceled. An unsaved class exhibition stays off.

Classes and events include the site name, so more than one site still shows which floor. The link does not follow the Location picker. Shifts are for the whole gym and use the gym name, because a shift is not assigned to one site. Times show in the time zone of the phone or computer that subscribes.

The link does not list athletes, allergies, pickup names, or party guest names. Owners and admins turn off another person’s link under Staff → Calendar Links. Changing that person to Member or Spectator also turns the link off. They need a new link if an owner sets them back to Coach or above. That screen does not show the secret.

LimitThe link is a secret. Anyone who has it can read that schedule. Turning it off or choosing New link stops the old address. Warrior Competitions does not send the file to Google or Apple.

Gym Messages

In the app: Messages

In the app: Audiences

RoleCoach and above can open Messages if they have inbox access. Owner and admin always do. Staff and coach need the toggles in Messaging settings. Owner, admin, staff, and coach can send, including audiences and automatic messages.

  1. Open Messages to read member and registrant threads.
  2. Compose to individuals or to event registrant groups from Compose.
  3. Open Audiences, save who you want to reach, write the message, and click Send broadcast.
  4. On Audiences, turn on Welcome, Waiver Reminder, Failed Payment, or We Miss You, click Save, then click Send. Send uses the saved wording and sends the message only to the people the message currently applies to.
  5. 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).

  • Class — people booked, waitlisted, checked in, or pending payment on a session of that class that started within the last N days, plus upcoming sessions.
  • Team — people on that event team whose registration is pending, paid, or checked in.
  • Past due — members with a past-due membership.
  • No-shows — members marked no-show on a class that started within the last N days.
  • Welcome — people who joined after you turned Welcome on, and who have not already received it.
  • Waiver Reminder — members with a Warrior Competitions login who still need a current waiver and have been on the roster for at least the number of days you set.
  • Failed Payment — members whose membership is past due. Each failed charge is included once. A retry of that same charge does not include them again. A later charge can.
  • We Miss You — members who joined at least this many days ago and whose last check-in was longer ago than that, or who have never checked in. After you send, they are not due again until they check in and then go quiet.

Only people with a Warrior Competitions login are included. Guardians who turned on Copy gym messages to my inbox get a copy in the athlete portal. Use {{gym}} in the wording and it becomes the gym name when you send.

Each send also emails a notification with a link to the thread, unless that person turned off gym message emails under Notification Preferences. The in-app thread is still created. A failed membership payment email is separate, and turning off gym message emails does not stop it.

A league invite is separate from those broadcasts. When the founding gym invites an address that already has an account, Messages gets a thread from that gym with the accept link. The founding gym sees it in this inbox. It is sent even when messaging is turned off.

LimitSaving an audience or a message does not send anything. Click Send broadcast, or Send on an automatic message, to deliver it. A broadcast sends one private thread per recipient. Warrior Competitions does not send these on its own — including people who just used the trial page. If messaging is turned off, Messages still links to Audiences. You can save audiences and wording there. Send and Send broadcast stay unavailable until messaging is turned on.

LimitText messages (SMS) and competition-day on-deck alerts are not available yet. Those wait until texting exists.

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.

  • Display Name — the gym name shown in Warrior Competitions. Admins change Gym name and choose Save name. A name already used by another gym, league, or franchise organization is refused, including capitalization-only changes and spaces only at the start or end. Saving a new name does not change the gym web address.
  • Logo and Address (the main site, used by Find a Gym when the gym has one site). Saving the address updates that site’s map pin and time zone, and sets the organization time zone used by payroll, Business Stats, Can't Work, Cover a Shift, Shift Schedule, time clock, and certs expiry. Classes and events use the time zone of the site they belong to.
  • Locations — sites at this gym (for example Blaine and another floor). Each site needs a name and address. Save location updates them. The main site cannot be deleted. Remove on another site confirms, then asks you to type the city. For 7 days, Restore puts the site, its shop, and its records back. After that, choose another site to transfer home members, classes, events, and shop selections. Desk sales stay on the removed site as history. A new class, event, exhibition, or desk sale is saved to the selected site when the Location picker is showing, or to the only site when it is hidden.
  • [Card Readers](/settings/card-readers) — owner or admin. The gym sidebar lists Card Readers under Settings, and Organization Settings links to the same page. Pair a Stripe reader for the location selected in the header. The site needs a complete address. Enter the label and the registration code from the reader, then Pair reader. Remove reader deletes it from Stripe while it is still on the account this location charges. If that account is no longer the one this location charges, Unlink reader drops it in Warrior Competitions and leaves it in Stripe. Pair reader then registers a reader on the current account. Staff charge on an online reader from Desk POS (Card reader) or from a priced event’s Registrations page. The reader stays on the Stripe account it was paired to (this gym’s account, or the Franchise HQ account for a Corporate-Owned location). Card readers are available only while Stripe is in test mode.
  • 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 (including Download hours CSV) and Pay → Earnings Preview use this for Current payroll period and Previous payroll period.
  • Accounting Export — owners and admins download payouts and dues for a date range. Download CSV is the accountant file, including the gift card load on each row. When QuickBooks is configured, Download QuickBooks journal saves a second file on this computer. A gift card sale credits Gift card liability, and paying with a gift card debits that liability. Refunds reverse sales tax and the stored platform fee. Warrior Competitions does not send it to QuickBooks. When QuickBooks is not connected, only the CSV is available.
  • 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 (obstacle lists, Show Member Level As, and custom paths for Level Testing), Messaging, Trial Funnel, 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. Owners and admins use Check-In Waiver Override on that page to let staff check someone in when the lifetime waiver is missing. Staff, coaches, and athletes cannot change it. The override does not skip a host waiver that belongs to one event registration. Ask a Group to Sign records an in-app request for a class or event at the selected location, or for the active roster. People who already signed the current version are skipped. Canceled class bookings, canceled or refunded event registrations, and Inactive or Alumni people are skipped too. Warrior Competitions does not email them. They see the group name under Waivers in the athlete portal.

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. A Corporate-Owned location in a Franchise HQ can use the HQ Stripe account. A franchised location uses its own Connect account. Memberships, the billing portal, event entry fees, Desk POS card reader charges, and other charges go to that account. A successful card charge is 1%. Card readers are available only while Stripe is in test mode. Gyms pay 1% of gym-management card sales and 1% of competition entry fees, with a $30 a month minimum per location after the first 60 days. Gym-management card sales and competition entry fees both count toward that minimum. The 1% still applies during the first 60 days. Payment Settings shows the percent configured for card charges.

The page shows whether details are submitted, anything still required, payment-connection health, and the percent configured for Connect charges. 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. A failed platform minimum does not pause check-in.

Platform Minimum shows this location’s fees, its $30 minimum, and an estimated shortfall. The $30 minimum for each location starts on the first full Central Time month after that location’s 60 days, with no charge for a partial month. Billing months run on Central Time. A location that starts July 15 has no minimum through September 15. Its first billed month is October. The 1% still applies during those 60 days. A waiver delays only that location’s $30 minimum. The 1% still applies during a waiver. The page says Minimum starts and names that date, and it says months run on Central Time. Card on File is where an owner or admin adds a card after checking I agree to the monthly minimum and authorize these charges. The card number stays at Stripe. End billing is for the owner and takes effect at the end of the current Central Time month. It ends the $30 monthly minimum only. That month can still show a floor and an estimated shortfall. A later month shows a $0 floor and a $0 estimated shortfall. Fees collected that month still show. The 1% fee on card sales continues, and the gym can keep taking payments, including Checkout, desk sales, and memberships. No card is required for the monthly minimum after that date. Invoice History lists platform minimum invoices when a month has been billed. A corporate shared location does not add a card. That page says Franchise HQ pays this location’s minimum on its card. Leagues are not billed.

A month that closes while the $30 minimum charges are off is never billed later, and billing starts only with months that close after those charges are on.

About seven days before that first full month starts, Warrior Competitions emails the owner once. The email says billing months run on Central Time. If that day was missed, the next daily run sends the same email once. The email does not charge the card. When a month is charged, the receipt shows that location’s minimum, the fees collected that month, and the difference charged, and it says billing months run on Central Time. If the fees cover the minimum, the difference is $0. End billing stops only that monthly difference. Classes, check-in, and registrations stay open, and the 1% fee on card sales continues. A failed charge does not close the gym.

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. A Desk POS Card reader refund is owner or admin only and refunds that charge on the same Stripe account, including the platform fee when one was taken. Cancel payment on a reader that has not finished is not a refund. If the card already went through, the payment is recorded instead. Staff and coaches cannot refund or void — Billing is admin-only, and Desk POS hides Refund unless you are an owner or admin.

Business Stats

In the app: Business Stats

RoleOwner and admin. Staff and coaches do not get this page.

Open Business Stats from the sidebar or from Daily Dashboard → Quick Links (that link opens 1d). Choose 1d, 7d, 30d, or 90d. 1d is one gym calendar day. Use Date and View to open another day. Times use the organization time zone from Settings → Address, with a short label such as PT. 7d, 30d, and 90d are trailing windows ending now and do not show a date picker. Totals stay gym-wide — they do not follow the Location picker.

Gross revenue for the selected range and the daily trend exclude refunds and a desk sale paid with Charge to account. Refunds under Revenue Trend is a separate total for that range and leaves Charge to account refunds out. Subscriptions, event fees, and other charges on that card add up to gross revenue. Monthly recurring revenue, active members, retention and churn, attendance, top events (revenue net of refunds), demographics, hardest obstacles, and 12-month Revenue (net of refunds) are also on the page.

Every range also shows Membership Counts, By Coach, Stripe Payout, Fee, and Refunds, and Competition vs Class Revenue. Active, frozen, and past due are the roster now. Churn on that card counts memberships canceled in the selected window, plus people marked Alumni in that window who were not already counted from a cancellation. Account credit is not revenue, including a desk sale paid with Charge to account and a refund of that sale. Stripe Payout is the charge minus the Warrior Competitions fee. The page shows that rate. Refunds there are Stripe Connect refunds in the window and are not subtracted from the payout figure. Cash, check, gift card, comp, and account credit are not in that comparison. Competition entries sit next to class, open gym, camp, party, and field trip charges, after refunds in the window. Membership charges, desk sales, and league fees stay under Other Revenue, so those three figures add up. This page does not charge a card or change Stripe.

1d also shows Who Is Here, Who Is Coaching, Class Fill and No-Shows, and Aging Accounts Receivable. Those stay off 7d, 30d, and 90d. Who Is Here lists people checked in that day at the front desk, the kiosk, a class, or an event. A person who checked in more than once appears once, with each place they visited. Who Is Coaching lists classes that start that day and the coach on the class. A substitute is shown when one is set. Canceled classes are left off. Fill counts booked, checked-in, and waiting-for-payment spots against capacity. A no-show is a booking marked no-show and is not part of the fill count. By Coach adds those classes up. Aging groups what is still unpaid: a membership marked due, a past-due membership, an event entry staff left unpaid, and a class balance that is still open. Unpaid balances follow the same Due rule as the member profile, so a membership still in checkout is left off. A membership marked Due uses the intro price when the plan has one. A past-due membership uses the regular plan price. A class booking that is still waiting on payment is not included. Current is 0–30 days old, then 31–60 Days, 61–90 Days, and Over 90 Days. Age is measured to the selected day. Balances opened after that day are not included.

Events Overview

In the app: Events

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

The Events list follows the Location picker in the header. New event and Start exhibition save to the selected site.

  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 a league this gym founded or has accepted. If it is Sanctioned League, pick a major-league season this gym is approved to host, then Stage. Official events always save results to the athlete portal, whether or not a league is attached. Exhibitions do not.
  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, unless the event is in a local league. Then athletes from gyms that accepted that league can also register from the athlete portal, and host staff can add them from those gyms’ rosters. Close online registration on the event form, or Close registration now on the event page, stops that online signup early. Staff can still add people on Registrations. A finished event stays on its public page with results. Draft and archived events stay hidden.

Regular events and exhibitions use the same timing pad. The difference is whether the event is official. Official event results are saved to the athlete portal. That includes sanctioned league events, local league events, gym events that are not in a league, and events at another gym. Walk-up and guest registrations show up after that roster profile is linked to the athlete’s account. Class exhibitions and practice timing stay at the gym. Exhibitions stay off History.

  • 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 exhibition — Start 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. A wave’s start time is saved and shown in the event site’s time zone.
  • 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, Charge now, or Card reader 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. Card reader is available when that event’s site has an online reader paired in Card Readers. The registration stays unpaid until the card succeeds, and check-in stays blocked until then. Cancel payment leaves the registration unpaid when the card has not gone through. If the card already went through, the registration is marked paid and the contestant gets the same confirmation email as Charge now, with the check-in link. Leave Registrations and come back to see an unfinished card reader payment. Try again is there when the charge can be sent to the reader again. While the reader is still taking the card, only Cancel payment is shown. After the card succeeds, a league entry fee is transferred to the league, and that transfer is tried again until it is stored. Bulk CSV cannot use Card reader or Charge now. Check-in requires a paid ticket (including waived/comp and free events), a linked member profile, and a signed waiver on file. It is also blocked when Roster Status is Inactive or Alumni, return to play is pending, or the profile was merged into another person. Pending unpaid registrations show a disabled Unpaid button and cannot be checked in until payment completes.
  • 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, when Roster Status is Active, return to play is clear, and the profile was not merged away. 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), Charge now (Stripe Checkout) if Connect is set up, or Card reader when an online reader is paired at the event’s site. Card reader keeps the registration unpaid until the card succeeds. Leave Registrations and come back to finish, try again, or cancel that payment. If the card already went through, Cancel payment marks the registration paid. Offline mode and Tap to Pay are not available. Bulk import still uses due or waive/comp only. 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 when that person is already on this gym’s roster. It opens their profile so you can assign a membership plan (opt-in; no auto-enroll). Athletes from another gym in the league do not get that link. 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. The gym that creates the league is the founding gym. It owns the name, seasons, divisions, and ruleset.

On the league page, an admin at the founding gym invites other gyms. Owner email and Send invite send a link that expires. The owner signs in with a verified email and picks a gym they own. A franchise organization cannot accept the invite. That works for any gym. If this gym is in a Franchise HQ, Franchise location and Invite location list the other locations so you can invite one in a step. Withdraw invite cancels a pending invite. Remove gym keeps an accepted gym as a former member. Past events, standings, and results stay on the league. A former member can still open the league and see those seasons, divisions, the ruleset, and events, and cannot host new events in that league. That gym’s staff no longer see other gyms’ athletes on Registrations, and they cannot add those athletes to an event. The founding gym stays and can invite that gym again. They stay listed as a former member, and can still open the league, until the owner accepts. Withdraw invite cancels only that new invite. Accepting does not happen just because both gyms share a Franchise HQ. An accepted gym sees seasons, divisions, the ruleset, and events from every host. It cannot edit those. Only the founding gym can. Opening an event your gym hosts goes to that event. Opening another gym’s event shows a read-only League Event page with the host, schedule, and fee. Registration on that page says online registration is closed when the host has closed it. It does not open that gym’s registrations or timing. The league address works as the id or the web address slug.

When the invited address already has a Warrior Competitions account, the same link also arrives in Messages from the founding gym. That thread is sent even when messaging is turned off, and the person does not have to already belong to the founding gym. If the address has no account yet, only the email is sent.

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.

A season on this page is a name and a date window. There is no season fee, and Warrior Competitions does not charge one. The host gym sets the entry fee on each event.

Send recap on a season emails the owners and admins of this organization. Someone who turned off league recaps under Notification Preferences is skipped.

On New event or Edit event, League lists local leagues this gym founded or has accepted, plus a sanctioned major-league season this gym is approved to host. An event cannot be both a local league event and a sanctioned major-league event. A local-league event still belongs to the gym that hosts it. That gym sets the entry fee, including $0. A fee above $0 is charged to the host’s Stripe account. A Corporate-Owned location on the HQ Stripe account charges the HQ account. A franchised location charges its own Stripe account.

Turn Open to the public on when anyone may register. Leave it off when only athletes whose home gym has accepted the league may enter. That check uses the signed-in verified account, not the email typed on the form. Close online registration on the event form, or Close registration now on the event page, stops online signup before the event ends. That is enforced when someone submits the public form or a family group registration. Staff can still add people on Registrations. The entry keeps the athlete’s home gym. A family can also register from athlete Events. Season standings count every host gym’s events in that season.

Every event, league or not, asks a competitor to sign the hosting gym’s waiver at signup unless they are signed in with a verified account that is already an active member of that gym, or of another active gym in the same Franchise HQ and the same state. Typing an email does not count. A gym in that Franchise HQ in a different state does not skip it, and a gym in a different Franchise HQ does not skip it. Being in the league does not skip it. The signature is stored on the host gym for that signup only. It does not cover a different registration that uses the same email. Each athlete has their own profile and waiver. A parent’s waiver does not cover a child who registers with the parent’s email. When the name and date of birth match a person at that gym but the email is different, the registration can use that profile. It does not change the profile’s email, phone, or emergency contact. It does not use that profile’s waiver or a signature from another registration. Check-in stays blocked until a host waiver is signed for that registration. That registration shows Host Waiver in the athlete portal even when the profile already has a waiver on file. Adding or importing an athlete with an email that is already on another registration does not replace that registration. The new person gets their own ticket. A signed-in public checkout does not replace an unclaimed walk-up. The card payment and the host-waiver signature stay on that new registration. A matching email does not file them on the front-desk walk-up person. Check-in uses the same rule: a member of the host gym, or of a same-state gym in its Franchise HQ, checks in on the waiver already on file at their gym. Everyone else needs the host signature on that registration first. If staff added the athlete, the family signs that waiver on the registration in the athlete portal. An athlete under 18 has the parent or guardian recorded as the person who signed, including their name and, when available, their relationship and email or account. A minor cannot finish signup without that parent or guardian. A host signature for a different email is stored on that registration and is not filed on the child’s roster profile. The parent or guardian is recorded as the signer. A different registration still needs its own host waiver. Guest checkout does not show the host waiver until a minor enters the parent or guardian name, and it does not continue without that name. On Host Waiver, a minor enters the parent or guardian name and relationship. An adult is recorded as signing for themselves. Family group checkout asks for the parent or guardian name and relationship when a selected athlete is under 18. A registration paid by someone else shows Host Waiver in the athlete portal even when the roster email matches, and after it is signed that page shows the waiver as signed for that registration. Family group registration uses the same name and birth date match.

Franchise HQ

In the app: Franchise HQ

RoleOwner, admin, HQ admin, and regional manager of a Franchise HQ can open Franchise HQ. A regional manager sees only locations in the states or regions assigned to them. Editing a location, removing a location, and canceling or resending an invite are owner only. HQ admin and admin can edit royalty percent and regions. They cannot change another person’s role. Location owners, staff, and coaches keep running their own gym. HQ does not take over gym operations. HQ admin and regional manager are Franchise HQ roles. They are not gym roles.

A Franchise HQ sits above gyms. Start a Franchise HQ creates that organization. The portal switcher lists it as Franchise HQ. The sidebar has Locations for everyone who can open Franchise HQ. Settings and Payment Settings are for an owner, HQ admin, or admin. Suggestions is in that sidebar too and opens Suggestions. Name and email are filled from your account, and the message includes this Franchise HQ. support@warriorcomps.com is shown under the form.

Locations shows every gym you can see, split into Corporate-Owned and Franchised by the location’s current ownership. Each location appears once. Pick a Month, then Ownership and State, then Apply filters. A regional manager’s State list is only the states assigned to them. All states shows every location they can see. Each location shows the current active roster and member names, events that start in that month, and the collected charges, refunds, royalty base, royalty percent, and royalty owed for each set of terms in that month. Next event is the soonest event that has not ended. Invited locations appear before the owner accepts. Download all locations exports one row per location you can see, including that gym’s time zone. Download this location exports that one gym.

The royalty base is collected charges minus refunds in the selected calendar month, using that gym’s time zone. An invited location that does not have a gym yet uses the Franchise HQ time zone. Collected charges are membership, event, league, and desk payments that succeeded in that month, including a Desk POS or event Card reader charge and a charge that was refunded later. Store credit is not included. Refunds are refund rows in that month whose status is succeeded, pending, or refunded. A refund follows the ownership and royalty percent of the original charge when they share a Stripe payment. Otherwise it uses the terms in effect when the refund was posted. Royalty owed is the royalty base times the royalty percent, rounded to the cent, and only for the franchised portion. Corporate-Owned money is shown with royalty owed of $0. A refund larger than that month’s collections can make the franchised royalty owed negative. This is a report. Warrior Competitions does not transfer royalty and does not create a Stripe charge, refund, or transfer from this page.

An owner, HQ admin, or admin sets Royalty % for New Charges on a location and chooses Save royalty. The percent can be from 0 to 100, with up to two decimal places. Saving it applies to charges that succeed after the save. It does not change charges that already succeeded. Changing Corporate-Owned or Franchised, or changing payouts, works the same way: past charges stay on the gym and keep the ownership, royalty percent, and payouts that were in effect when the charge succeeded. The month report reads those charges and refunds directly.

Active members are the current roster. They are not a count from the last day of the month. Events are events that start in the selected month in that gym’s time zone.

The platform minimum is separate from royalty. Gym-management card sales and competition entry fees both count toward that minimum. The $30 minimum for each location starts on the first full Central Time month after that location’s 60 days, with no charge for a partial month. Billing months run on Central Time. A location that starts July 15 has no minimum through September 15. Its first billed month is October. The 1% still applies during those 60 days. A gym with 3 locations has a $90 minimum. A waiver delays only that location’s $30 minimum. The 1% still applies during a waiver. A corporate location on the HQ Stripe account is paid by the Franchise HQ card, once per location. A franchised location pays on its own card in that gym’s Payment Settings. About seven days before a location’s first full Central Time month, the payer gets one email. The email says months run on Central Time. A missed day is sent once on the next daily run. A charged month’s receipt shows that location’s minimum, the fees collected, and the difference charged. End billing on a location stops only that location’s $30 monthly minimum. That month can still show a floor and an estimated shortfall. A later month shows a $0 floor and a $0 estimated shortfall for that location. Fees collected still show. The 1% fee on card sales continues, and the gym can keep taking payments. The royalty CSV does not include the minimum.

A franchised location uses its own Stripe account. Only a Corporate-Owned location can use the HQ Stripe account. On a franchised location, Payouts does not offer HQ Stripe account, and the form explains why. Changing Ownership to Franchised does not switch Payouts by itself. Saving a franchised location on the HQ Stripe account is refused, including a switch from Corporate-Owned to Franchised while payouts are still the HQ Stripe account. Choosing Location Stripe account is also refused until that gym has connected Stripe under its own Payment Settings. The message is to connect this location’s own Stripe account first. A new location invite is different: the owner accepts, then connects Stripe on Payment Settings. A franchised location that already uses the HQ Stripe account is not switched. Franchise HQ shows a Needs Own Stripe Account badge on that location and a count of those locations at the top. The location stays in the month report and in Download all locations and Download this location. Changing payouts does not move old charges onto a different account in this report.

Organization Settings for a Franchise HQ is the name, logo, Payment Settings, messaging, team, and Regions. Gym address, payroll, classes, trial pages, households, and waivers stay on each location. Only an owner can invite HQ Admin. An owner or HQ admin can invite Admin. An owner, HQ admin, or admin can invite Regional Manager, Staff (Front Desk), and Coach. A regional manager invite needs at least one state or region. Changing someone’s role to Regional Manager asks for that same state or region before Save role. If that person already belongs to the Franchise HQ, accepting the invite changes their role to Regional Manager and applies the states and regions on the invite. The only owner cannot accept a lower role until another owner is assigned, and that invite stays open. After they accept, Save scope on their row changes which locations they see. With no state and no region checked, they see no locations. Only an owner can change someone’s role. Delete region asks you to confirm and names the regional managers who will lose that region.

Waivers stay on each location. An athlete skips another location’s event waiver only when both gyms are active in this Franchise HQ and in the same state. A location in a different state still collects its own waiver.

  1. Invite a Location Owner with a location name, email, state, ownership, and payouts. HQ Stripe account is available for Corporate-Owned. A Franchised invite uses Location Stripe account. Warrior Competitions emails the link. The owner signs in, or creates an account, and chooses payouts. A franchised invite does not offer the HQ Stripe account. If they already own a gym on Warrior Competitions, they are the owner, and that gym is not already in a franchise, they can link that gym. Otherwise accepting creates a new gym.
  2. Or Add a Gym You Own if you are already the owner of a gym that is not in another franchise. The same payout rule applies: Franchised uses the location’s own Stripe account.
  3. Connect the shared account under Payment Settings when corporate locations use the HQ Stripe account. A franchisee connects their own account in that gym’s Payment Settings.
  4. An owner can change a location’s state, Corporate-Owned or Franchised, and payouts, then Save location. Switching a Corporate-Owned location on the HQ Stripe account to Franchised is refused while payouts stay on the HQ Stripe account. It is also refused if Location Stripe account is selected and that gym has not connected Stripe yet. Connect the account in that gym’s Payment Settings, then save again. State, Ownership, and Payouts then show the saved values. Remove location on an active location takes that gym off the Franchise HQ. The gym itself stays. A pending invite uses Cancel invite, which drops the invite so the link stops working, and Resend invite, which emails a new link. Remove location is not on a pending invite.

LimitHQ can read location rosters, revenue, refunds, events, and royalty owed. It cannot check people in, edit classes, or change a location’s members. A Franchise HQ does not own a local league and cannot open Seasons / Local Leagues. Shared brand kits, franchise passes, shared athlete profiles, series leaderboards, and member import are not part of this.

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, Suggestions). 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 name must be unique among gyms, leagues, and franchise organizations. Capitalization and spaces at the start or end do not make it a different name. If that name is already used, the form shows an error and the inquiry is not sent.

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.

The League Portal does not send a season recap email. A gym admin sends that from Seasons / Local Leagues with Send recap. An owner or admin who turned off league recaps is skipped.

  • 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.

  • Display Name — the league name shown in Warrior Competitions. Admins change League name and choose Save name. A name already used by another gym, league, or franchise organization is refused, including capitalization-only changes and spaces only at the start or end. Saving a new name does not change the public address (/l/your-league).
  • 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

Suggestions

In the app: Suggestions

Open Suggestions at the bottom of the League Portal sidebar. Coach and above see it.

  1. Choose a topic: Question, Suggestion, or Bug. The form starts on Suggestion.
  2. Write the message and choose Send message.

Name and email are filled from your account. The message includes this league. support@warriorcomps.com is shown under the form. League onboarding still uses League Inquiry or 321go@warriorcomps.com.