Finalist
Browse eventsBlogDocs

26 October 2026 · 5 min read

How to run scrims from your Discord server: bot setup to results

Add the bot, connect it to your organization, bind a channel, and let announcements, one-tap registration and room reveals run themselves.


Most scrim communities live in Discord, so the question is never whether to use it. It is how much of the job the server should do for you. The honest split is this: Discord is where players see things; the web dashboard is where the host decides things. Run the setup below once and the server handles announcements, registration and room details without you pasting anything.

This is the setup in order.

1. Add the bot

Open the Finalist bot's profile in Discord and press Add App, or run /help wherever the bot already is and press Invite Me. Pick your server and confirm. You need Manage Server on it; that is Discord's rule.

The install asks for very little: view channels, send messages, embed links, read message history. Anything that changes your server (roles, locking channels, the bot's nickname) is granted later, per feature, only if you turn it on.

You can stop here and the bot is already useful. /event list and /event view work with no organization and no Finalist account, and show every public event on the platform.

2. Connect the server to an organization

Scrims belong to an organization, never to a person. Create one on the dashboard (app.finalist.live), then go to Settings → Discord → Connect Discord, pick the server and confirm. That one button links the server to your organization; there is nothing to claim or paste afterwards.

A server belongs to exactly one organization. One organization can have several servers, and every connected server gets the same announcements.

3. Choose where announcements go

By default the bot has nowhere to post. An organization owner or admin fixes that in the channel that should receive them:

/host bind

To give a single scrim its own channel instead, pass its share id:

/host bind scrim:x7Kq2mNp9wLd

The scrim option autocompletes by name and date. /host unbind stops it.

For finer control, Settings → Discord lets each bound channel take different jobs: status announcements, a message each time a team joins or leaves, and an option to make the channel read-only while registration is closed. You can also bind a role to be pinged on announcements. The page lists each permission those features need and has a Grant permissions button, so a missing one shows up there rather than failing in the middle of an event.

4. Create and publish a scrim

Scrims are created on the dashboard (/host create opens the page). You set the game and mode, the times, max slots, and whether slots are assigned automatically in registration order. Publish it and, if you set the times, Finalist opens and closes registration and starts the scrim on schedule.

Hosting the same scrim every day? Make it a preset once and each instance is created for you.

5. What the server does from here

Once a channel is bound, every state change posts an embed that links back to the scrim: registration open, registration closed, live, completed, cancelled.

Registration happens in the announcement. The registration-open post carries a Register button. A captain presses it, sees exactly who would be entered (names and in-game names from the team's default lineup), and one more tap enters them. It confirms a lineup rather than building one, and it can only register the presser's own team, because the backend decides who they are from their linked Discord account. That makes it safe in a public channel.

Room details stay out of the channel. When you publish the lobby, the bot posts "Room details are live" with a Reveal room details button. Clicking it shows the room ID and password privately to the person who clicked, and only if they are the captain of a team holding a slot. Everyone else is told they are not. The check runs on the server at every click, so the button is safe to leave in a public channel. If you scheduled the reveal for a few minutes before start, an early click is told to check back closer to the time.

This is the part worth the setup on its own. A room ID pasted into a channel is a room everyone can join; see how room IDs actually leak.

6. Results and the waitlist

When you declare results, players can read them with /event results, and they appear on the scrim page and in profile history. If a slot frees up, the first waitlisted team is promoted automatically and its captain is told, so you are not chasing replies in a thread.

What players can do from Discord

Command What it does
/link Link your Discord to a Finalist account, one tap
/event list Live, open and upcoming events
/event register Enter your team (captain only)
/event lineup See your lineup and in-game names
/event checkin Check in, on events where the host asked for it
/event results Results or current standings

Replies that show someone's own data are private to them. Room details are always private.

What stays on the web

Creating and editing scrims, the slot board, publishing room details, and declaring results. /host commands mostly open the right dashboard page. The bot is deliberately the player-facing half, which is why it needs so few permissions.

If something does not post

Check these in order: the channel is bound (/host bind in that channel), the bot can see and send in it, and Settings → Discord shows no missing permissions. Delivery is best-effort by design: if Discord is unreachable, the scrim itself carries on unaffected.

The full command list is in the command reference, and the setup page has the permission table: Connect your server.


Related reading

  • How room ID leaks actually happen
  • Hosting scrims from a Google Form: what breaks
  • Running a daily scrim without burning out

← All posts

All postsBrowse eventsAboutPrivacy PolicyTerms of Service© 2026 Finalist