← Help

Invite & join codes

There are two ways to get players onto a season's roster. They work side by side — use whichever fits, or both.

Per-slot invite codes

You build the roster ahead of time — add each player as a slot — and the app gives every slot its own one-time code. Hand the right code to the right person; when they sign in and claim it, that slot becomes theirs. Best when you already know exactly who's playing and want their name/seed set up in advance.

The season join link

One shareable link for the whole season. Post it in your Discord, a group chat, wherever — anyone who opens it signs in and lands on the roster as their own slot. Best when you're opening sign-ups and don't want to chase people one code at a time.

Using the join link

Open a season in the admin area and find the Join link on the roster. Copy it and share it. A player who opens it sees the league name, signs in with Discord (or email), and joins. Their roster name comes from their profile name; if someone already has that name in the season, the app adds a number so names stay unique.

Managing the link is organizer-only. Players never see the code itself — only the link does the work.

Approval (optional)

Off by default: people join instantly. Turn on Require approval and each join waits as a pending request instead. Pending players appear nowhere but your approval queue — not in standings (including the public standings link and the weekly Discord digest), the schedule, matchups, or finals — until you approve them on the roster. Decline removes the request entirely. If a Discord channel is connected, you get a ping for each new request (and the player isn't told when declined).

The cap

Every season has a join cap (default 48) so a stray link can't flood your roster. It counts every slot in the season — players who joined, slots you pre-made, pending requests, and your own organizer slot — so with the default you have room for 47 players plus yourself. Raise or lower it any time.

Turning it off, rotating, expiring

Toggle Open for joining off to close sign-ups without losing the link. Set an optional expiry date and the link stops working after it. Rotate generates a fresh code — the old link immediately stops working, so use it if a link leaked or you want to cut off sign-ups for good.

Discord pings for joins post through the deployed site, so they fire on the live league, not local previews.