Frequently asked questions

Staty help & FAQ

How to run your leagues and tournaments with Staty. Can’t find what you need? Contact us.

Seasons & Tournaments

In the Admin dashboard, open the Structure tab (under League Management), and in the Leagues section click Add League. Name it for the season (e.g. "Spring 2026"), then add that season's divisions under it. A season in Staty is a standalone league.

Open the Structure tab and click Add Tournament, then expand it to add contests (e.g. Mens, Womens, Co-ed) and their divisions inline. Open a division to choose its format and bracket size, then create a registration to accept teams.

Yes. In the Structure tab, open the season's or tournament's ⋯ menu and choose Clone. Pick Clone Divisions (and, for tournaments, Clone Sections & Divisions or Clone Registration) to bring the structure and settings along. Cloning copies configuration only — not teams, games, or scores — so the new one starts fresh.

Yes. In the Structure tab, open the division's ⋯ menu, choose Clone, and name the copy — it appears as a sibling in the same season or contest. The copy brings the settings across (tiebreakers, capacity and waitlist, format, min/max players, eligibility, stat columns) but no teams, players, games or pools. One thing to know: a cloned division has no price of its own and inherits one from the level above, so if the original charged its own fee, set it again from the copy's ⋯ → Payment. That keeps the two divisions' prices independent.

The Structure tab lists every tournament; expand each to see its contests and divisions. Each has an Active switch to archive or unarchive it. Note that Active means "not archived," not "currently in season," so a long list of active tournaments is normal.

The dates you control per season are the registration open and close dates, set on the registration. Seasons and divisions are created name-only in Structure, so a season's own start date isn't edited there (it can be changed via the API if needed). Your league's public site lives at a your-slug.staty.io subdomain chosen when the organization was created; custom domains aren't supported yet.

Divisions & Teams

In the Structure tab, click Add Division on the season's (or a tournament contest's) row and name it. Then configure capacity, min/max players, and eligibility from the division's ⋯ → Settings.

Open the division from the Structure tab and click Add Team. If the division has a registration, the team is linked to it automatically and stays off the public page until accepted — or check "Force team onto division" to place it immediately (payment/waiver can be handled on paper). You can also check "Send registration invite to team manager" to email the manager a link to finish registration and payment themselves.

In the Structure tab, expand the contest and drag the team's row onto the target division within the same tournament or season. Staty checks the destination division's eligibility before moving.

When you add a team on the division page, the Add Team dialog has a roster section — click Add Player for each player (the number required follows the division's min/max players). You can also manage a team's players later from the team's page.

Open the team's page and find the player in the Players list — the Actions column has a trash icon beside the edit pencil. Click it and confirm. If your fee is per player, the team's amount due drops accordingly. If that player already paid, the confirmation tells you how much: their payment still counts toward the team, so it will show as overpaid until you issue a refund — removing a player never refunds anything by itself.

Delete a division from its ⋯ → Delete in the Structure tab (this can't be undone). If teams still reference it, the confirmation warns you with the counts first. Removing a team is a soft delete done from the Registrations page — an Undo toast appears immediately, and a Deleted teams section lets you Restore a removed team (and its division placement) later. A team with unrefunded payments must be refunded before it can be removed.

They aren't deleted. The teams stay on the registration and keep pointing at the deleted division, so their history is intact — but they drop out of that division's capacity and waitlist counts, and the division disappears from the Structure tree and every public page. On the registration page those rows still show the division name marked "(deleted)" in both the Requested line and the Division dropdown, they stay visible even with a division filter applied, and you can move them to a live division from that dropdown to have them counted again.

Min/max players is a config field, so the most specific level wins: division, then contest, then tournament, then registration. If a contest or division sets its own max players, that overrides the registration's for teams in it — a 4-on-4 contest set to 8 allows 8-player teams even when the registration says 5. The number a team is shown on the roster form is the number enforced when they save. To make one number apply everywhere, clear min/max players on the contests and divisions (Structure → ⋯ → Settings) and set it only on the registration. Left blank at every level means there's no maximum. If you lower a max after teams registered, any roster already above it can still be saved or shrunk — just not grown.

It does apply — but only to divisions and contests that haven't set that toggle themselves. Visibility settings follow the config hierarchy: the most specific level wins, so a value saved on a division overrides its tournament. Open the division's ⋯ → Settings: if the toggle says "Inherited from …" it's following the tournament and nothing more is needed; if it doesn't, that division has its own value, so flip it to match. The same is true of Hide Teams, Hide Standings and Show Stats, and it works both ways — a tournament can hide schedules everywhere while one division switches them back on.

On the Registrations page (or under Settings), enable "Manually Lock Roster Changes" and set a lock date. This freezes edits to existing rosters. It's separate from the registration close date, which stops new teams from signing up.

Open the division from the Structure tab — its page shows a Teams card listing every team in the division. The Registrations page also lists teams with their payment and waitlist status, and your public site shows a "Teams by Division" list to visitors.

Every team row on the Registrations page has a Status dropdown. Pending is the default for a new registration. Accepted officially places the team in its division — but note it doesn't guarantee a spot, since capacity still follows payment and first-come order. Waitlist forces the team onto the waitlist whatever that order says, freeing its spot for the next team. Withdrawn records a team that dropped out.

The team is hidden from the Structure tab, your public division team lists, and the public "Teams by Division" roster, and it stops counting toward division, Registrations, and Players totals — its capacity spot is freed for the next team in line. Nothing is deleted: the team stays on the Registrations page marked Withdrawn, keeps its division, and keeps its payments, so Total Payments still reconciles against Stripe. Its manager sees "Application Status: Withdrawn". Withdrawing never issues a refund — do that separately if money should go back. That's the point of Withdrawn: a team with unrefunded payments can't be removed, so this is how you record a paid team that drops out. Set the status back at any time and the team returns everywhere.

Games, Scores & Stats

Open a division and click Create Game to add one game, or Auto-Populate Games to generate the whole schedule from the division's format (round robin, pool play, or a playoff bracket). Larger day-of scheduling is available from the Schedule tab.

Yes. Open a tournament's day scheduler and click Bulk import, then upload a CSV with Division, Home Team, Away Team, Date, Time and Location columns (a template is downloadable there). Teams are matched by name within each division, and nothing is written until you review the preview — rows with problems are flagged and skipped. You can even schedule placement games before their teams are known: a row like "1st Place - Division A" vs "2nd Place - Division A" imports as a placeholder that displays under Championship or 3rd Place Game until the matchup is decided.

Use the Game Results page (under League Management), which lists every game still missing a score. You can type the score directly and save, or use Scan Scoresheet to photograph a paper scoresheet and let AI fill in scores and stats for your review.

Reopen the game on the Game Results page or the division page and edit the score. To see who changed what and when across your organization, use the Activity Log under System & Tools.

Yes. In the Structure tab, open the ⋯ menu on a division, season or tournament, choose Settings, and turn off Show Stats. It cascades, so switching it off on a season hides stats for every division below it unless one sets its own value. Visitors then lose the Leaderboard tab, team and player stats tabs, and the per-player box score — including if they follow an old link straight to one of those pages. Importantly, this does not hide results: schedules, final scores, standings and brackets all stay public, and a game page still shows its final score. To hide those, use Hide Schedules and Hide Standings instead. Turning it back on restores everything; nothing is deleted.

Open a game's stats page, where each player has an editable row of stat fields for that sport. Enter the values and Save. The available columns follow the sport and the division's tracked-stats settings.

Use the Venues tab (labeled Courts for court sports like pickleball). Click Add Location to create a venue with a name and address; games reference these venues when you schedule them.

Open the division from the Structure tab to see its games and results, use the org-wide Schedule tab for scheduling across divisions, or view the public schedule on your league's site.

In the Structure tab, open the ⋯ menu on a division (or a league/tournament for defaults) and choose Tiebreakers. Pick and order the active tiebreakers for your sport (e.g. Head-to-Head, Points Scored); standings apply them in that order. The same panel has one all-sports setting, Break playoff ties by higher seed.

By default a tied playoff game has no winner and a bracket slot keeps its placeholder. Turn on Break playoff ties by higher seed (Structure → ⋯ → Tiebreakers) to award it to the higher-seeded team: they're highlighted on the public standings page with a Seed tag and advance automatically in the bracket. Teams with no seed fall back to their regular-season standings position. Regular-season ties are unaffected, and a 0–0 game is treated as unplayed.

Payments & Financials

On the registration's admin page, the Payment Status filter narrows the team list to Partial Paid, Fully Paid, or Unpaid, and each team row shows a payment badge. The Payments (Transactions) page shows the full ledger of payments and refunds.

Refund a whole team from the registration page (Refund Team — choose an existing payment or enter a custom amount), or refund an individual payment (full or partial) from the Refund button on the Payments page. Staty records refunds as negative entries so collected totals net out.

The Payments tab (under Financial) opens the Transactions page, listing all payments and donations with refund status, plus an Export button for a CSV.

Attach a Payment Product at the level you want — division, contest, tournament, or registration — using the ⋯ → Payment menu in the Structure tab; the most specific level wins. Manage the product catalog under Pricing (Payment Products).

Open the team's page, tick Has Paid, enter the Custom Paid Amount, and add a note (required — Staty records which admin entered it). The team then counts as paid for capacity and status.

Staty is free to use with no monthly fees and no limits on leagues, tournaments, divisions, or admins. The only charge is a 1% platform fee on the registration payments you collect; Stripe's standard 2.9% + $0.30 per transaction applies separately. If you don't collect payments, Staty costs nothing.

Staty uses Stripe Connect, so registration payments settle directly into your own Stripe account. Payment products can charge per team or per player, and per-player pricing can either have the team owner pay the lump sum or have each player pay their own share via a separate checkout.

Create fixed-amount codes on the registration admin page (with optional max uses and expiry). Registrants enter a code at checkout; it applies per player on per-player pricing (or once per team), combines with early-bird/late/multi-team pricing, and locks in when applied. A code covering the full amount completes registration with no payment.

Yes. Each registration has a Test Mode toggle that runs the full payment flow through Stripe's test environment (use card 4242 4242 4242 4242) with no real charges. Test teams and payments are stamped as test data and hidden from public pages. Turn Test Mode off before sharing the registration link.

Notifications & Communication

On a team's page, select players and click "Email selected to finish registration" — each gets a link to the registration page where they sign in with that email to sign any required waiver and pay their share. You can also Resend registration invitation to a team's manager. There isn't a bulk broadcast to all managers at once.

Open Email Templates under System & Tools. You can edit the Team Registration Confirmation and Payment Confirmation templates — their subject, body (with insertable variables), and an on/off toggle. Other transactional emails are system-managed.

When a team registers, Staty automatically emails the submitter a confirmation and notifies division, league, and tournament admins. Keeping the Team Registration Confirmation template enabled (in Email Templates) ensures registrants receive their confirmation.

Admin & Configuration

Yes. Your public homepage is a posts feed: dated announcements shown newest-first. The Site Editor shows your page exactly as visitors see it, and you edit directly on it — click + under Home Page Posts to write a post, type the title and body in place, and add photos, YouTube videos, maps, buttons, or columns from the block palette. Everything saves automatically; posts start as drafts and go live when you click Publish. Show/hide switches control whether the title and date appear on the card — the date still orders the feed even when hidden.

Yes. In the Site Editor's Pages section, click + to create a page — its name becomes the address (a page called Sponsors lives at /sponsors). New pages start hidden; build them with blocks (text, images, video, buttons, columns), then flip Show in navigation and the page appears in your public site's top menu, ordered however you choose.

Yes. The Site Editor is block-based: insert a Columns block (2–4 columns, with width ratios like 1:2 for an image beside wide text — columns stack automatically on phones) and resize any image by dragging the handle on its corner or with the width slider. What you compose in the editor is exactly what renders on your public site.

Open the Admins tab and click Invite to Organization, then enter the person's name, email, and role. You can also revoke pending invitations and promote or demote existing members.

There are two roles: Super Admin (full access) and Limited Access (a member whose reach is narrowed by Access Scopes — a checklist of specific tournaments, leagues, and divisions they may manage). Set a member's role and scopes from the Admins page.

Open Activity Log under System & Tools. It shows an audit of admin actions — who, what change, which page, and when — with filters by user, action, and URL.

Staty exports to CSV: team and player rosters from a registration's Exports menu, transactions from the Payments page's Export button, and divisions and games from the divisions grid's ⋯ menu. (There is no Excel/.xlsx export.)

Yes. The Site Editor is a visual, block-based editor for your public site — homepage posts, custom navigation pages, per-division notices, and the welcome page new visitors see before your first post — edited directly on a live preview of the page. The banner editor in Settings lets you upload a custom banner image or generate one with AI. (There isn't a dedicated sponsor-logo uploader; add sponsor artwork through the Site Editor or as a banner image.)

Open Settings under System & Tools to edit your display name, location, about text, contact emails, business details, feature toggles, payments/Stripe connection, notifications, and roster-lock dates.

Getting Started & General

The breadcrumbs show your current location in the hierarchy (for example, Home → Divisions → a specific division) and let you click back up a level.

Click the Staty logo in the top bar, or the Dashboard item in the sidebar, to return to the main dashboard.

Staty supports basketball, soccer, volleyball, pickleball, and more, each with its own stat categories. Your organization's sport is chosen once when you create it.

Yes — every league gets a public site at your-slug.staty.io with schedules, standings, and stats, viewable in any browser with no app required. Native player apps are available for those who prefer them.

Yes. Staty gives you an iframe snippet (from the Embed button on a registration) to drop registration — including payment — directly into your own site. Registrations land in the Admin dashboard as usual.