Discord Server Analytics: Peak Hours and Automatic Reports
Which analytics cards appear on the dashboard, how to read the peak hours heatmap, which period do daily, weekly, and monthly reports cover and when do they arrive? Step-by-step setup with UTC day resets and common mistakes.
This article was translated automatically from the Turkish original. Read the Turkish original

In this article
- Data, time zone, and report channel
- What appears on the dashboard?
- Step 1: Open the tab and select the period
- Reading peak hours correctly
- Step 2: Set up automatic reports
- What do reports send and when?
- If reports aren't sending or numbers don't match
- Does it show per-member statistics?
- Frequently asked questions
In short
VeyroBot tracks message, command, join, leave, and voice activity in your server every day. The dashboard's Server Analytics tab displays these logs as daily charts, a peak hours heatmap, most active channels, and retention rates. If you wish, a summary of this data can be sent automatically to a selected channel on a daily, weekly, or monthly basis.
Analytics is not the same thing as a live stats channel. A stats channel displays real-time member or boost counts directly in the channel name; analytics measures historical data. If you want a counter in the channel name, check out the live stats channel guide.
Data, time zone, and report channel
- Data is collected automatically. You don't need to enable a setting to view the charts. Days without logs are plotted as 0; VeyroBot does not fill missing days with estimates.
- Select your server time zone. Peak hours are drawn based on the Server Settings → Server Time Zone field. If none is selected, Europe/Istanbul is used.
- The bot must be able to send messages to the report channel. The report is delivered as an embed. The bot needs permissions to View Channel, Send Messages, and Embed Links in that channel.
- The module must be enabled for reports. If the Module status toggle at the top of the tab is disabled, reports will not be sent. Charts are unaffected by this toggle.
- You need permission for the command.
/setanalyticslogrequires the Manage Server permission.
This topic in VeyroBot:Discord Server Analytics →
What appears on the dashboard?
| Daily Message & Command Volume | Messages sent by members and slash commands used, day by day. Bot messages are excluded. |
| Joined & Left Member Distribution | Accounts that joined and left each day. Bots added to the server are also included in this count. |
| Peak Hours | A heatmap of messages by day of the week and hour. The peak day and hour, along with message count, are written below it. |
| Most Active Channels | The top 10 channels with the most messages in the selected period and their share of the total. Thread and forum posts are counted towards the parent channel. |
| Daily Voice Minutes | Total minutes spent by members in voice channels. Excludes AFK channel and bots. |
| Member Breakdown | End-of-day total, human, and bot counts. The human/bot breakdown is plotted only when the member list can be fully read; otherwise, only the total is shown. |
| Retention | The percentage of joined human members who remain in the server after 1, 7, and 30 days. |
If there is no data, fake numbers are not shown. The heatmap and channel list remain empty, replaced by a note stating that there are no records. Peak hours, channel, and voice data have been collected since September 17, 2026. If the heatmap, channel, voice, member breakdown, and retention cards are not included in your server's plan, a note indicating this will appear on the tab.
Step 1: Open the tab and select the period
Open the Dashboard → your server → Server Analytics tab. The tab either shows a fixed view of the last 7 days or allows you to select a period using the 7d, 30d, and 90d buttons; when opened with the selector, the default is 30 days. Under the same conditions, a Monthly Summary chart comparing up to the last 12 calendar months also appears at the bottom of the tab. Which one you see depends on your server's plan; current details are on the Premium page.
The selected period also changes the heatmap, channel list, and voice chart. Historical records are not deleted; the period only determines how many days are displayed on screen.
Reading peak hours correctly
The rows of the map represent days from Monday to Sunday, and the columns represent hours from 0 to 23. A darker cell indicates that more messages were sent during that hour.
The map is drawn using your server time zone, whereas daily charts count according to the UTC calendar day. Example: A message sent at 01:30 Tuesday Turkey time falls into the Tuesday 01:00 cell on the map. In the daily chart, however, it is included in Monday's count because at that moment in UTC it is still Monday 22:30. This difference is not an error.
Make decisions based on the map: send announcements shortly before peak activity begins, and schedule events during the two or three darkest hours.
Step 2: Set up automatic reports
In the Analytics Report Notifications card at the bottom of the same tab:
- Select the Report Channel.
- Enable your desired toggles among Daily, Weekly, and Monthly. All of them go to the same channel.
- Select the Delivery Time (00:00–23:00) and Time Zone. The first option in the list uses the time zone from Server Settings.
- Click Save Report Settings.
Quick setup via command: /setanalyticslog channel:#analitik-rapor sets the report channel and enables the weekly report. Daily and monthly reports, as well as delivery time, can only be selected from the dashboard. If you run the command without specifying a channel, all three reports are disabled.
What do reports send and when?
| Daily | Yesterday's (UTC) message, command, joined, left, and net member changes. |
| Weekly | Last Monday–Sunday (UTC). Additionally, the most active day and the average message count for days with activity logs. |
| Monthly | Last calendar month (UTC). The two additional fields from the weekly report are also present here. |
Next to the message, command, and net change fields, a percentage change (▲ or ▼) compared to the previous period of the same length is displayed. If the value in the previous period was zero, no percentage is shown. For a period with no logs at all, the report explicitly notes that no activity was recorded. The bottom line of the report lists the period's dates in UTC.
Scheduling works as follows: the report engine checks every five minutes. During the first check after your local time reaches the delivery hour, the report for the concluded period is sent. Each period is delivered once. If the bot is offline at that time, the report is sent upon startup. If delivery fails, the period is not marked as sent and will be retried on the next check.
If reports aren't sending or numbers don't match
- Mistaking delivery time for the reporting period. Selecting 09:00 as the delivery time does not alter the period; "yesterday" always covers the UTC day. Because of this, numbers in the report and days on the heatmap may not match exactly.
- Forgetting embed permissions. If the bot cannot write to the report channel, no error message appears in the channel; the report is not sent and will be retried on every check. Verify channel permissions after saving.
- Leaving the module status disabled. Card settings will appear saved, but no reports will be sent.
- Expecting channels the bot cannot see. VeyroBot only counts messages in channels it can view. A channel inaccessible to the bot will not appear in charts or channel lists.
- Deciding based on a single week. A single week's peak hours could be coincidental. Compare several weeks before choosing optimal times.
Does it show per-member statistics?
Suitable for: servers that want to choose announcement and event times based on data, track growth weekly, or send regular summaries to their staff team. How to convert what you measure into growth is explained in the server growth guide.
Not suitable for: servers looking for per-member details (who sent how many messages). Analytics counts at the server and channel level; to rank members by activity, the leveling system is more appropriate.
Frequently asked questions
What is the difference between analytics and a live stats channel?
A stats channel displays a count directly in a channel's name. Analytics stores message, join, and voice activity day by day, generating charts and reports. Both can be used together.
Are bots included in the numbers?
Bot messages are not counted in message volume, and bots are excluded from voice minutes. Joined and left counts do include bots added to the server. Retention rates are calculated using human members only.
Is old data deleted?
No. Daily logs are stored indefinitely. The 7-, 30-, or 90-day windows on the dashboard are display limits only.
Why does retention say "Time frame not elapsed"?
For a rate to be calculated, that many days must have elapsed since members joined. For example, the 7-day rate cannot be calculated without members who joined at least 7 days ago; premature estimations are not displayed.
In which language is the report sent?
Reports are sent in whatever language is set for Bot Language in Server Settings.
For a general overview of the feature, visit the Discord server analytics page; for all settings, check the server analytics documentation; and for command details, see the setanalyticslog card.
Last updated: September 26, 2026. Cards, view windows, UTC day resets, and report scheduling in this article have been verified against the analytics counters, dashboard endpoints, and report engine of the current VeyroBot version.