Fenrai logoFenrai
BETA
Docs
Community Health

Community Health

Retention by joining week, where the talking happens, and who is drifting away.

Most Discord dashboards count messages. Counting messages tells you how loud the server was, not whether it is healthy. Dashboard > Overview answers the question underneath: are the people who arrive still here a month later, and who used to talk and stopped.

What is measured

Fenrai keeps counters in memory and writes them out once a minute, so nothing is recorded per message and a busy server costs the same as a quiet one. Three things are stored:

  • A daily total per server: messages, joins, leaves, leaves within a day of joining, how many different members talked, and how many members the server had that day.
  • A daily total per channel, which is what the channel ranking reads.
  • One row per member: when they joined, when they last spoke, how much they have said in total, the name they last posted under, and whether they have left.

The window

Everything except retention covers a window you pick at the top of the page: 7, 30 or 90 days. The choice travels in the URL, so a link to a 90 day view opens as a 90 day view. Retention always reads by joining week, because a cohort is a cohort no matter which window you are looking at.

Members over time

The size of the server, day by day. Joins and leaves tell you the churn underneath it, but only the total says whether all that churn adds up to growth. A day the bot saw no activity at all has no reading and is skipped rather than drawn as a drop to zero.

Retention by joining week

Everyone who joined in the same week is one cohort. For each cohort you get two readings at day 1, day 7 and day 30:

  • Stayed is the share who were still in the server at that point.
  • Talked is the share who posted at least once on or after that day.

The gap between the two is the interesting part. A cohort where almost everyone stayed but almost nobody talked is a server people join and forget, which no amount of moderation fixes.

Both readings are drawn as a grid: one block for who stayed, one for who talked, with the colour of a cell carrying the same number that is printed inside it.

A marker that has not elapsed yet reads not yet rather than zero, so this week's cohort cannot drag the 30 day column down and make a healthy server look like it is collapsing.

Left within a day

The share of joiners who left within 24 hours. It is the cheapest early warning you have: a spike means either a raid, in which case it lines up with your moderation history, or an onboarding problem, in which case it does not.

Going quiet

Members who are still in the server, used to post, and have said nothing for two weeks, ordered by how much they used to contribute. These are the people worth a mention before they leave, because they already decided the server was worth joining once.

Each row shows the name the member last posted under, with their id underneath. Members the bot has not seen post since this was recorded show the id alone.

Members who never posted are deliberately left out. They are a different problem, and mixing them in would bury the ones you can still reach.

How to read it

Your Discord server is not a message counter walks through what each cohort shape means, why the 24 hour leave rate is the one number worth watching daily, and what to do about each pattern.

Things worth knowing

  • Counting starts when the feature is switched on. History is not backfilled, because Discord does not hand out the message history to build it from.
  • The join date comes from Discord rather than from the first time Fenrai saw the member, so cohorts stay honest for a server that installed the bot late.
  • Days are counted in UTC, which is the only clock every instance of the bot agrees on.
  • A member who leaves and rejoins keeps their original cohort.