League Settings Reference
2026-05-11
League Settings Reference
Every per-league rule, limit, and toggle lives on the LeagueSettings row for your league and is editable from /admin/league-settings. This article is the field-by-field map — what each setting does, where the default comes from, and which tab it lives under.
How settings are organized
The /admin/league-settings page is split into tabs that match the categories below. Every field is editable in place; saving writes back to LeagueSettings for your league and takes effect immediately for any new transaction. When new settings ship in future phases, their defaults preserve current behavior — your existing league does not change unless you actively flip a toggle.
Roster rules (Roster tab)
| Field | What it does | Default |
|---|---|---|
| salaryCap | Sum of every active+reserve cap hit must fit under this | 95.5M USD |
| maxForwards | Max active forwards on a roster | 12 |
| maxDefense | Max active defensemen on a roster | 6 |
| maxGoalies | Max active goaltenders on a roster | 2 |
| maxMonthlyChanges | Roster moves allowed per calendar month per team | 5 |
| unlimitedChangeDays | Comma-separated days of the month when monthly limit doesn't apply | "1,15" |
| maxNhlTeamsPerTeam | Max NHL teams a fantasy team can draft (NHL Team Points feature) | 1 |
See Salary Cap and Position Limits and Monthly Roster Changes for the rules in practice.
Scheduling (Scheduling tab)
| Field | What it does | Default |
|---|---|---|
| tradeDeadline | Date after which new trade proposals are blocked | unset (open all season) |
| rosterFreezeDate | Date after which roster moves are blocked entering the playoffs | unset |
See Trade Deadline Rules for how the trade deadline check fires.
Scoring (Scoring tab)
The scoring rules live in a separate ScoringConfig model (per-position weights for goals, assists, plus-minus, etc.), but two top-level settings on LeagueSettings control the overall scoring shape:
| Field | What it does | Default |
|---|---|---|
| scoringFormat | roto (accumulating totals) or h2h (weekly head-to-head matchups) | roto |
| h2hWeeksPerSeason | Weeks in the H2H regular season | 18 |
| h2hPlayoffWeeks | Playoff weeks (0 = no playoffs) | 3 |
| h2hPlayoffTeams | Teams making H2H playoffs (4, 6, or 8) | 4 |
| topXForwards / topXDefense / topXGoalies | Best-ball top-X scoring counts | 9 / 4 / 1 |
See Scoring Rules and Position-Based Scoring for how the points engine reads these.
Draft (Draft tab)
| Field | What it does | Default |
|---|---|---|
| draftType | Default draft type for new drafts (snake / linear / lottery / auction) | snake |
| draftRounds | Number of rounds in the default draft | 20 |
| draftPicksPerSeason | Pick allotment per team per season | 4 |
| freeAgentSlotsPerSeason | Free-agent picks per team per season | 2 |
| auctionBudget | Starting budget for auction-draft teams | 200 |
| auctionTimerSeconds | Bidding clock window | 30 |
| auctionMinBid | Minimum bid increment | 1 |
See the Drafts Overview article for what each draft type does on the room side.
Trades (Features tab)
| Field | What it does | Default |
|---|---|---|
| tradesEnabled | Master switch for the trade system | on |
| tradeApprovalRequired | Whether accepted trades wait in a commissioner queue | on |
| tradeApprovalThreshold | Number of assets that triggers the approval requirement | 1 |
See Trade Approval Workflow for the cycle this controls.
Free agents (Features tab)
| Field | What it does | Default |
|---|---|---|
| freeAgentApprovalRequired | Whether FA pickups queue for commissioner approval | off |
| faDropOnPickupDefault | Whether the drop selector is open by default on a pickup | off |
| freeAgentValidationEnforced | Cap+position checks at FA submit and inside the approve transaction | off |
Feature toggles (Features tab)
| Field | What it does | Default |
|---|---|---|
| salaryCapEnforced | Cap is hard-blocked at transaction time (off = advisory only) | on |
| positionLimitsEnforced | Position limits hard-block (off = advisory only) | on |
| monthlyChangeLimitEnabled | Monthly roster change limit is enforced | on |
| gameDeadlineEnabled | NHL game-day roster deadline is enforced | on |
| rosterMoveCutoffMinutes | Minutes before first NHL game to lock roster moves | 0 |
| undoEnabled | The undo-roster-changes feature is available | on |
| undoWindowMinutes | How long after a move you can undo it | 15 |
| rosterChangePermission | Who can make roster changes: owner or commissioner | owner |
| picksEnabled | Whether draft picks and FA picks are shown anywhere in the UI | on |
| scheduledDropsEnabled | The scheduled-drop compliance system is active | off |
| achievementsEnabled | Whether the achievements system is active | on |
| nhlTeamPointsEnabled | NHL standings points contribute to fantasy team scoring | off |
Keeper settings (Keeper tab)
| Field | What it does | Default |
|---|---|---|
| keeperSlots | Number of players each team can retain across seasons | 5 |
| keeperDeadlineStart | When keeper selection opens (unset = not open) | unset |
| keeperDeadlineEnd | When keeper selection closes (unset = no deadline) | unset |
Integrations (Discord tab)
| Field | What it does | Default |
|---|---|---|
| discordWebhookUrl | Webhook URL for posting league events into a Discord channel | unset |
| leagueType | dynasty (multi-season) or redraft (annual) — drives keeper/draft behavior | dynasty |
Privacy
The League.isPublic field (one level up from LeagueSettings) controls whether the slug-addressable /public/{slug} standings and team pages are visible to non-members. Public leagues appear in the global league list; private leagues are invitation-only.
Defaults are designed to mirror a standard dynasty-style fantasy hockey league. You can change every value — there is no setting that's "FanPoolHQ-wide" or unchangeable per league. When new settings ship in future FanPoolHQ releases, their defaults preserve current behavior so your league is never silently changed underneath you.
See also
- Commissioner Tools — the broader admin surface
- League Setup Wizard — initial configuration walkthrough
- Salary Cap and Position Limits, Monthly Roster Changes, Trade Deadline Rules, Scoring Rules, Pool Scoring and Deadlines — settings in context