Activity Health Score
Make drift visible early.
A privacy-first 0–100 community health score. AHS explains what moved the needle, so you can make small, fair adjustments before inactivity becomes a moderation headache.
Discord servers rarely “die” overnight
They drift: conversations concentrate into a few channels, regulars stop showing up on weekdays, and one quiet week turns into a month of churn—often before staff can clearly see what’s happening.
Activity Health Score (AHS) is CleanerBot’s privacy-first way to make that drift visible early. AHS gives your team a single 0–100 community health score plus a clear explanation of what changed.
What AHS is
AHS is a server-wide community health KPI computed from the last 7 days of observable activity signals. The result is a 0–100 score that is updated once per day (scheduled around 00:15 UTC).
The score is intentionally designed for week-over-week comparison within your own server, not for ranking servers against each other.
What AHS is not
- Not a moderation trigger: AHS does not kick, warn, or change roles by itself.
- Not content analysis: we don’t judge sentiment, topics, or “quality” of messages.
- Not a vanity metric: it is built to resist spam and low-effort inflation.
- Not surveillance analytics: we do not store message content or read private messages.
The six pillars behind the score
AHS is a weighted blend of six pillars. Each pillar answers a question staff actually needs to answer—without chasing raw message volume.
1) Breadth
“How many people show up?”
Measures how many managed members were active in the last 7 days, normalized by server-size cohort. Helps detect if a small core is carrying the server.
2) Intensity
“How much energy per active member?”
Reflects how strongly active members participate, using robust statistics (e.g., median AU per active member) so outliers don’t dominate.
3) Momentum
“Are we trending up or down?”
Compares the current 7-day window to the previous week. It’s your early-warning system and “did our change work?” confirmation.
4) Mix
“Is engagement diverse or fragile?”
Measures spread activity across categories (e.g., text, reactions, voice, threads, RSVPs). A healthier mix usually means a more resilient community.
5) Continuity
“Do we show up consistently?”
Tracks how many of the last 7 days had any qualifying activity. Makes “spike-and-silence” patterns visible and nudges towards stability.
6) Decay hygiene
“Are channels fresh?”
Incorporates freshness and dormancy patterns. Connects “community health” to maintainability: active communities feel maintained.
How AHS helps
AHS is designed to produce outcomes—not dashboards.
Fairness: Anti-gaming by design
A metric that can be gamed becomes meaningless. AHS is designed to reward healthy patterns (more unique people participating, consistency, diversity) instead of noise.
The practical result: you cannot “spam your way” to a healthy AHS.
Coverage
AHS reflects only activity in places CleanerBot can observe.
- If CleanerBot can’t View Channel, activity there won’t count.
- For voice signals, CleanerBot needs Connect permissions.
- AHS surfaces a coverage indicator (OK / Partial / Low / Error).
Guardrails
AHS is intentionally fail-closed. We withhold the score if:
- Too little meaningful activity (< 15 active members).
- Coverage is too low (< 10%) to publish responsibly.
- Setup is incomplete.
A missing score is not a bug. It is a guardrail.
Persona Aha Moments
Gaming/MMO guilds
“We’re not dead, we’re concentrated.”
Symptom: Chat busy, but raids slip.
AHS: Intensity okay, Breadth drops.
Fix: Add one low-friction ritual (LFG prompt).
Roleplay servers
“The RP is fine; structure is decaying.”
Symptom: Great sessions, confusing onboarding.
AHS: Mix narrows, Decay hygiene declines.
Fix: Consolidate stale spaces, clear entry path.
Creator/Subscriber
“Spikes hide weekday silence.”
Symptom: Peaks after streams, quiet otherwise.
AHS: Continuity drops, Intensity spikes.
Fix: Add one midweek prompt (poll/Q&A).
Education/Cohorts
“Top students are carrying the class.”
Symptom: Few active learners, most quiet.
AHS: Breadth declines.
Fix: Weekly check-in prompt + office hour.
SaaS/Product
“Support is fine; community shrinking.”
Symptom: Tickets happen, engagement fades.
AHS: Mix collapses to one mode.
Fix: Archive dead spaces + one community touchpoint.
Privacy-sensitive
“Measure health without exposing anyone.”
Symptom: Low tolerance for data tooling.
AHS: Uses aggregates only. Sharing optional.
Fix: Use AHS privately in staff channel.
Try it now (5 minutes)
- Run
/scoreto view the current AHS and the main drivers. - If score is missing, check the guardrail reason (thin data, coverage, setup).
- Open
/score_settingsto configure behavior (publish channel, sharing). - Publish once using
/score_publish(max once per day). - If public sharing is enabled, use
/score_linkto get your web link. - Need a baseline policy? Use the Inactivity Policy Template.
- See a live public example: AHS public page.
Weekly habit loop (10 minutes)
- Look at the band (Poor / Fair / Good / Excellent).
- Look at Momentum (up/down vs last week).
- Choose one pillar to improve this week.
- Run one small action aligned to that pillar.
- Re-check next week.
Tip: Improve breadth before chasing intensity.
Common misunderstandings
“Our server has lurkers, so AHS will always be low.”
Lurkers are normal. AHS is not trying to force everyone to talk. It helps you track whether participation is widening and whether the server stays alive across the week. Breadth and continuity are often more useful than message volume.
“We don’t want a public scoreboard.”
Perfect. AHS is staff-first. Publishing is optional, and public sharing can be enabled/disabled. Many servers keep AHS internal and still get huge value.
“When is there no score?”
Because AHS refuses to guess. If data is too thin, coverage is too low, or setup isn’t ready, it withholds a misleading number and points you to the next best step.
AHS is about a calm routine: check the trend, pick one lever, re-check next week.