How to measure active users?

How does everyone measure active/super active users? ie people who have logged in or commented in the past month, for example.

The dashboard tells me the number of visits and comments etc, but I don’t know how to chunk this down easily into actual users. We’ve got 1400 members on our community, but I’d like to know how many of those are engaging with it month on month.

Thanks,
Sian

The data explorer plugin will let you look at the data in a more granular fashion than the basic information which admin>dashboard shows.

See, for example, Active users in the last 30 days

2 Likes

Oo sounds interesting, how do I go about setting that up? I’m not a developer so have no idea where to begin.

See “Installation” at the bottom of: Data Explorer Plugin

3 Likes

These queries will help:

Top 50 posters

Returns the top 50 posters for a given monthly period. Results are ordered by post_count. It accepts a ‘months_ago’ parameter, defaults to 1 to give results for the most recently completed calendar month.

-- [params]
-- int :months_ago = 1

WITH query_period AS (
SELECT
date_trunc('month', CURRENT_DATE) - INTERVAL ':months_ago months' as period_start,
date_trunc('month', CURRENT_DATE) - INTERVAL ':months_ago months' + INTERVAL '1 month' - INTERVAL '1 second' as period_end
),

user_posts_in_period AS (
SELECT
p.user_id
FROM posts p
INNER JOIN query_period qp
ON p.created_at >= qp.period_start
AND p.created_at <= qp.period_end
WHERE p.user_id > 0
)

SELECT
up.user_id,
count(1) as post_count
FROM user_posts_in_period up
GROUP BY up.user_id
ORDER BY post_count DESC
LIMIT 50

Top 50 likers

Returns the top 50 likers for a given monthly period. Results are ordered by like_count. It accepts a ‘months_ago’ parameter, defaults to 1 to give results for the most recently completed calendar month.

-- [params]
-- int :months_ago = 1

WITH query_period AS (
SELECT
date_trunc('month', CURRENT_DATE) - INTERVAL ':months_ago months' as period_start,
date_trunc('month', CURRENT_DATE) - INTERVAL ':months_ago months' + INTERVAL '1 month' - INTERVAL '1 second' as period_end
)

SELECT
ua.user_id,
count(1) AS like_count
FROM user_actions ua
INNER JOIN query_period qp
ON ua.created_at >= qp.period_start
AND ua.created_at <= qp.period_end
WHERE ua.action_type = 1
GROUP BY ua.user_id
ORDER BY like_count DESC
LIMIT 50
12 Likes

you could also get in touch with @DiscourseMetrics.com and @Bas (about Community Analytics)

their tools can give you loads of extra stats so you don’t have to do the work … I’m looking at such tools at the moment myself

Up till now I’ve been doing this just in excel - you can export your user data and run a few queries to monitor this. I gave a value to each post read, to posts (replies) and to new threads, then categorised them accordingly

So far it shows 20% are ‘readers’, 25% are ‘participants’ and 15% are ‘creators’

I’ve found that most analysis tools are under-valuing the role of readers because of a focus just on the activity of posting. There is a big difference between inactive members and active readers!

Good luck!

6 Likes

I think you are correct in saying this.

There are ways (e.g. separating logged in/out users, measuring read time, collating paged threads etc.) to guide Google Analytics to do quite a bit of this for you; but it takes some proper GA-fu to accomplish.

Great queries Sarah! Thanks for share.
I updated the query list, if you have more to add, please just send PR :pray:

Thanks again !

2 Likes

I can’t take credit – @simon wrote them.

2 Likes

how to get the daily counts based on unique IPs ?
is the Dashboard> User Visits based on IPs, (including logged in users and vistors ?)
thanks…

I don’t think so. It is about logged in users.

You can also have a look at What is "user visits" on the admin dashboard?

I think this is similar to what you are looking for. Since you want all users and not only anonymous, you would have to remove the condition that the user is anonymous.

2 Likes