Know what your community actually does.

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.

YourBot analytics mascot holding a clipboard of charts
20
dashboard pages
15
role reward metrics
5
alert types
11
slash commands
01

Comment ça fonctionne

STEP 1
Run setup
The wizard creates a private #analytics-alerts channel, 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.
STEP 2
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.
STEP 3
Read the dashboard
Overview, retention, messages, voice, members, channels, heatmaps, status and activity, a drill-down for any member or channel, or /server, /top and /chart inside Discord.
STEP 4
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 /stats or /me.
02

Everything it does

The complete list, grouped by what you are trying to do. Every item describes what Analytics does today.

Messages

Volume, who drives it, where it happens and what it is made of.

Trends with context. Daily counts with a 7-day average, the change against the previous period, the busiest and quietest day, and a weekend-versus-weekday verdict.
Who and where. Top channels and top senders, how many different people posted, the quietest channels, a channel growth table, and drill-downs into any channel or member.
What messages are made of. The share of replies, attachments, embeds, stickers and mentions.
Reactions and threads. Reactions given and received per day, top emoji and how they trend, top givers and receivers, threads created and active, the channels with the most threads, and top thread creators.
An anomaly banner. A day at least two standard deviations from the trailing 14-day mean is flagged on the page, once there are seven days of history.
Heatmaps. Hour-by-weekday grids for messages and voice, per channel if you like, with the peak and quiet cells and the number of active hours. Click a cell for its top 5 channels and members, or compare the grid against the period before it.

Voice

Voice is tracked with the same care as text, including who talks to whom.

Hours and peaks. Voice hours per day with a 7-day average, peak concurrent users per day, and who is in voice or streaming right now.
Session shapes. Median and 95th percentile session length, an average, and a histogram from under 5 minutes to over 2 hours.
Stickiness. Returning versus total voice users per week for the last 8 weeks.
Voice partners. Pairs of members who spend the most time in the same channel, counted once they have shared 5 minutes, over the last 90 days.
Screen share as its own metric. Hours, sessions and top streamers.
Voice states are recorded. Each session remembers whether the member was AFK, self-muted, self-deafened, server-muted or server-deafened, and you can leave any of those states out of voice hours, sessions and leaderboards.

Members and retention

Whether people stay, and who is about to leave.

Joins, leaves and net. Per day, with a live member count line and daily active members.
Cohort retention. Day 1, 7 and 30 retention per weekly join cohort, where coming back on that day or any later day counts, computed nightly. A cell shows pending until the cohort is old enough.
A retention funnel. Joined, got a role, first message, first voice, returned after a week, still here, each measured from the member's own join time.
Activation and bounce. The share of joiners who spoke or joined voice within 24 hours, and the share who left within a day or a week.
Churn risk. Members active in the last 14 days who have gone silent for 5, on the overview and the retention page.
Tenure and account age. Average, median and percentile days in the server, a tenure histogram, and an account-age histogram of new joiners as a raid signal.
Who invited whom. Invite attribution from Discord's invite counters, with a top inviters table and still-here counts.
Fake joins are flagged. A join that leaves within 10 minutes, an account younger than 7 days, or a member inviting themselves is marked as fake and left out of the inviter table unless you include it. Both windows are yours to change, and a no-avatar rule can be added.
Recent joiners and leavers. The last 15 joiners with the invite they came through, and the last 15 leavers with how long they stayed.
A profile for every member. Message, voice and reaction series, top channels, voice partners, a heatmap, top emoji, threads, invitees, name history, rank, current status, and the activities they spend the most time in.

Channels

Which channels are alive, and which only look it.

A verdict per channel. Growing or declining on a 20 percent swing, steady, new activity, quiet, or dead after 14 days of silence.
Momentum and dead lists. Channels trending up or down, and the ones nobody has used in two weeks.
Channel groups. Show several channels as one row, on every channel table, in the API and in CSV. Up to 20 groups of up to 25 channels each. A group replaces its channels so nothing is counted twice, and the group's own page breaks it back into its parts.

Status and activity

Off by default, and only possible when your bot has the Presence intent.

Members by status. Every 5 minutes the bot counts how many members are online, idle, on do not disturb and offline. The Status page shows the latest count, the peak, the series and an hour-by-hour average over 1, 7 or 30 days.
What members do. Activity tracking records a session each time a member starts or stops playing, streaming, listening to, watching or competing in something. The Activity page shows total hours, members and sessions, the top 10 activities by hours and by members, who is doing what right now, and the top 5 members behind each of the 5 biggest activities.
Allow or block lists. Keep only the activities you name, or drop the ones you name, up to 200 names.
Checked against the intent. Both switches only turn on when the bot serving your server has the Presence intent. Without it every member would read as offline, so the page says so instead of showing zeros.
Whole-server counts. Status samples are counts of the whole server with no member column. Activity sessions skip bots and excluded roles, and a member who hides their stats card is left out within five minutes.

Leaderboards, cards and charts

The parts members see.

Twelve leaderboard metrics. Messages, voice hours and sessions, screen share hours and sessions, reactions given and received, threads created, days in server, days active in text or voice, and unique channels used.
`/stats` as a picture. A rendered card with totals, all-time and 30-day rank with a top-percent figure, 1-day and 7-day counts, top channels, sparklines and the next role reward, with a switcher for a 30-day activity graph and a channel breakdown. /me and /user open the same card.
`/leaderboard` as a picture. A ranked card with dropdowns to change the metric and time frame in place.
`/top` and `/server`. /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.
`/chart` in Discord. A per-day chart of messages, voice minutes, joins and leaves, one channel, or one member, over 7, 14, 30 or 90 days. It is shown only to you unless you choose to post it in the channel.
A shareable page. Each stats card has a signed, no-login public page and PNG. Members can hide their own card with one button, and Settings can revoke every link at once or switch cards off for the server.
A card designer. Colours, background image and section toggles for both cards, with live previews. Leaderboard cards show 5 to 25 entries with avatars, progress bars and medals.

Role rewards

Roles that members earn, granted and revoked without anyone watching.

Conditions, not just thresholds. A reward holds up to 8 conditions on 15 metrics, combined with all or any. Each condition can set a minimum, a maximum, a window, a top rank or top percent, or a number of days the minimum must be met on. The bot grants the role to everyone who qualifies.
Fifteen metrics. Messages, voice hours and sessions, days active in text or voice, unique channels posted in, screen share hours and sessions, days in server, reactions given and received, threads created, the longest streak of consecutive days with a message, account age, and members invited.
On its own schedule. Each reward runs every 10 minutes, 30 minutes, hour, 6 hours or once a day, 30 minutes by default.
Revoke, DM and announce. Optionally remove the role when a member no longer qualifies, DM them a custom message when they earn it, and post a notice to a channel of your choice, grouped into one message per run by default.
Invert and ignore. Flip a reward so it targets members who do not meet the conditions, and list up to 200 members it never touches.
Checked before it runs. The page warns when the bot lacks Manage Roles, its top role is too low, or the role is managed by an integration, and shows a live holder count.

Alerts and annotations

The dashboard comes to you when something changes.

Five alert types. Activity drop in messages or active members, spam spike, activation drop, voice peak and dead channel, each checked every 5 minutes with its own cooldown of 1 to 168 hours, 6 by default.
No alarms on a quiet week. An activity drop only fires when the previous window had at least 50 messages, or 10 active members for the member metric.
Delivery you can trust. A rule cannot be saved without a channel. If the channel breaks, the alerts page shows it and the owner is told once a day.
A firing history. Every alert that fired, with a one-line summary.
Annotations on the charts. Drop a labelled marker on any date, or switch on any of 17 automatic sources: giveaways started, ended or cancelled, announcements published, raid mode, lockdowns and anti-nuke incidents, Beacon events, tracked streams going live, patch notes for tracked games, member milestones from 100 to 100,000, boost tier changes, Start Your Server builds, service toggles, alerts that fired, finished history imports, and the bot being offline for 10 minutes or more. A backfill adds up to 365 days of past events.

Counter channels

Live numbers in a channel name.

Eleven kinds of counter. Members (people, bots or everyone, with an optional goal), members with any or all of chosen roles, members in voice, channel count, role count, members by status, a clock, a countdown, an activity count or change over 1, 7 or 30 days, and the top member or channel.
Up to 4 counters per channel. A name template of up to 100 characters can combine them, for example {1} members, {2} online.
Renamed on a 6-minute slot. Discord allows two renames per channel every 10 minutes, so a counter channel is renamed at most once per 6-minute slot and a clock moves in 6-minute steps.
New channel or an existing one. Create a fresh channel or attach counters to one you already have, with a preview line before you save. A status counter needs the Presence intent and keeps the channel's last good name when it cannot count.

Starboard

Off by default, and the one place content is copied.

Reposts the best messages. A message that reaches your reaction threshold, 1 to 100 distinct reactors on the emoji you choose, is reposted as an embed in a starboard channel with its first image.
Rules. Allow or block self-stars and bot messages, ignore channels, and the post is removed if the count drops back under the threshold.

Public dashboard, API and CSV

The numbers can leave the dashboard on your terms.

A read-only dashboard. Overview, messages, voice and members pages over 7 to 90 days, with per-day charts and the top channels, never a member's name or row. Open it to nobody, to members who sign in, to holders of chosen roles, or to everyone.
A per-server API. Five endpoints behind a server key: per-day series for messages, voice hours, joins, leaves, members and reactions, top members and channels, totals, member and active-member counts, and the channel list. Member rows carry ids and counts, never names.
Keys you control. Up to 5 active keys per server, each shown once and stored only as a hash, with 60 requests a minute per key.
CSV from every page. Fifteen exports, one per page, carrying the page's current filters, with timestamps in ISO 8601 and a guard against spreadsheet formulas.

Filters

Applied when a page is read, never when an event is recorded, so a change reshapes every page at once.

Who and what counts. Excluded channels and roles, an allow list of roles so only their holders count, a block list of members, and voice states to leave out.
Nothing is deleted. The raw rows stay complete, so turning a filter off brings the history back.
Saved views. Save a page with its filters under a name, for yourself or for everyone with access.
03

Commandes

Every slash command the service registers, and who can run it. Most day-to-day use happens through buttons and the dashboard; commands are the fast path.

commandesCe que cela faitQui
/statsRenders a stats card for you or another member, with a switcher for an activity graph and a channel breakdown, an Open and share link, and a Hide my card button on your own.Everyone
/meRenders your own stats card.Everyone
/userRenders another member's stats card.Everyone
/leaderboardRenders a ranked card for messages, voice hours or voice sessions over a number of days, 0 for all-time, with dropdowns to change it in place.Everyone
/topRenders top members by messages or voice, top channels by messages or voice, or an overview of all four, over 7, 14, 30 or 90 days.Everyone
/serverRenders a server overview card: members, active members, messages and voice hours for 7 and 30 days, top channels and sparklines.Everyone
/chart messagesA chart of messages per day over 7, 14, 30 or 90 days, only to you unless post is set.Everyone
/chart voiceA chart of voice minutes per day over 7, 14, 30 or 90 days, only to you unless post is set.Everyone
/chart membersA chart of joins and leaves per day over 7, 14, 30 or 90 days, only to you unless post is set.Everyone
/chart channelA chart of one channel's messages or voice minutes per day. Refuses a channel you cannot see or one excluded from Analytics.Everyone
/chart memberA chart of one member's messages and voice minutes per day. A member who hid their card is not shown to others.Everyone
04

In the dashboard

Everything is configured from the web, per server. These are the areas you will find there.

Overview
KPI tiles for the last 30 days, the activity chart with messages, voice, joins, leaves, reactions and threads plus your annotations, a 7 or 30 day comparison, an insight line, the anomaly banner, top channels and users, live voice, activation, churn risk and lurker counts, and a pulse of the last hour and last 15 minutes.
Retention
Activation, bounce, the cohort table and chart over 4 to 52 weeks, and the churn-risk list.
Messages, Voice, Members, Channels
One page per subject with the charts and tables listed above.
Heatmap
Messages or voice by hour and weekday, optionally for one channel, with a cell drill-down and a previous-period comparison.
Status and Activity
Who is online, idle and busy over time, and what members play, stream and listen to, over 1, 7 or 30 days.
Member and channel detail
A drill-down page for any member and any channel or channel group.
Leaderboard
Twelve metrics, per-row sparklines and an all-time sidebar.
Alerts and Annotations
The rule builder and firing history, and manual and automatic chart markers with their 17 sources and backfill.
Role Rewards
The rewards table with live holder counts and the condition builder.
Counters
Your counter channels with their last value and last rename, the create and attach form with a preview, and pause, reorder and delete.
Card Designer
Colours, background and section toggles for the stats and leaderboard cards, with previews.
Settings
Exclude bots, invite tracking and the fake-join rules, data retention from 7 to 365 days, a time zone that follows the server or overrides it, excluded channels and roles, the role allow list, member block list, voice states and channel groups, status and activity tracking with the activity allow or block list, dashboard access level, API keys, members who hid their card, a share-link reset, re-scan for bots, a role roster refresh, the starboard, saved views, a Discord history import and rollup backfill of 1 to 365 days, and the job list.
Setup
The one-click wizard and its checklist.
Personal stats page
A web copy of the stats card for any member, with the share link. Other members' pages need the viewer role.
05

Runs on its own

Batched writes. Events are queued and a separate worker stores them in batches, so the bot never waits on the database.
Rewards every 10 minutes. The loop checks which rewards are due; each one runs on its own schedule, from every 10 minutes to once a day.
Alerts every 5 minutes. Every enabled rule, honouring its cooldown.
Status samples every 5 minutes. One count of online, idle, busy and offline members per server that has status tracking on.
Counters every 6 minutes. Counter channels are recomputed on each 6-minute slot and renamed only when the name changed.
Nightly at 00:05 UTC. Cohort retention is recomputed, a member-count snapshot taken, old cached names pruned, and data beyond your retention window deleted in batches.
Roster sync every 30 minutes. Keeps the member list and the role roster behind the role filters fresh between restarts.
An hourly janitor. Voice, screen share and activity sessions that never got an end event are closed after 24 hours.
06

Limits and plans

The service is included with every subscription tier. These are the fixed limits it works within.

SettingValeurNotes
Data retention7 to 365 daysSet per server, 90 by default. Rollups are kept twice as long.
History import1 to 365 daysWhatever the bot can read.
Chart windows7, 14, 30 or 90 days/chart and /top, capped by your retention.
Leaderboard metrics12
Role reward metrics15Up to 8 conditions per reward, 200 ignored members.
Reward schedule10 minutes to once a day30 minutes by default.
Alert types5Cooldown per rule, 1 to 168 hours, 6 by default.
Starboard threshold1 to 100Distinct reactors, 5 by default.
Voice partners window90 daysPairs count after 5 shared minutes.
Name history12 namesPer member, on the profile.
Leaderboard card entries5 to 2510 by default.
Counters per channel4Name up to 100 characters, one rename per 6 minutes.
Counter channels10 per serverThe default cap.
Channel groups20Up to 25 channels each.
Status sampleEvery 5 minutesPages read 1, 7 or 30 days.
Activity filter200 namesAllow or block list.
Auto-annotation sources17Backfill up to 365 days.
API keys5 active60 requests a minute per key, windows up to your retention.
CSV exports15One per page.
07

Works with

08

Safety and permissions

Counts, not content. The message table has no content column. What is stored per message is who, where, when, and whether it had a reply, attachments, embeds, stickers or mentions. Only ordinary messages and replies count.
The starboard exception. A starred message's text and first image are reposted in Discord as an embed. That is the only place content is copied, and only if you turn the starboard on.
Exclusions. Bots are excluded by default. Exclude channels and roles from collection, and threads under an excluded channel are excluded too. An exclusion stops recording; it never deletes what was already counted.
Retention you set. 7 to 365 days per server, purged nightly. Rollups are kept twice as long, then pruned.
Public cards are signed and optional. Card pages use a signed token tied to the server and member, name only public channels, stop working when the member leaves or hides their card, and can be disabled or reset for the whole server.
What a viewer can see. A card or chart in Discord never names a channel the viewer cannot open, and /chart channel refuses one they cannot see.
Presence is opt-in twice. Status and activity tracking are off until you turn them on, and cannot turn on without the Presence intent. Status samples hold no member column, and a member who hides their card is left out of activity tracking.
Outside access is yours to open. The read-only dashboard is private until you choose a level, never shows a member row, and API keys are stored as hashes and shown once.
Your bot's token. On servers running their own bot, every Discord call uses that bot's token.
09

What it does not do

Worth knowing before you set it up. If one of these matters to you, the marketplace may have a plugin that covers it.

  • 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. The spike banner is on-page 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 follower counters. A counter channel cannot show YouTube, Twitch or Kick follower counts.
  • 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.
10

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 Settings can import 1 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 retained on day 7 if they were active on day 7 or any later day, per weekly join cohort. Cells stay pending 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. Open the read-only dashboard to members, to chosen roles or to everyone, hand a tool an API key, or download any page as CSV. None of those show a member's name.

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.

The ten · every service in full
Included with every tier

Turn on Analytics in one click.

Add YourBot to your server, open the dashboard and switch the service on. Settings live on the web, so nothing here needs a command to configure.