-
Turn Analytics on. Open your server's Services page in the dashboard and switch Analytics on. From that moment the bot records every regular and reply message (system messages such as join notices, boosts and pins are not counted), every voice session, and every join and leave. Bot accounts are skipped by default.
-
Run the setup wizard. Open Analytics in the dashboard. Until the wizard has run, the Home page sends managers to the Setup page. "Run setup" creates a private #analytics-alerts channel (or reuses a text channel with "analytics" in its name), saves the defaults with bots excluded, creates an "Activity Drop Warning" alert that fires when messages drop 30% against the previous week, and starts an import of up to 365 days of message history. The import walks every text channel, its active and public archived threads and its forum posts, counts only regular and reply messages, and records a join for each current member on the day they joined. Progress shows under History on the Settings page. Channels excluded before the wizard runs are left out of the import, so set exclusions first if some channels must stay out. You can re-run the wizard later.
-
Decide what not to count. On the Analytics Settings page, under What counts, keep Leave bots out on (recommended). Under Channels and roles to leave out, pick Channels to leave out; threads and forum posts inside them are left out too. Pick Roles to leave out; members currently holding one are left out, and a role change is picked up within half an hour. Exclusions stop new recording and hide those channels and members from the server-wide numbers. A member's own card still shows what was recorded before.
-
Check the timezone and how long data is kept. Time zone defaults to "Follow the server time zone", which is set on the Bot settings page; pick a zone here only when Analytics should differ from it. Keep data for offers 30, 90, 180 or 365 days (90 to start); the page marks the choices above your plan's cap. Detail older than the window is removed every night, and shortening the window deletes the difference at the next nightly run. Charts and rankings cannot look back further than this window.
-
Try the commands. /server posts a public overview card. /me posts your own stats card, with a button to hide it. /leaderboard ranks members by Messages, Voice Hours or Voice Sessions, and 0 days means all time. /top gives four ranked lists at once, or one ranking per page. /invites ranks who brought in the most members who are real and still here, privately unless a server manager sets
post. /chart messages, /chart voice, /chart members, /chart channel and /chart member draw per-day charts over 7, 14, 30 or 90 days; they are private unless you setpostto yes. /info server, /info user, /info role, /info channel, /info invite, /info emoji and /info avatar show what Discord itself knows about each. -
Open the dashboards and style the cards. The Analytics menu has 11 pages in four groups: Home; Growth, Activity (with Chat, Voice, Online and Playing tabs), Best times, Channels and Members under Your server; Role rewards, Counters, Alerts and Sharing under Put it to work; and Settings under Housekeeping. A member, a channel, a day or an hour of the week opens in a side panel. The card designer, opened from the Sharing page, sets the colours, background image and sections of the stats card, holds the Stats cards on switch (turning it off also stops /stats, /me and /user), and has a leaderboard section for the /leaderboard defaults: metric, window, number of entries (5 to 25), time frames, medals, avatars, progress bars and your rank line.
-
Share numbers outside the dashboard. Who can open the dashboard, on the Sharing page, sets who can open the public stats page: Private ("The link is off. Nobody outside your dashboard sees these numbers.", the default), Members only, Role restricted or Public ("Anyone with the link. Members are never shown, only server totals."). The page lives at /a/ followed by your server id and has Overview, Messages, Voice and Members pages. Members share their own card with "Open & share" on /me and hide it with "Hide my card". Managers can see who hid their card and can reset every share link from the Sharing page; old links then stop working.
-
Reward activity with roles. On the Role rewards page, a reward gives a role when a member meets its conditions: a minimum or maximum on a metric such as messages, voice hours or voice sessions, a window in days (0 means all stored data), a top rank or top percent, or a minimum reached on at least so many days. Up to 8 conditions combine with all or any, and each reward runs on a schedule from every 10 minutes to once a day. The bot needs Manage Roles and its own role must sit above the reward role. All-time rewards on messages, voice hours and voice sessions use totals that data retention never removes.
-
Show live numbers in channel names. The Counters page, or /counter in Discord, turns a channel's name into a live number that the bot renames every 6 minutes when it changes. Quick setup (or /counter setup) makes a Server Stats category with All members, Members and Bots counters. Twenty kinds are on offer: members, members with a role, in voice, online or playing something (these two need the Presence intent), channels by type or category, roles, emojis, stickers, boosts and the boost level, bans (the bot needs Ban Members), members without a role or still in rules screening, Bluesky followers, players on a Minecraft, FiveM or Steam game server, a clock, a countdown and activity counts. Up to 4 fit in one name. A counter with a goal reads 1,204 / 2,000 and can post your message in a channel when it gets there, then raise the goal by a step. Every number can read 1,234, 1.2K or 1234. To reword a counter, rename the channel in Discord and keep a number in the name: the first number is the one the bot keeps updated. /counter check lists anything that stops a counter from updating.
Analytics
Analytics counts what happens in your server, never what was said. Messages, voice, joins and leaves, and if you turn it on who is online and what members play, become trends, retention curves, leaderboards, charts you can call up in Discord and a stats card members can share. Role rewards, alerts and counter channels run on the same numbers.
Set it up
1 optional features with their own switch
- Log channel: analytics log
How it works
- Run setup. The wizard creates a private
#analytics-alertschannel, turns on bot exclusion, adds a starter activity-drop alert and imports up to 365 days of message history so the charts are not empty on day one. It raises Data Retention to 365 days when it is shorter, so the imported history is kept. - Activity is counted. Every message, voice session, screen share, reaction, thread, join and leave is recorded as a count and rolled up by hour and day. Turn on status and activity tracking and the bot also counts who is online every 5 minutes and records what members play, stream or listen to. Message text is never stored.
- Read the dashboard. Home says how the server is doing. Growth, Activity, Best times, Channels and Members each answer one question, and any member, channel, day or hour opens in a side panel. Inside Discord,
/server,/topand/chartrender cards and charts. - Put the numbers to work. Role rewards grant roles when a member meets your conditions, alerts post to a channel when something changes, counter channels show live numbers in a channel name, and members share a stats card with
/statsor/me.
Permissions the bot needs
GeneratedThe invite link grants these. If one is missing the service page in the dashboard shows a re-grant banner, and the affected commands say what they cannot do instead of failing silently. The Setup Check on the Bot page, or /yourbot check in Discord, lists everything the bot is missing across your services.
Every Analytics feature is included for every server, on the shared bot and on custom bots. A subscription adds a custom bot identity and marketplace access, not features here.
| Feature | Included |
|---|---|
| Overview | Yes |
| Messages | Yes |
| Voice | Yes |
| Members | Yes |
| Channels | Yes |
| Leaderboard | Yes |
| Role Rewards | Yes |
| Alerts | Yes |
| Counter Channels | Yes |
| Settings | Yes |
| Retention Analysis | Yes |
| Heatmaps | Yes |
| Data Exports | Yes |
| Annotations | Yes |
| Data Backfill | Yes |
| Status | Yes |
| Activity | Yes |
| Public Dashboard | Yes |
| Analytics API | Yes |
| Limits | |
| Alert Rules | Unlimited |
| Leaderboard Size | 100 |
| Data Retention (days) | 365 |
| Counter Channels | 10 |
| Command | What it does | Who by default |
|---|---|---|
| /chart | ||
/chart messages | Messages per day | Everyone |
/chart voice | Voice minutes per day | Everyone |
/chart members | Joins and leaves per day | Everyone |
/chart channel | One channel's messages or voice minutes per day | Everyone |
/chart member | One member's messages and voice minutes per day | Everyone |
| /counter | ||
/counter setup | Create a Server Stats category with member, people and bot counters | Server managers |
/counter create | Add one counter channel | Server managers |
/counter list | Show this server's counter channels | Server managers |
/counter delete | Stop updating a counter channel | Server managers |
/counter check | Find what could stop this server's counters from updating | Server managers |
| /info | ||
/info server | Details about this server | Everyone |
/info user | Details about a member | Everyone |
/info role | Details about a role | Everyone |
/info channel | Details about a channel or category | Everyone |
/info invite | Details about an invite link | Everyone |
/info emoji | Details about an emoji | Everyone |
/info avatar | Show a member's avatar | Everyone |
| /invites | ||
/invites | Top inviters: who brought in members that stayed | Everyone |
| /leaderboard | ||
/leaderboard | Show server activity leaderboard | Everyone |
| /me | ||
/me | Show your stats card for this server | Everyone |
| /server | ||
/server | Show this server's activity overview | Everyone |
| /stats | ||
/stats | Show your analytics stats for this server | Everyone |
| /top | ||
/top | Top members and channels of this server | Everyone |
| /user | ||
/user | Show a member's stats card for this server | Everyone |
Everything it does
Messages
Volume, who drives it, where it happens and what it is made of.
Voice
Voice is tracked with the same care as text, including who talks to whom.
Members and retention
Whether people stay, and who is about to leave.
Channels
Which channels are alive, and which only look it.
Status and activity
Off by default, and only possible when your bot has the Presence intent.
Leaderboards, cards and charts
The parts members see.
/me and /user open the same card./top ranks members by messages or voice, channels by messages or voice, or shows all four at once, over 7, 14, 30 or 90 days. /server renders an overview card: members and how that changed, active members, messages and voice hours for 7 and 30 days, top channels and 30-day sparklines.Role rewards
Roles that members earn, granted and revoked without anyone watching.
Alerts and markers
The dashboard comes to you when something changes.
Counter channels
Live numbers in a channel name.
{1} members, {2} online./counter setup, /counter create, /counter list, /counter delete and /counter check, which names whatever would stop a counter from updating. Rename a counter channel in Discord to reword it: the first number in the new name is the one the bot keeps updated.Starboard
Off by default, and the one place content is copied.
Public dashboard, API and CSV
The numbers can leave the dashboard on your terms.
Filters
Read filters apply when a page is read, never when an event is recorded, so a change reshapes every page at once.
In the dashboard
Runs on its own
Limits
| What | Value | Notes |
|---|---|---|
| Data retention | 30 to 365 days | 30, 90, 180 or 365 days per server, 90 by default. Rollups are kept twice as long. Running setup raises it to 365. |
| History import | 7 to 365 days | Whatever the bot can read. |
| Chart windows | 7, 14, 30 or 90 days | /chart and /top, capped by your retention. |
| Leaderboard metrics | 12 | |
| Role reward metrics | 15 | Up to 8 conditions per reward, 200 ignored members. |
| Reward schedule | 10 minutes to once a day | 30 minutes by default. |
| Alert types | 5 | Cooldown per rule, 1 to 168 hours, 6 by default. |
| Starboard threshold | 1 to 100 | Distinct reactors, 5 by default. |
| Voice partners window | 90 days | Pairs count after 5 shared minutes. |
| Name history | 12 names | Per member, on the profile. |
| Leaderboard card entries | 5 to 25 | 10 by default. |
| Counter kinds | 20 | Each numeric one reads 1,234, 1.2K or 1234. |
| Counters per channel | 4 | Name up to 100 characters, one rename per 6 minutes. |
| Counter channels | 10 per server | The default cap. |
| Channel groups | 20 | Up to 25 channels each. |
| Status sample | Every 5 minutes | The Online tab reads 24 hours, 7 or 30 days. |
| Activity filter | 200 names | Allow or block list. |
| Automatic marker sources | 17 | Backfill up to 365 days. |
| API keys | 5 active | 60 requests a minute per key, windows up to your retention. |
| CSV exports | 15 | One per page, tab or side panel with a chart. |
What it watches
GeneratedThe Discord events Analytics reacts to while it is enabled. It does not read history from before it was turned on.
Safety
/chart channel refuses one they cannot see.What it does not do
- No XP or levels. Rewards are conditions, met or not.
- No sentiment, toxicity or AI summaries. Everything is counts.
- No alert for a general activity spike. Spikes and unusual days show on the dashboard only; the alert types are drop, spam rate, activation, voice peak and dead channel.
- No scheduled digest posts, and CSV is a download from the page, not a scheduled delivery.
- No cross-server analytics. Every page, key and export is one server.
- No Kick or X follower counters. Kick's API has no follower count and X charges for its API.
- No status or activity page in
/chart. Status and activity live on the dashboard and in CSV. - No per-member data deletion inside the service. A member can hide their card, but their counts stay until the retention window removes them.
Questions
Does it read my members' messages?
No. It records that a message happened, who sent it, where and when, and what it contained in counts. The text is never stored. The only exception is a starboard repost, which you have to turn on.
How far back does it go?
Setup imports up to 365 days of message history the bot can read and raises Data Retention to 365 days so it is kept. The History card in Settings can import 7 to 365 days later. After that, everything is recorded live and kept for the retention window you set.
Can members see their own stats?
Yes, with /stats or /me, or on the web at their personal stats page. Other members' pages need the viewer role, and a member can hide their card from everyone else with one button.
What does retention mean here?
A member counts as back a week on if they chatted or joined voice on day 7 or any later day, per weekly join cohort. Cells read Too new until the cohort is old enough to know.
Can I reward active members automatically?
Yes. A role reward grants a role when up to 8 conditions on 15 metrics are met, with optional revoke, DM and a channel notice, on a schedule from every 10 minutes to once a day.
Will it count bots?
Not by default. Bot exclusion is on, and a re-scan tool flags historical rows from before a bot was recognised.
Does it track who is online?
Only if you turn status tracking on, and only when your bot has the Presence intent. It then counts online, idle, busy and offline members every 5 minutes as whole-server numbers.
Can I show the member count in a channel name?
Yes. A counter channel combines up to 4 counters, such as members, members online, members in voice or a countdown, and is renamed at most once every 6 minutes because of Discord's rename limit.
Can people outside the dashboard see the numbers?
If you let them. From the Sharing page, open the read-only dashboard to members, to chosen roles or to everyone, or hand a tool an API key. Neither shows a member's name. You can also download the numbers behind the charts as CSV.
Why does a chart show fewer days than I asked for?
/chart and /top are capped by your retention window, and the reply says how many days the server keeps.