Rankings
User rankings with tiers, points, watch-time rewards, and leaderboard commands.
Rankings
The Rankings plugin tracks user points, tiers, and ranks for your community. Points can come from built-in Twitch watch time or from Actions you enable.
Requirements
- Core — action handlers and triggers
- Bot — default chat commands (
!rank,!points,!top) - Twitch — watch-time tracking and default Twitch actions
Pages
Open Rankings in the sidebar:
| Page | Description |
|---|---|
| Overview | Stats (including total watch time), top users, tier distribution |
| Tiers & Ranks | Create tiers and rank milestones (global point thresholds). Click a rank to edit its name, points, or custom icon. |
| Leaderboard | Search users, adjust points manually, remove users, or ignore them so they stop earning points |
Progression
- Users earn total points that never reset when changing tiers.
- Each rank is a milestone at a required point total.
- Tiers group ranks; when a user reaches the highest rank in a tier and earns the next milestone, they advance into the next tier automatically.
- Rank and tier changes emit Rankings triggers you can use in Actions.
Editing ranks
On Tiers & Ranks, click a rank to edit:
- Name and points required
- Icon — choose Iconify (class such as
ri:medal-line) or File (upload an image/SVG). Raster images larger than 40×40 are resized automatically; SVGs keep their vector data and display at up to 40×40.
Watch time
When Watch time rewards is enabled (plugin settings), the plugin tracks active Twitch chatters via the Helix chatters list (with IRC join/part as a supplement) and awards points on a configurable interval. Twitch must be connected; reconnect Twitch after updating Stream Kit if watch time stayed at 0m.
| Setting | Default | Description |
|---|---|---|
| Watch time rewards | on | Enable automatic watch-time points |
| Points per minute | 1 | Points earned per full minute watched |
| Award interval (seconds) | 60 | How often active chatters are evaluated |
| Leaderboard size | 10 | Default size for leaderboard commands |
Remove vs ignore
On Leaderboard (or a user’s detail modal):
| Action | Effect |
|---|---|
| Remove | Deletes the user’s points and history. They can reappear when they earn points again (watch time or Actions). |
| Ignore | Deletes their points and history and adds them to an ignore list. They will not earn points from watch time or handlers until you Un-ignore them on the Leaderboard. |
Ignored users start from zero again after you un-ignore them.
Default commands (disabled)
Seeded under the rankings command group — enable them on Bot → Commands:
| Command | Triggers | Description |
|---|---|---|
| Rank | !rank | Current rank, tier, and points |
| Points | !points | Total points |
| Leaderboard | !top, !leaderboard | Top users |
Default actions (disabled)
Seeded under the rankings action group — enable them on Actions:
| Action | Trigger | Effect |
|---|---|---|
| Points on follow | Twitch → New Follower | +25 points |
| Points on sub | Twitch → New Subscription | +100 points |
| Points on cheer | Twitch → Cheer | +1 point (adjust amount in handler) |
| Points on raid | Twitch → Incoming Raid | +50 points to raider |
Triggers and handlers
Under Rankings in the action editor:
Triggers: Points earned, Rank changed, Tier advanced
Handlers: Get user rank, Add points, Set points, Remove points, Send rank message, Send leaderboard message, Send leaderboard to overlay
Use Send leaderboard to overlay with a Leaderboard browser source (or any overlay that listens for an update event with { entries: [...] }).
Full reference: Rankings triggers, Rankings handlers.
Source condition
Every point change carries a source label (why the points changed). Rankings triggers expose an optional Source condition that matches that label (case-insensitive). Leave it empty to match every event.
| Source value | Set by |
|---|---|
watch-time | Automatic watch-time rewards |
follow | Default “Points on follow” action |
subscription | Default “Points on sub” action |
cheer | Default “Points on cheer” action |
raid | Default “Points on raid” action |
manual | Leaderboard UI adjustments |
| custom text | Source field on Add / Set / Remove points (default manual if empty) |
When to use it
- Points earned — most useful. Example: only run an action when
sourceischeer, or leave empty and set Minimum amount instead. - Rank changed / Tier advanced — optional filter if you only want celebrations for certain origins (for example a sub or raid, not minute-by-minute watch time). For most setups, leave Source empty so every rank/tier change fires.
Source also appears in point history and in the trigger context for handlers that follow the trigger.
Rank / tier message templates
Rankings triggers expose string variables for chat messages (not JSON objects):
| Variable | Meaning |
|---|---|
{username} | User display name |
{rank} / {currentRank} | Current rank name |
{tier} / {currentTier} | Current tier name |
{previousRank} / {previousTier} | Previous rank / tier name |
{points} | Total points after the change |
{source} | Why points changed (follow, manual, …) |
Example: 🏅 {username} ranked up to {currentRank} ({currentTier})
Triggers also include channel and broadcasterId from your connected Twitch account so Send Message / As bot works even when the event did not come from chat.
Get user rank
Use Get user rank to look up a user's points, rank, tier, watch time, and leaderboard position and store them in action variables for later handlers (for example a custom Bot reply).
- User field: choose From trigger for chat commands, Select user for a fixed user, or Variable for
{target}placeholders - Configure output variable names (defaults:
found,userId,username,points,rank,tier,watchTime,position) foundistruewhen the user exists in rankings; otherwise all other variables are emptywatchTimeis stored as whole minutes (not seconds)
Example !rank with a custom reply:
- Trigger: Bot → Command (
!rank) - Handler: Rankings → Get user rank (User: From trigger)
- Handler: Bot → Send message with
{username} is {rank} ({tier}) — {points} pts (#{position})
The seeded Rank command uses Send rank message instead; both approaches work.
Manual !addpoints command
To award points from chat (for example !addpoints CoolUser 100), create a command on Bot → Commands:
- Command pattern:
addpoints <target> <amount>(placeholders must match the names you use in handler variables) - Handler: Rankings → Add points (not Set points — Set replaces the total)
- User field: choose Variable and enter
{target} - Amount field: enter
{amount}
Restrict permissions to mods/broadcaster. Users are stored under a platform id such as twitch:<userId> when Twitch provides a numeric id, or twitch:<username> until that id is known. Add points adds to the current total; Set points replaces it.
Point history
Click a user on Leaderboard or Overview → Top users to open their detail modal.
The modal shows:
- Current points, rank, tier, watch time, and platform
- A chronological list of point changes with when, source, change, and total after
Sources include follow, subscription, cheer, raid, watch time, manual adjustments, and commands. Watch time entries are aggregated into one row per hour per user (instead of one row per minute).
History starts when this feature is enabled — earlier point changes are not backfilled.
Dashboard widget
Add the Rankings widget from the dashboard to see user count, total points, total watch time, and the top five users at a glance. Click a user to open their detail modal (same as on Overview).