Add the bot to your Discord.

Elvi's Team Tracker follows your EA NHL Pro Clubs team and posts every game as it finishes — the real final score, the three stars, and who did what. Then it gives your players cards, head-to-head records and leaderboards to argue over.

What it does

Free, no ads, no premium tier.

  • Automatic box scoresEvery game your club plays posts itself in the channel you pick — final score, three stars, and the full skater and goalie lines.
  • Real scores, not segmentsWhen a private game lags out and gets replayed, the pieces are merged back into one true score instead of three fake ones.
  • No games against the CPUPractice and scrimmage games against the computer are never stored and never counted toward anyone's stats.
  • Player cardsPlayers link their gamertag once with /trackme, then /playercard gives them a card with their season on it. Everything is on the web too, at ElviTeamTracker.com.
  • Card statsFlip the card to its Stats face for the full season and the OVRs behind it, filtered to the format you actually play. Open on every server.
  • Head-to-head/versus knows your record against any player or club, the teammates you win the most with, and the ones who own you.
  • LeaderboardsSkater and goalie boards: /leaderboard server for your server's clubs, or /leaderboard club name:LG Montreal for any club the bot has seen. Add mode: to keep only public 6s, public 3s or private 6s.
  • Weekly availabilityA manager panel, /trackavailability, that collects who's in for which night, then builds the lineup and publishes it. When the bot has your league's schedule, the week goes up in one click, with each night's times and opponents.
  • Tracked by nameYou type the start of your club's name. Nobody has to go dig up an EA club id.

Setting it up

Two steps, about a minute. You need Manage Server on the Discord server.

  1. Add the bot Use the install link and pick your server. It installs to the server — there is no account install.
  2. Add your club The bot posts a welcome message. Hit ⚙️ Basic Server Setup on it — or run /elvisetup any time — then ➕ Add a club: what it is (your team), all games or private games only, the channel its scores go to, and the start of its name — often your league's prefix, like LG. Pick it from the results and confirm.

That's it. Games post in that channel from then on. Several teams, an affiliate, a rival you scout? Add each one the same way, each in its own channel.

Prefer a command? In the channel where you want scores, run /trackprimaryclub name:<start of your club's name>, or clubid:<id> if you already know your EA club id.

The bot has to be allowed to post in that channel — including attachments. Adding it to the server grants the permissions server-wide, but a channel can override them, and a private channel starts with the bot locked out entirely.

In that channel: Edit Channel → Permissions → add Elvi's Team Tracker (or a role it has), and make sure all four are allowed:

  • View Channel
  • Send Messages
  • Embed Links — box scores are embeds; without it they arrive blank.
  • Attach Files — cards and scoreboards are rendered images. Without it the bot has nothing it can send, and the game looks like it was simply skipped.

If games are silently not appearing and nothing in Discord explains why, this is almost always the reason. Posting in a thread needs Send Messages in Threads as well.

Options on /trackprimaryclub, if you use the command

OptionWhat it does
emoji:Shows a logo next to your club in scoreboards. Upload the emoji to your server first (Server Settings → Emoji) — a bot can't use emojis from servers it isn't in.
matches:all (default), or private_only if you only want league games posted.
backfill:0–5. How many already-played games to post right now. Default 0.

Don't see /elvisetup? Three things, in this order:

  1. Do you have Manage Server? Every setup command is admin-only, and Discord hides a command you can't run rather than greying it out. If /trackme shows up but /elvisetup doesn't, this is why.
  2. Just added the bot? Commands can take up to an hour to appear on a new server. Ctrl+R (Cmd+R on Mac) in Discord usually forces it.
  3. Server Settings → Integrations → Elvi's Team Tracker → Commands. If somebody already restricted it there, that setting wins.

Weekly availability, if your team plays in a league

The availability manager collects who's in for which night, builds the lineups and publishes them. Set it up once per team. The first three steps need Manage Server; after that, the team's coach role can run the panel too.

  1. Set up the league Run /leaguemanager. ⚙️ League setup holds the league's game times, whether nights are fixed or negotiated each week, the day a week starts, and its time zone. For leagues the bot already knows, like the LMS or the AXHL, it's all filled in already.
  2. Pick the season In the same panel, 🗓️ Season setup: adopt the league's season, with its weeks and its schedule when the bot has it. You can also create your own, like a pre-season or a mini tournament. 📆 Week setup marks a week off, such as a holiday or the All-Star break. A week off keeps its dates but not its number, so the next one keeps counting.
  3. Post the team's panel In a channel only your coaches see, run /trackavailability panel. Open ⚙️ Setup on it: the availability channel for the weekly posts, the lineup channel, the team's league, and two optional roles. The ping role is mentioned on the posts, and the coach role can run the panel without Manage Server.
  4. Start the season 🏆 Create season on the panel, and pick the season from step 2. The season counters and the league-game flags hang off it.

Then, every week:

  • Start the week. When the bot has the league's schedule, 📆 Post Week Availability puts up one post per night in one click, with its game times and opponents. Otherwise, use 📆 Post this week for fixed nights, or 📊 Night pulse to ask which nights work, then 📋 Open sign-ups.
  • Players answer on each night's post: In, Maybe or Out, and the game times that don't work for them.
  • 🧰 Lineup editor builds the lineups. Auto-fill spreads the games across the week, and you adjust them. Each published lineup asks its players to confirm, and their answer shows next to their name.
  • 🎮 Review games confirms which EA games were the league games. With a league schedule, the bot does this on its own. 📊 Season status shows who's been playing.

Commands

Anything marked admin needs Manage Server. You can narrow that further per role or per channel in Server Settings → Integrations.

For your players — no permission needed

CommandWhat it does
/trackmeLinks your Discord account to your in-game name. Do this once; it's what makes the rest work.
/playercardYour hockey card — your season, on a card you can flip through.
/versus playerYour head-to-head record against one player.
/versus clubYour record against a whole club.
/versus nemesisYour top tormentors, and the club that owns you.
/versus bffThe teammates you win the most with.
/versus togetherYour record with one to three named teammates on the same bench.
/leaderboard serverSkater and goalie boards for this server's clubs, combined.
/leaderboard clubThe same boards for any one club.
/trackmyclubWatch your own club so your games count toward your card. Posts nowhere — it's just for your stats.

Setting up tracking — admin

CommandWhat it does
/elvisetupThe server's setup, in one private panel. Add a club — your team, an affiliate (only the games your players are in) or a scouted rival (only its matchups against your other rivals) — with its channel and its games, all or private only. Tracked clubs lists everything, with Stop tracking under it.
/trackprimaryclubYour club, by command. Its games post in the channel you run this in.
/leaguemanagerThe league's settings, seasons and weeks, for the availability. See Weekly availability.
/trackavailability panelPosts a team's availability manager in the channel you run this in.

A few extras — challenges, milestone chases, streak records — are switched on server by server rather than shipped to everyone at once. If you want them on yours, say so in the support server.

How it works

The bot reads EA's public NHL Pro Clubs match data on a schedule — the same records the EA companion app shows. It stores the games your tracked clubs played, works out the real score and a per-match rating for each player, and posts the result. Nothing is scraped from your Discord, and the bot has no way to read your messages: it never requested the permission that would let it.

What it asks for, and why

PermissionWhy
View ChannelsTo see the channel you told it to post in.
Send MessagesTo post the box scores and answer commands.
Embed LinksBox scores and cards are embeds.
Attach FilesCards and some scoreboards are rendered as images.
Use External EmojisClub logos and position icons live on the bot's own application.

It does not ask for Read Message Content, Manage Messages, Kick, Ban, or anything else that touches your members.

Granting these when you add the bot covers the server. It does not override a channel that denies them — see the note in Setting it up.

Where your data goes

Onto one self-hosted server, and nowhere else. It isn't sold, shared or used for ads, and there is no analytics or tracking anywhere — not on this site either. The Privacy Policy lists field by field what is stored and how to have it removed.