Skip to main content

Stats Linking and Migration

Every queue writes its player stats into a named stats bucket. Two queues pointing at the same bucket share one leaderboard, one MMR pool, and one win/loss record. Two queues pointing at different buckets are completely independent.

This guide explains how NeatQueue picks that bucket, and gives step-by-step recipes for changing it without losing history.

Buckets are named, not owned

A stats bucket belongs to a name, not to a queue. Deleting or renaming a queue never deletes the bucket — it just changes which bucket the queue reads. That is why almost every "our stats disappeared" report is really a queue pointing at the wrong name.

How NeatQueue Picks the Bucket

For any queue, the bucket name is resolved in this order. The first match wins:

  1. Server-wide stats - If /leaderboardconfig sharedstats serverwide is enabled, every queue in the server uses the single server-wide name. Per-queue settings are ignored entirely.
  2. Shared stats name - Otherwise, if the queue has one set with /leaderboardconfig sharedstats set, that name is used.
  3. Queue name - Otherwise, the queue's own name (from /queuename) is used. This is the default.
Server-wide overrides everything

While server-wide stats are on, /leaderboardconfig sharedstats set is blocked and will refuse to run. You must disable server-wide stats first. This is the single most common source of confusion — see Separating one queue's stats.

Checking What a Queue Uses

Run /info in the queue's channel to see its current stats configuration, then /leaderboard to confirm the data looks right.

Common Changes

Separating one queue's stats

Use this when you added a second queue (for example a 1v1 alongside your 3v3) and discovered they share one leaderboard.

If server-wide stats are on, both queues are pinned to the same bucket. Turning it off alone is not enough — your original queue would fall back to its queue name, which is usually an empty bucket. You must re-point it at the name the history was actually recorded under.

  1. Find your current server-wide name with /info. If you never set one, it is player_stats.
  2. Turn off server-wide stats:
/leaderboardconfig sharedstats serverwide toggle:Disabled
  1. In the channel of the queue that should keep the existing history, pin it back to that name:
/leaderboardconfig sharedstats set name:player_stats
  1. Do nothing to the new queue. It falls back to its own queue name and starts a fresh, separate bucket.
  2. Run /leaderboard in each channel to confirm: the original is intact, the new one is empty.
Expect a gap between steps 2 and 3

After step 2 and before step 3, the original leaderboard will read as empty. Nothing has been deleted — the queue is simply pointing at a bucket with no games in it yet. Step 3 restores it. Because sharedstats set is blocked while server-wide is on, this order cannot be avoided.

Merging two queues onto one leaderboard

Point both queues at the same name:

/leaderboardconfig sharedstats set name:Competitive

Run it in each queue's channel with the same name. Both then read and write one bucket.

Merging does not combine existing history

Pointing two queues at a new shared name gives them a shared bucket going forward — it does not merge the stats they each accumulated separately. To combine existing records, use /managestats (below) before switching.

Renaming a queue without losing stats

Renaming only matters if the queue was relying on rule 3 (its queue name). If it has a shared stats name set, or server-wide is on, renaming changes nothing about its stats.

Otherwise:

  1. Rename the queue: /queuename name:New Name
  2. Point it back at the old bucket: /leaderboardconfig sharedstats set name:Old Name

Turning server-wide stats on

/leaderboardconfig sharedstats serverwide toggle:Enabled name:Competitive
Always pass a name

If you omit name, NeatQueue picks the most common stats name already in use across your queues. If your queues are deliberately separate, this can silently merge ladders you just finished splitting apart. Pass name explicitly so you know exactly which bucket everything lands in.

Turning server-wide stats off

Follow the same sequence as Separating one queue's stats, but repeat step 3 in every queue that should keep the shared history. Any queue you skip falls back to its queue name and starts empty.

Moving Stats Between Names

/managestats operates on bucket names, not on queues. This is the tool for consolidating or rescuing history:

  • /managestats copy old_name:A new_name:B - Copy stats from bucket A to bucket B; A is preserved
  • /managestats move old_name:A new_name:B - Move stats from bucket A to bucket B; A is cleared
Destinations are overwritten

Both commands overwrite whatever is already stored under new_name, and neither can be undone. Use copy to test the result before you use move.

Seasons and Monthly Stats

If monthly or custom seasons are enabled with /leaderboardconfig monthly, the active season is prefixed onto the bucket name, so each season is stored separately from the all-time bucket. Linking rules apply exactly the same way — the season prefix is added after the name is resolved.

Troubleshooting

Our leaderboard suddenly shows nobody. The queue is pointing at an empty bucket. This almost always follows a rename or a server-wide toggle. Re-point it with /leaderboardconfig sharedstats set name:<old name>. The data is still there.

sharedstats set says it is not allowed. Server-wide stats are enabled. Disable them first with /leaderboardconfig sharedstats serverwide toggle:Disabled.

Two queues that should be separate share one leaderboard. Either server-wide stats are on, or both queues have the same name or the same shared stats name. Check with /info in each channel.

A new queue inherited an existing leaderboard. Server-wide stats are on, so the new queue was pinned to the server-wide bucket the moment it was created.

Best Practices

  1. Decide before you launch - Changing linking after games are played always means a migration step
  2. Always pass name explicitly - Never let server-wide or shared stats auto-pick a bucket for you
  3. Only use server-wide for one ladder - If you ever plan a second, separate queue, prefer per-queue shared stats names from the start
  4. Copy before you move - Test with /managestats copy so the original survives a mistake
  5. Verify with /leaderboard - After any linking change, check every affected channel before announcing it
tip

Run /config save before making linking changes so you can restore your configuration if something goes wrong.

For general leaderboard setup and display options, see Leaderboard and Stats.