This is a reference guide for describing how the statistics on the
/about
page are calculated, and where to find the Ruby code for each statistic.Required user level: All users
About Page Statistics
All Discourse sites have a built in /about
page (for example, here is the about page for Meta) that contains a list of admins and moderators for the site along with a few statistics about the site itself.
These statistics include all users, including admin and moderator accounts. Some statistics will also include include anonymous accounts (if enabled on the site).
If the share anonymized statistics
site setting is enabled (by default this setting is enabled) the โSite Statisticsโ on the /about
page will be exposed as a json file that can be retrieve at /about.json
.
If a site is public, the /about
page along with these statistics will be available publicly as well.
The Ruby Code for all of these statistics is located in: discourse/app/models/about.rb.
Below is a description of how each of these statistics are calculated.
Topics
The number of topics that were created within the indicated timeframe. This statistic does not include unlisted topics or personal messages.
topic_count: Topic.listable_topics.count,
topics_last_day: Topic.listable_topics.where('created_at > ?', 1.days.ago).count,
topics_7_days: Topic.listable_topics.where('created_at > ?', 7.days.ago).count,
topics_30_days: Topic.listable_topics.where('created_at > ?', 30.days.ago).count,
Posts
The number of posts that were created within the indicated timeframe. Personal messages are included here and counted as regular posts.
post_count: Post.count,
posts_last_day: Post.where('created_at > ?', 1.days.ago).count,
posts_7_days: Post.where('created_at > ?', 7.days.ago).count,
posts_30_days: Post.where('created_at > ?', 30.days.ago).count,
Sign-Ups
The number of users who have signed up for new accounts within the indicated timeframe.
user_count: User.real.count,
users_last_day: User.real.where('created_at > ?', 1.days.ago).count,
users_7_days: User.real.where('created_at > ?', 7.days.ago).count,
users_30_days: User.real.where('created_at > ?', 30.days.ago).count,
A
real
user is defined here: discourse/app/models/user.rb
Active Users
The number of users who have visited the site within the indicated timeframe. Includes anonymous mode users, but does not include users without an account.
active_users_last_day: User.where('last_seen_at > ?', 1.days.ago).count,
active_users_7_days: User.where('last_seen_at > ?', 7.days.ago).count,
active_users_30_days: User.where('last_seen_at > ?', 30.days.ago).count,
Likes
The total number of likes all topics and posts have received within the indicated timeframe.
like_count: UserAction.where(action_type: UserAction::LIKE).count,
likes_last_day: UserAction.where(action_type: UserAction::LIKE).where("created_at > ?", 1.days.ago).count,
likes_7_days: UserAction.where(action_type: UserAction::LIKE).where("created_at > ?", 7.days.ago).count,
likes_30_days: UserAction.where(action_type: UserAction::LIKE).where("created_at > ?", 30.days.ago).count
Chat Messages
The number of chat messages sent across all chat channels.
This is a recently added statistic and details about this addition can be found here.
Last edited by @JammyDodger 2024-08-29T09:46:04Z
Last checked by @hugh 2024-07-23T11:32:47Z
Check document
Perform check on document: