Skip to content
Back to blog

Team Up Blog

How to Set Up Matchmaking Queues in Your Discord Server

| Team Up | 6 min read

Set up automated matchmaking for Valorant customs (or any competitive game) in your Discord server. Players join a queue, the bot balances teams by Elo, and the match starts. No coordination needed.

guidematchmakingdiscordqueues

Recording matches manually works fine when it's just a few friends. But once your community hits 20, 30, 50+ active players, the bottleneck isn't the rating system. It's getting games started. Someone pings @everyone, four people respond, two drop out, and by the time teams are sorted it's been 20 minutes.

Matchmaking queues fix that. Players press a button to join, the bot forms balanced teams when enough people are in, and the match starts. No coordination needed.

This guide walks through setting up a Valorant 5v5 ranked queue as a concrete example, but the same steps work for any game: CS2, League of Legends, Overwatch, whatever you're running. If you haven't added the bot yet, start with the leaderboard setup guide first.

Create the Queue

One command sets up a fully automated 5v5 queue:

/queue_versus headless queue_name:val-ranked title:Valorant Ranked 5v5 description:Balanced 5v5 customs — queue up and get matched team_size:5 match_start_channel:#match-results match_end_channel:#match-history team_formation:balanced_teams leaderboard:Valorant

Here's what each option does:

  • queue_name — internal name, used in other commands (max 32 characters)
  • title — what players see at the top of the queue message
  • description — short description shown below the title
  • team_size — players per team (5 for a 5v5, 2 for a 2v2, 1 for a 1v1)
  • match_start_channel — where the bot posts active matches
  • match_end_channel — where finished matches get logged
  • team_formation — how teams are split (more on this below)
  • leaderboard — which leaderboard's ratings to use

The bot posts a message with a Join button. That's your queue.

The queue message posted by Team Up with a Join button and queue details

How It Works

Players click Join to enter the queue. When 10 players are in (5 per team), the bot locks the queue, balances two teams by Elo, creates the match, and posts it in your match channel.

A player clicking Join and the queue updating to show them in the player list

The queue stays open the entire time. Other players can keep joining for the next match while the current one plays out.

Voting on Results

Once the game is played, both teams vote on the result using buttons on the match message: Red Wins, Blue Wins, Tie, or Cancel Match. When both teams agree, the result is recorded and ratings update automatically.

If teams disagree, a warning appears and a Request Admin Help button lets them call a moderator to resolve it.

The match message with voting buttons: Red Wins, Blue Wins, Tie, and Cancel Match

Why Balanced Teams Matter

The team_formation:balanced_teams option is doing the heavy lifting here. When 10 players queue up, the bot doesn't just randomly split them. It finds the two teams with the closest possible total Elo.

Say these 10 players are in the queue:

Player Elo
Player A 1620
Player B 1510
Player C 1485
Player D 1440
Player E 1380
Player F 1350
Player G 1290
Player H 1240
Player I 1180
Player J 1105

Instead of randomly getting a 1620+1510+1485+1440+1380 team (7435) vs. a 1350+1290+1240+1180+1105 team (6165), a 1,270 Elo gap, the bot finds something like:

  • Red Team: 1620 + 1350 + 1290 + 1180 + 1380 = 6820
  • Blue Team: 1510 + 1485 + 1440 + 1240 + 1105 = 6780

A 40-point gap instead of 1,270. Games stay close, players stick around.

Other team formation options exist too (random teams for casual lobbies, captain drafts for pickup games), but balanced teams is the go-to for ranked play.

Add a Map Pool

For games with map selection, create a pool and let players vote:

/settings map_pool add pool:val-maps map_name:Ascent
/settings map_pool add pool:val-maps map_name:Bind
/settings map_pool add pool:val-maps map_name:Haven
/settings map_pool add pool:val-maps map_name:Split
/settings map_pool add pool:val-maps map_name:Icebox
/settings map_pool add pool:val-maps map_name:Lotus
/settings map_pool add pool:val-maps map_name:Sunset

Then set it as the default map pool or assign it directly to a queue through the queue settings. When a match starts, a map vote runs automatically and the winning map is shown in the match message.

Map vote message showing Valorant maps with vote buttons

Customize Your Queue

Every queue message includes an Admin Actions dropdown at the bottom. This is where you configure everything about the queue after creating it: channels, voice chat, match rules, map voting, and more.

The dropdown groups settings into categories. Select one and a form pops up where you can change values:

The Admin Actions dropdown expanded on a queue message, showing configuration categories

  • Match Announcements — set where matches are posted and where results go
  • Queue Alerts — get notified when players join (pick a channel and role to ping)
  • Auto-Channels — auto-create voice channels per match
  • Queue Settings — idle timeout, rematch cooldown, max rating difference, queue password
  • Display Settings — toggle player name visibility, hide lobby codes, set a queue image
  • Match Rules — ranked/unranked, team formation, match format, custom instructions
  • Map Voting — assign a map pool and pick a voting strategy
  • Dispute Handling — set channels for disputes, screenshots, and audit logs

If a queue message got buried in chat or you want it in a different channel, open the queue in the Team Up web dashboard (Discord Management → Matchmaking Queues) and use Repost or move… — it replaces the old message so you never end up with duplicates. To see all your existing queues or delete ones you no longer need, use /queue_manage list.

Auto Voice Channels

This is the setting that makes the experience feel seamless. Select Configure Auto-Channels from the dropdown and set a category for temporary channels. The bot will create voice channels under that category each time a match pops, then clean them up when the match ends.

Players join the queue, the match pops, and they're immediately in a voice channel with their team. No manual channel management.

Discord channel list showing auto-created voice channels and a private thread for a match

Settings Worth Knowing

A few settings worth calling out:

A queue settings form showing options like idle timeout, rematch cooldown, and max rating difference

  • Rematch cooldown — prevent the same players from facing each other repeatedly. Set a cooldown in minutes, or block rematches entirely in that queue.
  • Idle timeout — how long a player can sit in the queue before getting removed (default: 10 minutes).
  • Max Elo difference — lock the queue to a skill range. Want a Diamond-only queue? Set a max rating gap.
  • Match result mode — ranked (affects Elo), unranked (recorded but no Elo change), or admin approval (results need mod sign-off).
  • Queue password — restrict access to players who know the password.

What's Next

With a ranked queue running, your server has automated matchmaking that handles team balancing, result recording, and rating updates without anyone lifting a finger.

Team Up also supports other queue types for different formats: free-for-all queues for fighting games, hosted lobbies for tournament nights, team queues for league play, and more. We'll cover those in future guides.

A few things worth exploring now:

The free tier supports 3 leaderboards and 50 matches per day. If you're running multiple queues with higher traffic, Pro starts at $1.99/month.


Questions? Check the matchmaking docs or ask in our Discord community.