Skip to content

Documentation

Queue Settings Reference

Every matchmaking setting in one place — 81 settings across 5 queue types and two modes. Filter down to exactly what applies to your queue.

Settings are configured three ways: options on the /queue_* creation commands, the Admin Actions dropdown on the queue message (Configure … modals), and the web dashboard's queue editor.

Queue type
Mode
Where you set it
Priority
81 settings

Identity & Display

7

What players see: names, images, instructions.

queue_name
Queue Name

Unique identifier for the queue; forms the DynamoDB key `queue_id = client_id|queue_name`. Set once at creation, never editable.

Type string
Default — (required)
Range max 32 chars; unique per server
Create required on every queue command
all queue types headless + hosted essential
title
Display Title

Headline shown on the queue/launcher embed.

Type string
Default the queue name
Create optional on every queue command

Optional at creation — omitting it reuses queue_name as the headline. No Discord configure modal edits the title after creation, so post-creation edits are web-dashboard only.

all queue types headless + hosted web-editable essential
description
Description

Body text on the queue/launcher embed.

Type string
Default — (omitted)
Create optional on every queue command

Like title: optional at creation, and post-creation edits are web-dashboard only.

all queue types headless + hosted web-editable essential
leaderboard
Leaderboard

Which Elo leaderboard this queue's matches record ratings on.

Type string
Default 'default' (runtime fallback `settings.leaderboard || 'default'`)
Create optional: versus/headless, versus/hosted, ffa/headless, ffa/hosted, team/headless, team/hosted, anonymous/headless
Menu Configure Queue Settings

Blank-submit asymmetry in the Discord modal: headless preserves the current value on blank; hosted clears it to null.

all queue types headless + hosted web-editable common
queue_image_url
Queue / Launcher Image

Banner image on the queue/launcher embed.

Type string
Default none
Range must be a valid http(s) URL
Menu Configure Display Settings
all queue types headless + hosted web-editable advanced
post_match_instructions
Post-Match Instructions

Free text shown when players vote on match results (e.g. 'Submit screenshots to #evidence').

Type string
Default none
Range max 1024 chars
Menu Configure Display Settings
all queue types headless + hosted web-editable advanced
join_notification_show_names
Show Player Names in Join Feed

Whether player names are displayed in the queue join list.

Type boolean
Default true (names shown; only literal false hides them)
Values yesno
Menu Configure Display Settings

Discord modal field is named `show_names` but persists as `join_notification_show_names`.

all queue types headless web-editable advanced

Team Composition

8

Sizes, player counts, and how teams are formed.

team_sizes
Team Sizes

Players per team. Versus/team queues are two equal teams; anonymous queues can set the two sizes independently at creation.

Type array
Default — (required at creation)
Range creation: min 1 per team; max 25 enforced on /queue_versus headless and both anonymous sizes (other slots uncapped). Match Rules modal requires > 0 and always writes symmetric [n, n]
Create team_size (versus/team) · team_1_size + team_2_size (anonymous)required: versus/headless, versus/hosted, team/headless, team/hosted, anonymous/headless, anonymous/hosted
Menu Configure Match Rules

The Match Rules modal takes one `team_size` number and writes `team_sizes: [n, n]` plus the display string `versus: "NvN"` — asymmetric sizes are creation-time (anonymous) only. Creation writes a separate `versus_format` display key that the modal does NOT update (see internal keys).

versusteamanonymous headless + hosted essential
min_players
Minimum Players

Players needed before an FFA/co-op match fires (headless) or a lobby can start.

Type int
Default 2
Range ≥ 2
Create required: ffa/headless, ffa/hosted, coop/headless
Menu Configure Match Rules

The web form shows min/max players for every queue type; the Discord Match Rules modal only shows them for FFA/co-op.

ffacoop headless + hosted web-editable essential
max_players
Maximum Players

Cap on players per FFA/co-op match.

Type int
Default = min_players (FFA) / 8 (co-op creation default)
Range ≥ 2; must be ≥ min_players when both are submitted together (not cross-checked against a stored min)
Create optional: ffa/headless, ffa/hosted, coop/headless
Menu Configure Match Rules
ffacoop headless + hosted web-editable common
party_size
Party Size

Players needed to fill a co-op hosted lobby. Also feeds the default lobby size for host customization.

Type int
Default 4
Range 2–20 at creation
Create optional: coop/hosted
coop hosted common
join_grace_period
Join Grace Period

FFA/co-op range queues hold the pop open after min_players is reached: the first crossing arms a grace window of this many minutes so more players can join (up to max_players). Reaching max_players pops instantly; at the deadline the match starts with everyone present.

Type int
Default 2 minutes
Range ≥ 0 minutes
Create optional: ffa/headless, coop/headless

No configure modal edits it — the web queue-settings form is the only post-creation editor. Enforced ONLY when min_players < max_players (creation defaults max_players to min_players when omitted, so queues without an explicit max keep instant pops). The window is armed once per min-crossing and not extended by later joins; if players drop below min before the deadline it clears without a match. Runs on QueueGraceTimeoutWorkflow, recovered by the deploy sweeper.

ffacoop headless web-editable common
team_formation
Team Formation

How players are split into teams when a match forms.

Type enum
Default 'balanced_teams' (modal default; some runtime consumers fall back to legacy `team_mode`, then 'random_teams')
Values balanced_teamsrandom_teamsplayers_choosecaptains_highest_elocaptains_lowest_elocaptains_randomcaptains_volunteercaptains_host_picks*
Menu Configure Match Rules

This is the QUEUE vocabulary. The /host command and lobby runtime use a different `team_mode` vocabulary (see HOST_TEAM_MODES); hosted-lobby creation translates one into the other ('balanced_teams' → 'balance_elo', etc.). The web form additionally offers a bare 'captains' value — the runtime recognizes it (generic captains display mode, part of CAPTAIN_MODES) but no Discord surface offers it.

versusanonymous headless + hosted web-editable common
team_names
Team Names

Per-queue custom team display names, inherited by every match the queue spawns.

Type array
Default defaults ['Red','Blue','Green','Orange','Yellow','Purple','Black','White','Brown'] (index 9+ → 'Team N')
Range each name ≤ 60 chars (silently truncated); Discord input ≤ 500 chars total
Menu Configure Team Names

One Discord paragraph field (`team_names_input`, comma/newline-separated `emoji:name` segments) persists TWO parallel arrays: team_names + team_emojis. Blank resets both to defaults (null).

versusteamanonymous headless + hosted web-editable advanced
team_emojis
Team Emojis

Per-queue custom team emojis (parsed from the same input as team_names).

Type array
Default defaults ['🔴','🔵','🟢','🟠','🟡','🟣','⚫','⚪','🟤'] (index 9+ → '⚪')
Range unicode emoji only, ≤ 16 UTF-16 units; Discord custom emoji (<:name:id>) rejected
Menu Configure Team Names
versusteamanonymous headless + hosted web-editable advanced

Matchmaking Rules

5

Elo gating, rematch cooldowns, unique-choice matching.

max_elo_difference
Max Elo Difference

Maximum rating gap allowed between players when forming a match.

Type number
Default unset = unlimited
Range > 0 to save; blank/0 clears (disabled)
Menu Configure Matchmaking Rules (headless only)
versusffateamanonymous headless + hosted web-editable common
rematch_cooldown_minutes
Rematch Cooldown

Minutes before the same two players/teams can be matched against each other again.

Type number
Default unset = disabled
Range ≥ 0; 0 = never rematch (forever); blank clears
Menu Configure Matchmaking Rules
all queue types headless web-editable advanced
rematch_cooldown_reset_on_new_opponent
Reset Cooldown on New Opponent

Clears the rematch cooldown between two players once either of them plays someone else.

Type boolean
Default false
Values noyes
Menu Configure Matchmaking Rules
all queue types headless web-editable advanced
rival_teams
Unique Choice Matchmaking

Choice-based (faction/position) matchmaking keyed to a leaderboard choice definition: teams are all-same-value or one-of-each-value.

Type object
Default null = disabled
Range requires a leaderboard choice definition with ≥ 2 choices; invalid selections are silently dropped
Values disabled<choice>balance:<choice>
Menu Configure Matchmaking Rules

Persists an object {rival_choice, rival_choice_display, choices, scores, balance_teams?, team_quota?} — Discord-only (deliberately omitted from the web form). Modal field is named `rival_team_choice`. Re-selecting the same choice preserves scores; picking a different one zeroes them.

versusteamanonymous headless advanced
rival_teams.team_quota
Team Composition (Formation Quota)

Fixed per-position formation (e.g. 'goalkeeper:1, defender:2') each team must satisfy under balanced Unique Choice Matchmaking.

Type object
Default absent = one of each position per team
Range positive integer counts; positions must exist in the rival choice; counts must sum to team size
Menu Configure Team Composition

Requires SOME rival choice to be configured first (the submit rejects only when none exists — a non-balanced Faction-vs-Faction choice passes and the quota saves, though it is only honored in balanced mode). Nested under rival_teams; saving rewrites the whole object.

versusteamanonymous headless advanced

Match Rules & Format

2

Ranked vs unranked, voting mode, series format.

match_result
Ranking & Voting Mode

Whether results record, affect Elo, and who approves them.

Type enum
Default 'ranked'
Values disabledrankedranked_adminunrankedunranked_adminranked_admin_decideunranked_admin_decide
Menu Configure Match Rules

Fans out into four derived booleans persisted alongside: match_result_disabled, ranked, admin_confirmation, admin_decide (see internal keys). No longer a creation option on any queue mode — every queue is created as 'ranked' and changed from the Match Rules modal or the web form. (Co-op queues never had one.)

all queue types headless + hosted web-editable essential
competitive_format
Match Format

Series structure: one match, unlimited matches, best-of-N, or cumulative points over N rounds.

Type enum
Default 'single_match'
Range best_of / cumulative require a match count: 1–99 on the web; the Discord modal accepts any count > 0
Values single_matchendless_matchesbest_of_Ncumulative_N
Menu Configure Match Rules

Persisted as a single string ('best_of_3', 'cumulative_5'); the modal/web split it into a format select + count input. The Discord Match Rules modal rewrites competitive_format on EVERY submit — a submit meant to change only the voting mode still rewrites the format. No longer a creation option on any queue mode: every queue starts at 'single_match' and picks up a series format from the modal or the web form.

all queue types headless + hosted web-editable common

Scoring & Stats

8

How series and rounds turn into rating changes and points.

series_scoring_mode
Rating Mode (per series)

How the series result becomes a leaderboard rating change — fires once per series (after the final round for multi-round formats).

Type enum
Default 'elo' (legacy queues mirror scoring_mode when unset)
Values eloplacement_pointselo_stat_pointsstat_pointsnone
Menu Configure Scoring

Naming inversion: 'Configure Scoring' persists the series_* keys, while 'Configure Cumulative Scoring' persists the plain scoring_mode/placement_points keys (per-round). Discord-only.

all queue types headless + hosted advanced
series_placement_points
Rating Points (per place)

Per-place rating points (e.g. '25,15,10,5') for Placement Points mode, or the win/loss base for Stat Points mode.

Type array
Default empty
Range comma/space-separated finite numbers (negatives and decimals allowed); places beyond the list earn 0
Menu Configure Scoring

A blank submit never clears a saved list (deliberate, so toggling modes does not wipe it). Discord-only.

all queue types headless + hosted advanced
scoring_mode
Cumulative Score Mode (per round)

How each round's placements become scoreboard points whose totals decide a multi-round series (the 'Match Score' axis, distinct from Rating Mode).

Type enum
Default 'elo'
Values eloplacement_pointsmanual_points
Menu Configure Cumulative Scoring

Menu entry only appears for best_of_* / cumulative_* formats. Discord-only.

all queue types headless + hosted best-of / cumulative only advanced
placement_points
Cumulative Points (per place)

Per-place points each round awards to the in-series scoreboard (e.g. '20,15,12,10').

Type array
Default empty
Range comma/space-separated finite numbers; places beyond the list earn 0
Menu Configure Cumulative Scoring

Blank never clears a saved list. Discord-only.

all queue types headless + hosted best-of / cumulative only advanced
cumulative_stats
Cumulative Stat Definitions

Named per-round stats (kills, caps, …) with points-per-unit and optional rounding, submitted each round of a cumulative series.

Type array
Default null = single default score
Range max 5 stats; `Name=Points` or `Name=Points=round|floor|ceil`; name ≤ 45 chars; decimals allowed
Menu Configure Cumulative Stats

Modal field is named `stat_definitions`. Menu entry only appears for cumulative_* formats — stricter than Cumulative Scoring, which also shows for best_of_*. Discord-only.

all queue types headless + hosted cumulative formats only advanced
cumulative_submission_mode
Stat Submission Mode

Whether one captain submits team stat totals per round or every player submits individually.

Type enum
Default 'match'
Values matchplayer
Menu Configure Cumulative Stats
all queue types headless + hosted cumulative formats only advanced
cumulative_round_label
Round Label

Custom noun for each round of the series (e.g. 'Game', 'Map', 'Half').

Type string
Default 'Round'
Range max 20 chars
Menu Configure Cumulative Stats
all queue types headless + hosted cumulative formats only advanced
cumulative_win_condition
Win Condition

Whether the highest or lowest cumulative total wins the series.

Type enum
Default 'highest'
Values highestlowest
Menu Configure Cumulative Stats
all queue types headless + hosted cumulative formats only advanced

Timeouts & Cooldowns

5

Idle eviction, re-queue cooldowns, active-match limits.

idle_timeout_minutes
Idle Timeout

Auto-remove idle players/teams from a headless queue after this many minutes (enforced by the queue timeout Workflows).

Type number
Default 10 minutes on headless queues (written at creation and used as the runtime fallback); unset on hosted launchers
Range > 0 to save via the modal; blank disables
Menu Configure Queue Timeouts (headless only — the hosted modal omits this field)

No longer a creation option — headless queues are created at 10 and retimed from Configure Queue Timeouts or the web form. Hosted launchers no longer write it at all, which is harmless: hosted lobby auto-close actually reads `lobby_timeout_minutes` (Configure Lobby Limits), and the hosted-stored idle_timeout_minutes never had a consumer in the lobby-create path.

all queue types headless + hosted web-editable common
match_cooldown_minutes
Cooldown After Being Matched

Re-queue cooldown applied immediately after players are matched (before the match is played).

Type number
Default 1 minute (runtime `?? 1` — not stored)
Range ≥ 0; 0 disables; decimals allowed (e.g. 0.5)
Menu Configure Queue Timeouts

Blank submit clears the stored value, which reverts behavior to the runtime default of 1 minute — set 0 explicitly to disable.

all queue types headless + hosted web-editable common
match_recorded_cooldown_minutes
Cooldown After Result Recorded

Re-queue cooldown applied after a match result is recorded.

Type number
Default unset = disabled
Range ≥ 0; 0/blank disables
Menu Configure Queue Timeouts
all queue types headless + hosted web-editable advanced
block_queue_unreported_match
Block Re-queue Until Result Reported

Prevents players from re-joining the queue until they report their pending match result.

Type boolean
Default false
Values noyes
Menu Configure Queue Timeouts
all queue types headless + hosted web-editable advanced
active_match_join_block
One Active Match Per Player

Blocks joining a new lobby while already in an ongoing match, per-queue or server-wide.

Type enum
Default 'off'
Values offqueueserver
Menu Configure Queue Timeouts
all queue types headless + hosted web-editable advanced

Voice-Join Enforcement

4

Dodge protection: kick and cool down players who never join voice.

voice_kick_enabled
Kick Voice Dodgers

Replace/remove players who never join the match voice channel after a match forms (via the voice-join timeout Workflow).

Type boolean
Default false
Values disabledenabled
Menu Configure Voice Join
all queue types headless advanced
voice_kick_grace_minutes
Voice Grace Period

How long players have to join voice after a match forms before being treated as dodgers.

Type number
Default 2 minutes
Range 1–60 minutes (out-of-range values are clamped, with a note in the confirmation)
Menu Configure Voice Join
all queue types headless advanced
voice_kick_cooldown_minutes
Dodge Queue Cooldown

How long a voice dodger is blocked from re-joining the queue. Admins can pardon via the Pardon Dodge Cooldown menu action or the web dashboard.

Type number
Default 10 minutes
Range 0–1440 minutes (clamped); 0 = no cooldown
Menu Configure Voice Join
all queue types headless advanced
voice_kick_warning_seconds
Dodge Reminder Ping

Ping players not yet in voice this many seconds before the dodge timeout fires.

Type int
Default 0 = off
Range 0–600 seconds, and must fit ≥ 15s after match start (auto-shortened; turned off if the fit is < 10s)
Menu Configure Voice Join
all queue types headless advanced

Maps & Voting

3

Map pools, veto strategies, vote timers.

map_pool
Map Pool

Named map pool the queue draws maps from.

Type string
Default none
Range should name a pool created via /settings map_pool add — existence is NOT validated at save time (a nonexistent pool silently disables map voting at match time); required when a voting strategy is set, and vice versa
Menu Configure Map Voting
all queue types headless + hosted web-editable common
map_voting_strategy
Map Voting Strategy

How maps are selected for matches. FFA/co-op/anonymous creation only offers Simple; the full veto strategies are versus/team.

Type enum
Default null = no map voting
Range requires map_pool
Values simplerandom*captains_ban_with_reroll*captains_ban_no_reroll*stage_striking*stage_striking_counterpick*smash_striking*
Menu Configure Map Voting

Cross-surface drift in the product: creation offers stage_striking / stage_striking_counterpick but not random / smash_striking; the configure modal and web form offer random / smash_striking but not the two stage_striking values. All are real runtime strategies. The modal's 'none' choice persists as null.

all queue types headless + hosted web-editable common
map_vote_timer_seconds
Map Vote Timer

Simple Vote only: auto-conclude the map vote after N seconds, picking the leading map (random on no votes). Headless: countdown starts at match creation; hosted: when the lobby fills.

Type int
Default null = no timer (vote waits for everyone)
Range 10–600 seconds; out-of-range is a hard error (not clamped)
Menu Configure Map Voting
all queue types headless + hosted web-editable advanced

Channels & Auto-Channels

11

Where matches post; auto-created temp channels, threads, naming.

match_start_channel
Match Start Channel

Channel where match/lobby-start announcements post.

Type channel
Default the channel the queue was created in
Range text or announcement channel
Menu Configure Match Announcements

No longer a creation option — the queue_* commands seed it with the channel the command was run in, and Configure Match Announcements (or the web form) retargets it.

all queue types headless + hosted web-editable essential
match_end_channel
Match End Channel

Channel where finished matches are listed; also where 'ping on recorded' mentions post.

Type channel
Default the channel the queue was created in
Range text or announcement channel
Menu Configure Match Announcements

Same as match_start_channel: no longer a creation option, seeded with the channel the command was run in and retargeted from Configure Match Announcements or the web form.

all queue types headless + hosted web-editable essential
match_panel_location
Match Panel Location

Where the match/lobby panel (roster, map vote, report buttons) is posted. A dedicated channel: the bot creates one text channel per match — placed under the Temp-Channel Category and named with the Shared Channel Name Template — and deletes it when the match ends. Results still post to the Match End Channel.

Type enum
Default 'start_channel'
Values start_channeldedicated_privatededicated_public
Menu Configure Match Announcements

Private = visible only to the match participants, the configured admin role(s), and the bot. Public = visible to everyone, so non-players can tune in and watch. The Temp-Channel Category controls placement only (where the channels nest), not visibility; with no category set the channel is created at the server root. The per-match channel doubles as the shared text channel (no separate one is created); voice channels are still governed by Shared Match Channel / Per-Team Channels. Legacy queues saved with the old single "dedicated" value are treated as private.

all queue types headless + hosted web-editable advanced
category_for_temp_channel
Temp-Channel Category

Discord category where auto-created match channels are placed.

Type category
Default none
Range must be a category; web form requires it when auto-channels are enabled
Menu Configure Auto-Channels
all queue types headless + hosted web-editable advanced
create_shared_channel
Shared Match Channel

Auto-create a shared text/voice channel for all players in each match; deleted when the match ends.

Type enum
Default 'disabled'
Values disabledtextvoicevoice_and_text
Menu Configure Auto-Channels
all queue types headless + hosted web-editable advanced
create_private_channels
Per-Team Channels

Auto-create per-team channels, private (team-only) or public.

Type enum
Default 'disabled'
Values disabledtextvoicevoice_and_textpublic_textpublic_voicepublic_voice_and_text
Menu Configure Auto-Channels

Known quirk: the Discord Auto-Channels modal persists this key unconditionally with default 'disabled', so submitting that modal on an FFA/co-op queue (where the field isn't shown) resets any stored value to disabled.

versusteamanonymous headless + hosted web-editable advanced
create_threads
Match Threads

Spin up a public or private thread for each match.

Type enum
Default 'disabled'
Values disabledenabledenabled_private
Menu Configure Auto-Channels

Cross-setting coupling: when no dispute channel is set, disputes fall back to the match thread — which only exists if threads are enabled here.

all queue types headless + hosted web-editable advanced
voice_move_mode
Voice Auto-Move

Whether the bot moves players into (and back out of) auto-created voice channels.

Type enum
Default 'in_and_back'
Values in_and_backin_onlynone
Menu Configure Auto-Channels
all queue types headless + hosted web-editable advanced
shared_channel_name_template
Shared Channel Name Template

Naming template for the auto-created shared channel. Tokens: {code} {title} {vs}.

Type template
Default '{code}: {title}' (headless) / '{title}' (hosted)
Range max 100 chars; rendered name clamped to 100
Menu Configure Channel Names
all queue types headless + hosted web-editable advanced
team_channel_name_template
Team Channel Name Template

Naming template for auto-created per-team channels. Tokens: {code} {title} {team} {emoji} {n} {vs}.

Type template
Default '{code} {team}' (headless) / '{team} - {title}' (hosted)
Range max 100 chars
Menu Configure Channel Names
versusteamanonymous headless + hosted web-editable advanced
thread_name_template
Thread Name Template

Naming template for the auto-created match thread. Tokens: {code} {title} {vs}.

Type template
Default '{title} - Chat' (public) / '{title} - {code}' (private)
Range max 100 chars
Menu Configure Channel Names
all queue types headless + hosted web-editable advanced

Notifications & Pings

5

Join feeds, match start/end pings, recorded-result pings.

join_notification_channel
Join Feed Channel

Channel where queue join/leave events post.

Type channel
Default none = no join feed
Range text or announcement channel
Menu Configure Queue Alerts (headless only)
all queue types headless + hosted web-editable common
join_notification_role
Join Ping Role

Role mentioned in the join-notification post.

Type role
Default none
Menu Configure Queue Alerts (headless only)
all queue types headless + hosted web-editable common
match_start_notification_role
Match Start Ping Role

Role pinged when a match starts.

Type role
Default none
Menu Configure Match Announcements
all queue types headless + hosted web-editable advanced
match_end_notification_role
Match End Ping Role

Role pinged when a match ends.

Type role
Default none
Menu Configure Match Announcements
all queue types headless + hosted web-editable advanced
match_recorded_ping
Ping Players on Match Recorded

Who gets a real mention in the match-end-channel post when a result records.

Type enum
Default 'off'
Values offeveryonenon_confirmers
Menu Configure Party Queue (headless menu only)

Posts into match_end_channel — a silent no-op if that channel is unset (the modal warns). The Discord modal for it is headless-only, but hosted lobbies consume the setting too (copied onto the lobby at creation); for hosted queues set it via the web form.

versusanonymous headless + hosted web-editable advanced

Results, Disputes & Evidence

8

Captain vote timeouts, screenshots, AI scanning, dispute routing.

captain_vote_timeout_minutes
Captain Vote Time Limit

After one captain reports a result, auto-record from that single report if the other captain never votes within this many minutes.

Type int
Default 0 = off
Range ≥ 0 (floored to integer); a BLANK submit persists 0 and turns the feature off
Menu Configure Result Reporting
versusteamanonymous headless + hosted web-editable advanced
require_screenshot
Require Screenshot Before Recording

Blocks recording a match result until a screenshot has been submitted as evidence.

Type boolean
Default false
Values noyes
Menu Configure Screenshot Requirement
all queue types headless + hosted web-editable advanced
ai_screenshot_recording
AI Screenshot Scanning

Adds a 'Scan Result' button that has AI read a scoreboard screenshot to pre-fill the match result.

Type boolean
Default false
Values noyes
Menu Configure AI Screenshot Recording

Scoreboard-reading instructions live on the leaderboard/server config (/leaderboard_config screenshot_instructions), not on the queue.

all queue types headless + hosted advanced
screenshot_auto_record
Auto-Record Clean AI Scans

When an AI scan reads every player and stat cleanly, record it with no manual approval step.

Type boolean
Default false
Values noyes
Menu Configure AI Screenshot Recording
all queue types headless + hosted advanced
screenshot_channel
Screenshot Channel

Channel where players upload match screenshots.

Type channel
Default none
Range text or announcement channel
Menu Configure Dispute Handling (headless only)
all queue types headless + hosted web-editable advanced
audit_channel
Audit Channel

Channel where match events (scores, disputes, results) are logged.

Type channel
Default none
Range text or announcement channel
Menu Configure Dispute Handling (headless only)
all queue types headless + hosted web-editable advanced
dispute_notification_channel
Dispute Channel

Channel where dispute notifications post when players request admin help.

Type channel
Default unset = falls back to the match thread (only when threads are enabled; otherwise disputes are effectively disabled)
Range text or announcement channel
Menu Configure Dispute Handling (headless only)
all queue types headless + hosted web-editable advanced
dispute_notification_role
Dispute Ping Role

Role mentioned when a dispute is filed.

Type role
Default none
Menu Configure Dispute Handling (headless only)
all queue types headless + hosted web-editable advanced

Access & Eligibility

8

Passwords, minimum-rating gates, admin roles, party queue.

queue_password
Queue Password

Password players must enter to join a headless queue.

Type string
Default none
Range max 32 chars at creation; blank submit removes the password
Create optional: versus/headless
Menu Configure Queue Settings

Creation option exists only on /queue_versus headless; every headless queue can set it post-creation via the modal or web. Never pre-filled in modals (sensitive).

all queue types headless web-editable advanced
host_password
Host Password

Password required to open a lobby from the launcher.

Type string
Default none
Range blank submit removes
Menu Configure Queue Settings (launcher)
all queue types hosted web-editable advanced
lobby_password
Default Lobby Password

Default join password applied to newly created hosted lobbies (hosts can change it per lobby).

Type string
Default none
Range blank submit removes
Menu Configure Queue Settings (launcher)
all queue types hosted web-editable advanced
private_lobby_code
Private Lobby Code

Hide the lobby code from the embed and only reveal it via a button click once the lobby is full.

Type boolean
Default false (code shown in the embed)
Values noyes
Menu Configure Queue Settings (launcher) / Display Settings (headless)

Lives in two different Discord modals depending on mode. The web form only shows it for hosted queues.

all queue types headless + hosted web-editable advanced
min_elo_to_join
Minimum Rating to Join

Rating floor to join (or host from) the queue; unrated players are treated as the league’s default rating.

Type int
Default null = no requirement
Range whole number ≥ 0; 0/blank clears
Menu Configure Minimum Rating

The headless menu hides this for team queues (teams join with team ratings); the launcher menu always shows it. Discord-only — not editable on the web.

all queue types headless + hosted advanced
min_elo_rating_type
Minimum-Rating Basis

Which of the player’s ratings the floor is checked against; per-format types resolve from the actual match being joined.

Type enum
Default 'player_global_all'
Values player_global_allplayer_global_evenplayer_global_unevenplayer_broadplayer_specific
Menu Configure Minimum Rating

Nulled automatically whenever min_elo_to_join is cleared.

all queue types headless + hosted advanced
admin_roles
Admin Roles

Roles (beyond server administrators) allowed to confirm/reject results in Admin Approval / Admin Decides modes. Holders are also granted visibility into the private lobby channels and (via Manage-Threads on the parent channel) private lobby threads the bot creates, so an admin can oversee a lobby they aren’t a participant in.

Type roles
Default null = only server administrators
Range 0–10 roles
Menu Configure Admin Roles

Every save also mirrors the first role into the legacy single `admin_role` key. The web form edits only the legacy `admin_role` (single role), not this array.

all queue types headless + hosted advanced
allow_group_queue
Party Queue

Enables the '👥 Join as Party' button so pre-made groups queue together with a same-team guarantee.

Type boolean
Default false
Values noyes
Menu Configure Party Queue

Runtime eligibility additionally requires: team size ≥ 2, formation not players_choose/captains/no_teams, unique-choice matchmaking off, and no queue password.

versusanonymous headless web-editable advanced

Hosted-Launcher Controls

7

Host permissions, lobby caps, host customization bounds.

host_lobby_mode
Host Lobby Creation Mode

Whether pressing 'Host Lobby' creates a lobby immediately with queue defaults or first shows the host a customize modal.

Type enum
Default 'fixed'
Values fixedhost_customizes
Menu Configure Host Lobby Creation
all queue types hosted common
host_lobby_min_players
Host Size Range — Min

Lower bound of the player count a host may pick when customizing their lobby.

Type int
Default 2 when unset (the admin modal pre-fills from min_players, but enforcement never consults min_players — a queue with min_players 5 and no explicit value lets a host pick 2)
Range ≥ 2; ≤ host_lobby_max_players; required in host_customizes mode (only persisted in that mode)
Menu Configure Host Lobby Creation
all queue types hosted advanced
host_lobby_max_players
Host Size Range — Max

Upper bound (hard cap 25) of the player count a host may pick when customizing their lobby.

Type int
Default when unset, enforcement falls back to party_size / max_players / sum(team_sizes) / 4 (the admin modal pre-fill prefers max_players first and bottoms out at 2)
Range ≥ 2; hard cap 25; ≥ host_lobby_min_players
Menu Configure Host Lobby Creation
all queue types hosted advanced
host_role
Host Role

Restrict who may open lobbies from this launcher.

Type role
Default null = anyone can host (admins always bypass)
Range 0 or 1 role
Menu Configure Host Lobby Creation
all queue types hosted advanced
max_open_lobbies_per_host
Max Open Lobbies Per Host

Caps simultaneous open lobbies for one host in this queue. Admin hosts bypass this cap (staff seeding).

Type int
Default unset / 0 = unlimited
Range integer ≥ 0; blank submit leaves the saved value unchanged (0 disables)
Menu Configure Lobby Limits
all queue types hosted web-editable advanced
max_open_lobbies_per_queue
Max Open Lobbies Per Queue

Caps still-forming lobbies across all hosts (started/full lobbies stop counting). Enforced for everyone, including admins.

Type int
Default unset / 0 = unlimited
Range integer ≥ 0; blank leaves saved value unchanged
Menu Configure Lobby Limits
all queue types hosted web-editable advanced
lobby_timeout_minutes
Auto-Close Idle Lobby

Auto-close a hosted lobby that never fills after this many minutes (scheduled as a Cloudflare Workflow at lobby creation).

Type number
Default unset / 0 = never auto-close
Range ≥ 0; blank leaves saved value unchanged
Menu Configure Lobby Limits
all queue types hosted web-editable advanced

Per-Lobby Fields

Set on an individual hosted lobby (by its host or a server admin), not on the queue. They override or supplement the queue's defaults for that one lobby.

FieldWho sets itWhat it does
lobby_titlehost or adminRenames a live lobby; must be non-empty.
lobby_passwordhost or adminSets/removes the join password on one lobby (blank clears).
regionhost or adminFree-text region/ping label shown in the lobby embed; display-only.
lobby_image_urlhost or adminEmbed image URL (http/https).
competitive_formathost or adminPer-lobby override: single_match / endless_matches / best_of_N / cumulative_N.
disabled_mapshost or adminPer-lobby map pool override — unselected maps are disabled; at least one must remain.
team_modeset at creationRuntime team-formation vocabulary for the lobby (see HOST_TEAM_MODES); from /host verbatim, or translated from the queue’s team_formation.
host customize overridesprospective hostOne-shot overrides at lobby creation when host_lobby_mode = host_customizes; player count bounded by host_lobby_min/max_players and must divide evenly into teams for every non-FFA/non-co-op queue mode (versus, team, anonymous).

The Two Team-Formation Vocabularies

Queues store team_formation (see Team Composition above). Lobbies run on a separate team_mode vocabulary: /host stores its option verbatim, while hosted launchers translate the queue value at lobby creation (balanced_teams → balance_elo, FFA/co-op → none, captains modes pass through).

team_mode valueLabelWhere it comes from
players_choosePlayers Choose/host + translated from queue players_choose + hosted matchmaking submit flows
players_choose_positionsPlayers Choose (with positions)/host only; requires /settings positions set
randomRandom/host onlyNo automatic on-fill randomizer — random assignment fires via the manual Randomize Teams action.
random_anonymousRandom (anonymous)/host + anonymous submit flows
random_positionsRandom (with positions)/host only; requires /settings positions setSame manual-randomize caveat as random.
random_teamsRandom Teamstranslated from queue random_teams
captains_host_picksCaptains (Host Picks)/host + queue (hosted)
captains_highest_eloCaptains (Highest Elo)queue captains_* pass through unchanged
captains_lowest_eloCaptains (Lowest Elo)queue captains_* pass through unchanged
captains_randomCaptains (Random)queue captains_* pass through unchanged
captains_volunteerCaptains (Volunteer)queue captains_* pass through unchanged
balance_eloBalance by Elo/host balance_elo + translated from queue balanced_teams
no_teamsNo Teams/host + ffa/coop submit flows
noneNonetranslated from ffa/coop queues

Internal & Derived Keys

Keys the system writes automatically — you never set these directly, but you may see them in exports or the API.

versus
Versus Display String

Display string ('5v5') written by the Match Rules modal alongside team_sizes.

Creation writes the sibling key `versus_format` instead; the modal does not update versus_format, so /queue_manage list and queue status can show a stale format after a modal size edit.

versus_format
Versus Format (creation)

Display string ('5v5') written at queue creation; read by queue status and /queue_manage list. Allowlisted for web PATCH but has no web form control.

ranked / admin_confirmation / admin_decide / match_result_disabled
Match-Result Derived Flags

Four booleans the result-voting flow consumes, fanned out from match_result whenever it is saved (by the bot and by the web form).

The web PATCH allowlists each flag individually with no consistency check against match_result.

admin_role
Admin Role (legacy single)

Legacy single admin-role key, auto-synced to the first entry of admin_roles on every Discord save; older readers (team matches, FFA) still consume it. The web form edits this key directly.

team_mode
Team Mode (legacy queue fallback)

Legacy queue-level key still read as a fallback by some consumers (`team_formation || team_mode || "random_teams"`). Distinct from the lobby-level team_mode runtime field (see HOST_TEAM_MODES).

Looking for the concepts?

This page is the reference. For how queues, modes, team formation, and formats actually work, read the matchmaking guide.

Matchmaking & Queues Guide