> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squadvault.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Discord

> Connect your Discord server, map roles, and keep roster membership in sync.

Discord Sync keeps your Discord server aligned with SquadVault players and teams. Organization admins can set this up when Discord is included in your plan.

The **Discord** page follows the usual SquadVault layout: **status** (bot, guild, sync readiness), then **work** (connection → sync → mapping), then **insights** (gaps like unmapped teams).

<Frame caption="Discord — connection and sync readiness">
  <img src="https://mintcdn.com/squad-vault/1QQgC6jM7iMASl-A/images/screenshots/discord-overview.png?fit=max&auto=format&n=1QQgC6jM7iMASl-A&q=85&s=62fad7a6cf6fd7382ef6566e529ff070" alt="Discord page showing bot connection and sync status" width="2337" height="1343" data-path="images/screenshots/discord-overview.png" />
</Frame>

## Connect Discord

<Steps>
  <Step title="Invite the bot">
    Open **Discord** in the sidebar and invite the SquadVault bot to your server.
  </Step>

  <Step title="Connect the server">
    Select the Discord server you want to link to this organization.
  </Step>

  <Step title="Map roles">
    Map Discord roles to **players**, **staff**, and **teams** so membership stays consistent.
  </Step>

  <Step title="Sync">
    Run a sync (or a dry run first) and optionally set a log channel for sync activity.
  </Step>
</Steps>

## Player vs staff roles

* **Player roles** create and archive [players](/user-guide/teams-and-players) when members gain or lose those Discord roles.
* **Staff roles** do the same for org-wide **staff** entries (see **Staff** in the sidebar). Someone can be both a player and staff.
* Staff from Discord sync is **not** the same as **team staff** (coach/analyst assigned on a team). Team staff stays a separate assignment of organization members to a team.

## Link players to Discord

On a player profile, link their Discord account so role sync stays accurate. Discord user IDs must be unique within the organization.

## Tryout applications

When someone receives a mapped **player role** in Discord, Sync creates or restores the SquadVault player. If an open tryout application in the same organization has the same Discord user ID (`pending`, `reviewing`, or `shortlisted`), that application is automatically marked **accepted** and linked to the player. Flows listening for `tryout.accepted` still run.

## Team lists

With **Pro** or **Elite**, open **Team lists** under **Organization** in the sidebar:

1. Design a roster message with blocks (header, captain, players, MMR, footer).
2. Choose embed or plain message, select teams and a Discord channel.
3. Set **Auto-update**: immediately on roster changes, **on a schedule** (presets or advanced cron), or manual only. New schedules default to the organization [timezone](/user-guide/organizations#general).
4. **Save & publish** — SquadVault edits the same Discord messages when the list refreshes.

In **Advanced** settings you can upload an optional **header image**. SquadVault posts it as its own Discord message **before** the roster messages. Choose whether to send it as a Discord embed or as a plain message with the image URL. Remove the image and republish to delete that header message.

Rocket League ranks appear when the rank integration is available — otherwise the list still shows player names. Connect Discord first on the [Discord](/user-guide/discord) page. With ranks enabled, map Discord custom emojis to tiers (Bronze I → SSL) on that same Discord page; team lists can then show `{{rankEmoji}}` / the Rank emoji toggle next to each rank. In list settings you can also sort **players by MMR** (highest or lowest first) instead of role order.

### Custom text variables

Use a **Custom text** block for freeform lines. Placeholders use `{{path}}`. Filters like `| upper` work as in Flows.

| Variable                                                           | Meaning                                                                             |
| ------------------------------------------------------------------ | ----------------------------------------------------------------------------------- |
| `{{team.name}}`, `{{team.averageMmr}}`, …                          | Team fields                                                                         |
| `{{captain.ping}}`, `{{captain.rank}}`, `{{captain.rankEmoji}}`, … | Captain (outside loops)                                                             |
| `{{#each players}}…{{/each}}`                                      | Repeat body once per roster player                                                  |
| `{{#if captain}}…{{/if}}`                                          | Outside loops: when a captain is set. Inside a player loop: only on the captain row |
| `{{#if isCaptain}}…{{/if}}`                                        | Inside a player loop (same as `#if captain` there)                                  |

Inside the loop: `{{ping}}` (Discord mention), `{{name}}`, `{{nationality}}`, `{{rankEmoji}}`, `{{rank}}`, `{{mmr}}`, `{{mode}}` (playlist), `{{role}}`, `{{line}}` (formatted rank line from Rank details settings, including emoji when mapped), `{{isCaptain}}`.

Example:

```text theme={null}
{{#if captain}}**Captain:** {{captain.ping}} — {{captain.line}}
{{/if}}
**{{team.name}}**
{{#each players}}• {{ping}} — {{rank}} · {{mmr}} MMR · {{mode}}{{#if captain}} ★{{/if}}
{{/each}}
```

## Invite members from Discord

Staff can invite someone to the SquadVault organization without leaving Discord:

1. Right-click the user.
2. Open **Apps**.
3. Choose **Invite to SquadVault**.

The bot DMs them a join link. They sign in with Discord on that page — their Discord email does not need to match an invite address. If Discord blocks the DM (privacy settings), the command reply includes the link so staff can share it.

This uses the same staff gate as `/org` and `/team`. Invites create a **member** role; change it later in SquadVault if needed.

## Tips

* Use a dry run before the first live sync on a large server.
* Keep SquadVault as the source of truth for roster changes, then sync outward.
* Restrict Discord settings to admins so mappings are not changed by accident.
* Create, update, publish, and refresh of team lists appear under **Discord** in the [Audit log](/user-guide/audit-log).
* Automate role assignment and welcome messages with [Flows](/user-guide/flows).
* Check overall connection health from [Integrations](/user-guide/integrations).

<Info>
  Discord Sync requires Discord on your plan. Team lists require the `team_liste` feature (Pro / Elite). See [Billing](/user-guide/billing) if the page is locked.
</Info>
