Skip to main content

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)

FieldWhat it doesDefault
salaryCapSum of every active+reserve cap hit must fit under this95.5M USD
maxForwardsMax active forwards on a roster12
maxDefenseMax active defensemen on a roster6
maxGoaliesMax active goaltenders on a roster2
maxMonthlyChangesRoster moves allowed per calendar month per team5
unlimitedChangeDaysComma-separated days of the month when monthly limit doesn't apply"1,15"
maxNhlTeamsPerTeamMax 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)

FieldWhat it doesDefault
tradeDeadlineDate after which new trade proposals are blockedunset (open all season)
rosterFreezeDateDate after which roster moves are blocked entering the playoffsunset
freeAgentWindowStartDate the free agent period opensunset
freeAgentWindowEndDate the free agent period closesunset

See Trade Deadline Rules for how the trade deadline check fires.

Free agent period

The free agent window limits when a free agent pick can be spent. Outside the window, a GM cannot claim a free agent or use a pick; the controls are disabled and the server rejects the request. Nothing else is affected — trades, drops, and moving players between active and reserve all continue to work normally.

Both dates are optional and independent:

  • Both unset — free agent picks can be spent at any time. This is the default and matches how leagues behaved before the setting existed.
  • Opens only — picks cannot be spent until that date, then stay available for the rest of the season.
  • Closes only — picks can be spent from the start of the season until that date.

Both dates are included in full: a window of October 1 to October 15 is open from the first moment of October 1 through the last moment of October 15.

Commissioners and system admins are not restricted by the window, so a commissioner can still process a pickup for a GM after the period closes.

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:

FieldWhat it doesDefault
scoringFormatroto (accumulating totals) or h2h (weekly head-to-head matchups)roto
h2hWeeksPerSeasonWeeks in the H2H regular season18
h2hPlayoffWeeksPlayoff weeks (0 = no playoffs)3
h2hPlayoffTeamsTeams making H2H playoffs (4, 6, or 8)4
topXForwards / topXDefense / topXGoaliesBest-ball top-X scoring counts9 / 4 / 1

See Scoring Rules and Position-Based Scoring for how the points engine reads these.

Draft (Draft tab)

FieldWhat it doesDefault
draftTypeDefault draft type for new drafts (snake / linear / lottery / auction)snake
draftRoundsNumber of rounds in the default draft20
draftPicksPerSeasonPick allotment per team per season4
freeAgentSlotsPerSeasonFree-agent picks per team per season2
auctionBudgetStarting budget for auction-draft teams200
auctionTimerSecondsBidding clock window30
auctionMinBidMinimum bid increment1

See the Drafts Overview article for what each draft type does on the room side.

Trades (Features tab)

FieldWhat it doesDefault
tradesEnabledMaster switch for the trade systemon
tradeApprovalRequiredWhether accepted trades wait in a commissioner queueon
tradeApprovalThresholdNumber of assets that triggers the approval requirement1

See Trade Approval Workflow for the cycle this controls.

Free agents (Features tab)

FieldWhat it doesDefault
freeAgentApprovalRequiredWhether FA pickups queue for commissioner approvaloff
faDropOnPickupDefaultWhether the drop selector is open by default on a pickupoff
freeAgentDropRequiredWhether every claim must name a player to dropoff
freeAgentValidationEnforcedCap+position checks at FA submit and inside the approve transactionoff

freeAgentDropRequired makes pickups roster-neutral: the claim form will not submit until a drop is chosen, and the server rejects a claim without one. It needs freeAgentApprovalRequired to be on, because the claim form is the only pickup path that carries a drop. Commissioners are not exempt — to add a player without a drop, use the direct-add button on the player list, which skips the free-agent flow entirely. When it is on, faDropOnPickupDefault has no effect: the selector is always open.

Feature toggles (Features tab)

FieldWhat it doesDefault
salaryCapEnforcedCap is hard-blocked at transaction time (off = advisory only)on
positionLimitsEnforcedPosition limits hard-block (off = advisory only)on
monthlyChangeLimitEnabledMonthly roster change limit is enforcedon
gameDeadlineEnabledNHL game-day roster deadline is enforcedon
rosterMoveCutoffMinutesMinutes before first NHL game to lock roster moves0
undoEnabledThe undo-roster-changes feature is availableon
undoWindowMinutesHow long after a move you can undo it15
rosterChangePermissionWho can make roster changes: owner or commissionerowner
picksEnabledWhether draft picks and FA picks are shown anywhere in the UIon
scheduledDropsEnabledThe scheduled-drop compliance system is activeoff
achievementsEnabledWhether the achievements system is activeon
nhlTeamPointsEnabledNHL standings points contribute to fantasy team scoringoff

Keeper settings (Keeper tab)

FieldWhat it doesDefault
keeperSlotsNumber of players each team can retain across seasons5
keeperDeadlineStartWhen keeper selection opens (unset = not open)unset
keeperDeadlineEndWhen keeper selection closes (unset = no deadline)unset

Integrations (Discord tab)

FieldWhat it doesDefault
discordWebhookUrlWebhook URL for posting league events into a Discord channelunset
leagueTypedynasty (multi-season) or redraft (annual) — drives keeper/draft behaviordynasty

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