How to run league standings and match results in Discord
The simplest way to run league standings in Discord is two tables: one that records every match result, and one that keeps each team's wins, losses and points, both updated with slash commands so anyone can check the table without leaving the server. Scores get posted in a channel and buried; a table keeps them findable and ranked.
This guide sets that up with CordBase, which we build. It suits community leagues, scrim groups and small tournaments. It does not generate brackets or work out standings by itself, and we cover that below.
What you'll end up with
- A
/match-resultscommand to log each game: both teams, both scores, the map and the date. - A
/season-standingscommand with a leaderboard ranked by points. - Role permissions so only organizers can enter scores.
Step 1: Add CordBase and install two templates
- Sign in at cordbase.gg with Discord, pick your server and add the bot when the dashboard asks.
- Install Match Results: team 1 and team 2 (text, required), score 1 and score 2 (numbers, required), map and date.
- Install Season Standings: team name (text, required), wins and losses (numbers, required), draws, points and point differential.
Free plans include two tables, so this pair fits exactly. If you also want a roster of players, that is a third table, which needs Pro.
Step 2: Let only organizers enter scores
New tables let everyone do everything. For a league you want the opposite:
- Give your organizer or referee role write on both tables.
- Give team captains and members read so they can look up results and the table.
Once any role is set on a table, members without one of those roles can't use it at all, so make sure the read role covers everyone who should see standings. Anyone with Discord's Administrator permission keeps full access either way.
Step 3: Add your teams to the standings
Add one row per team, with zeros to start:
/season-standings add team_name:Wolves wins:0 losses:0 draws:0 points:0
Step 4: Log a match and update the table
After each game, record it:
/match-results add team1:Wolves team2:Ravens score1:13 score2:9 map:Haven date:2026-10-08
Dates use the YYYY-MM-DD format. Then update the standings. The table does not calculate itself, so an organizer applies the result. Pick the team in the row option and use _mode:Increment to add to the current numbers:
/season-standings update row:Wolves wins:1 points:3 _mode:Increment
/season-standings update row:Ravens losses:1 _mode:Increment
Every number you pass in that command is incremented, so one command can add a win and the points together. The change is applied to the stored value, so two organizers entering results at once both count.
Step 5: Show the table
/season-standings leaderboard column:pointsranks the teams by points, highest first./match-results query team1:Wolvesfinds every match with Wolves listed as team 1. Run it again withteam2:Wolvesfor the other side, since the table has no "either team" filter./match-results query date:2026-10-08shows one day's games.
When something else fits better
CordBase has no formulas, no automatic standings and no bracket generation. If you want brackets, seeding and automatic advancement, use a tournament tool such as Challonge or start.gg. If you want the standings to calculate themselves from results, a spreadsheet with formulas does that, and you can still post the table into Discord. A CordBase table fits when you want a simple, shared, ranked record that organizers update by command and everyone reads in Discord.
The Tournament Bracket template can record rounds, matchups and winners if you want to keep a bracket as a table, but you move teams between rounds by hand.
Limits worth knowing
- Free: 2 tables, 100 rows each. Pro ($8/month) raises that to unlimited tables and 10,000 rows per table and adds CSV and JSON export and bulk edits.
- Up to 25 columns per table.
- Tables are designed on the web; members can't create new tables from Discord.
Questions people ask
Does CordBase work out standings automatically?
No. An organizer logs the result and updates the standings table, usually with one increment command per team. There are no formulas.
Can it generate a tournament bracket?
No. Use a bracket tool such as Challonge or start.gg. The Tournament Bracket template records rounds and winners that you enter by hand.
Can I stop teams from changing their own scores?
Yes. Give the organizer role write access and everyone else read access on both tables.