Overview
Analytics Dashboard

Server analytics that update in near real time

The Analytics dashboard surfaces every signal your server produces — joins, leaves, messages, voice minutes, reactions, threads — and rolls them up into clean panels you can act on. Open it, set what you want tracked, and the live tiles, audit log and channel breakdown stay in sync as activity happens.

Path
DashboardServerAnalytics
Module
Analytics
Required permission
analytics.view

Before you open the page

Analytics is a paid module. The page renders an empty state until both conditions below are true — a quick check now saves you a confused refresh later.

  • Analytics module is enabled in Server Settings (or your guild is on Custom-Host).
  • Tracking is turned on — the page exposes its own enable toggle separately from the module switch.
  • You hold the analytics.view capability (default: every member).
  • Members have generated activity in the last 24 hours, otherwise the live tiles read 0.
Two switches, not one
The module toggle (in Server Settings) gates the whole page; the in-page tracking toggle controls whether SYNTHET writes new events. If the module is on but tracking is off you will see the page but the live counters stop advancing. Both must be on to capture data.

The tab strip at a glance

Every panel on the Analytics page lives behind one of six tabs. The page header shows a PRO chip — analytics is part of the Pro tier and the chip links to billing if your server is still on Free.

Overview
Activity
Growth
Channels
Audit
Settings
Overview
Live KPI tiles for the last 24 hours plus an at-a-glance health summary.
Activity
Hour-by-hour message and voice activity with sparkline trends.
Growth
Joins, leaves and net member change over the selected window.
Channels
Per-channel breakdown of messages, voice and engagement.
Audit
Every change made to analytics settings, with actor and timestamp.
Settings
Tune what is tracked, where panels post, retention and engine timing.
Numbers update in seconds, not minutes
The dashboard reads from the same in-memory store the bot uses, so most tiles refresh within a few seconds. Long charts (Growth, Channels) are coalesced — see publishCoalesceSec on the Settings tab if you want to slow that down.

Overview tab — the daily check-in panel

When you open Analytics this is the first tab. Use it to spot anomalies: a sudden drop in active users, a join spike, an empty voice room when the community usually has dozens.

Stat tiles, top of page

  • Members — current member count, with the 24h delta beside it.
  • Messages (24h) — every human message logged in the last day. Bot messages are excluded by default.
  • Active users (24h) — distinct members who sent or reacted in the last 24 hours.
  • Voice minutes (24h) — total minutes spent in voice channels.
  • Joins / Leaves / Net — three small tiles that sum to your day-over-day membership change.
  • Voice now — live count of users currently in voice.
  • Reactions (24h) and Threads (24h) — secondary engagement signals.
Bots and webhooks are filtered by default
The Settings tab has includeBots and includeWebhooks toggles. Most servers keep them off so a chatty bot does not skew the message tile. Turn them on if you specifically want to measure automated traffic.

Activity tab — what happened today, hour by hour

Activity charts the same window as Overview but breaks it into 24 hourly buckets. Use it to find peak engagement windows for events, polls or announcements.

Charts on this tab

  • Messages-per-hour bar chart for the last 24 hours.
  • Voice-minutes-per-hour line, layered on the same axis when both are non-zero.
  • Active-users-per-hour line for spotting the windows where the most distinct people are around.
  • Hover any bar or point to see the exact count for that hour.

Common task: find the best time to post an announcement

1

Open the Activity tab

Look at the message bars across the day.

2

Identify your top 2-3 hours

Cross-reference with the active-users line — high messages with low active users is one chatty crowd, not broad reach.

3

Schedule with Automations

Take that hour and use it as the cron in an Automation rule (Trigger: Scheduled — Cron) to post your announcement when most members are around.

See /docs/automations/dashboard-guide for the cron builder.

Growth tab — joins, leaves and net change

Growth is the long-window view: 7-day, 30-day, 90-day, and full-history series. Use it for monthly retros and to validate marketing pushes.

What you get

  • Stacked bar chart with green joins above the line and red leaves below.
  • Net-change line drawn on top — the visual that matters for retention conversations.
  • Window picker (7d / 30d / 90d / All time) at the top of the tab.
  • A small leaderboard listing the top inviters when invite tracking is available.
Long windows depend on retention
The Settings tab has a retentionTier (BASIC / STANDARD / PRO). On BASIC you will not see anything older than 7 days; STANDARD keeps 30 days; PRO keeps 90 days plus monthly rollups. Pick the tier before you need the data — SYNTHET cannot resurface events that were never stored.

Channels tab — per-channel performance

Channels lists every text and voice channel with a small panel of metrics, sorted by activity. It is the fastest way to spot which channels are dead and which are doing all the work.

Metrics shown per channel

  • Messages in window (default 24 hours, switchable to 7d).
  • Distinct authors in window — engagement breadth, not just volume.
  • Reactions in window.
  • For voice channels: total minutes and distinct members.
  • A trend sparkline so you can see whether the channel is climbing or sliding.
Sort then act
Click any column header to re-sort. Channels at the bottom of the messages-by-author list are usually candidates for archiving, merging, or being repurposed. Use the data to defend the change in your moderator chat.

Audit tab — who changed what

The Audit tab is a paginated table of every settings change made on this page, plus tracking enable/disable events. Useful when one of your team toggled something and broke the panel.

Columns

  • When — timestamp in your guild timezone.
  • Actor — Discord user who made the change.
  • Action — settings_updated, tracking_enabled, tracking_disabled, retention_changed.
  • Before / After — diff of the changed field.
  • Source — dashboard or API call.

Settings tab — the four control groups

All knobs live here. Changes save instantly and propagate to the bot through Redis, so a tweak shows up on the Overview tab within seconds.

Display Mode

displayModeDropdown

PANEL keeps Analytics on the dashboard only. RENAME also pushes a daily summary into a Discord channel by editing a pinned message.

Example: PANEL

panelChannelChannel picker

When displayMode is RENAME, this is where the live panel message lives. Required for RENAME mode.

Privacy & coverage

trackUserActivityToggle

Master switch for collecting per-user activity. Off means you still get aggregate counts but no per-member breakdowns.

Example: On

includeBotsToggle

Whether bot messages are counted toward Messages 24h.

Example: Off

includeWebhooksToggle

Whether webhook posts are counted (RSS feeds, GitHub bots, etc.).

Example: Off

includeThreadsToggle

Whether messages inside threads count toward channel and overall totals.

Example: On

Retention tier

BASIC
7 days of detailed events. Free for any server with the module enabled.
STANDARD
30 days plus daily rollups. Recommended for most communities.
PRO
90 days plus monthly rollups. Required for year-over-year comparisons.

Engine tuning — only touch if you know why

SettingTypeDefaultDescription
flushIntervalSecenum30How often the in-memory buffer is written to the database. 15 = freshest, 120 = lowest write load.
publishCoalesceSecenum60How long to batch dashboard updates before broadcasting. 30 = real time, 300 = once every 5 min.
logChannelchannelOptional. Posts engine warnings (buffer overflow, retention prune) to this channel.
Lower flushIntervalSec costs more — but only a little
Going from 60s to 15s roughly quadruples write volume; for most servers this is well within the free tier of the underlying database. Do not lower it for a server with under 10,000 messages a day — you will not see a difference.

Common tasks

The three flows you will run within your first week of using the page.

1

Turn the page on for the first time

Two switches, in this order.

Start at Server SettingsModules.

  • Enable the Analytics module — the toggle persists immediately.
  • Reload Dashboard → Analytics. The page now renders an empty state with an "Enable tracking" button.
  • Click Enable tracking. From this moment SYNTHET writes new events; existing chat history is not retroactively counted.
  • Visit the Settings tab and set retentionTier to STANDARD if you can — it is a one-line change you will be glad you made later.
2

Move the panel into a Discord channel

If you want a glanceable summary visible to everyone without opening the dashboard.

  • Open Settings tab.
  • Switch displayMode to RENAME.
  • Pick a panelChannel — a private moderator channel is a sensible default.
  • Save. Within a minute SYNTHET posts a panel message and starts editing it on each publish cycle.
  • To kill it, switch displayMode back to PANEL — the existing message stays put but stops updating.
3

Diagnose a tile that reads 0

The most common confusion.

  • Confirm the module is on (Server Settings → Modules).
  • Confirm tracking is on (Settings tab top of page).
  • Confirm there has been activity in the window — Activity tab will be flat if it is genuinely a quiet hour.
  • Confirm includeBots / includeWebhooks if you only have automated traffic.
  • Check the Audit tab for a recent settings_updated row that may have changed coverage.

Troubleshooting

Specific symptoms and what to check first.

Tiles all show "—" instead of numbers
The dashboard could not reach the analytics service. Refresh once; if it persists, check Server Settings → Modules and verify the Analytics module is still on. A disabled module returns an empty payload that the page renders as em dashes.
Active users way lower than messages
One member is spamming. Sort the Channels tab by messages, then drill into the loudest channel. If a single user authored 80% of the volume you have your answer. Consider a slowmode or an Automod rule.
Growth tab only shows 7 days but you opened the 90d window
retentionTier is BASIC. Bump it to STANDARD or PRO on the Settings tab — events older than the previous tier will not be reconstructed, only future events benefit.
Voice minutes look wrong
Voice tracking only counts time when a user is undeafened and unmuted by default. AFK channels are excluded. If your server has a music-only voice room with everyone muted, those minutes are deliberately not counted.