Are they really "monthly users" or "users, monthly"?
I hear the term "monthly users" (or the other alternatively aggregated versions of it) quite a lot in my office, and it's a staple of analytics-for-beginners blogs.
Analysts seem fairly consistent in defining it simply as the count of users that were "active" in the previous 30 days.
But when those labels are used around the office, statements like... " we have X thousands of monthly users," quickly morphs into... "X thousands of users are returning on a monthly basis" -- Which is not at all the same.
What they often really want to know is, of active users, which ones are returning monthly vs weekly vs daily.
One idea I've received is to maintain buckets of users that were active in, "each of the last 3 distinct 30 day periods (or 7 day for weekly, etc)." As soon as they miss showing up for any subsequent 30 day period, they fall out of the bucket.
Showing up 3 times in any single period doesn't count. You need at least one hit in each 30 day chunk over the previous 90 days.
The size of that bucket is your monthly user count at that point. It's strict, in that it's easy to fall out of the classification, but it feels like it would be directionally correct.
Anyone else had this issue come up? Do you differentiate? What do you call the other metric? And how do you calculate it?
Personally, I fight against months wherever I see them. They're unevenly sized, seasonally variant, rarely useful from a business cycle perspective. I get it, it's the way the world works, and our business has monthly subscription plans. Still, I find months are rarely representative of people's activity in the real world.
Okay now that's out of the way. Your idea of 3 distinct 30 day windows is great, but if you accept the above caveats around unequal sizing, doing the trailing 3 months is probably just as useful. The obvious simplest form of which is this:
select [date:month], count(distinct user_id) from activity_table group by 1
That's hard to beat for simplicity and reproducibility.
Personally, I find these user activity across periods metrics to be more trailing indicators than predictors. I'd focus more on cohort retention: Of the people who signed up last month, how many stuck around to this month? Or, of the people who are 12 months old, how many made it to 13 months? I work in a subscription business, so these are really powerful decision making metrics, as opposed to "active counts". I'm not sure if they hold the same power outside of that context, but my hunch is they do.Reply
Monthly users is definitely one of those metrics that you have to have but has some odd properties. It's highly use case dependent. Theoretically, this community has a minimum required number of users for sustainability, but what that number is depends on the type of users we have.
If I were to use Matt's method, I would be looking at highly engaged, returning users, and might need (to pick a random number) 50 users to launch a nice community. If we look and a more typical MAU number, it might take 300.
You definitely want Matt's type of user though!
Sometimes analytics is as much about asking the right question as finding the right answer — you have to make sure the metric is appropriate to the question!
I completely understand the problem with calendar months and their wonky sizes. That's why I typically like using 30 day blocks whenever I talk about monthly stats. They are consistently sized (though you can get "ripples" if your weekly usage isn't evenly distributed), and it can be constantly rolling each day. I don't start with 0 MAUs on the 1st of the month.
To Sean's point, the right question is certainly key, and making sure everyone knows which question that specific number is attempting to answer.
You have to be careful you don't find out that someone's using numbers you pulled in the wrong contexts, just because the label, "Monthly Active Users", sounds like what they were looking for.Reply
I hate unequal sizing, no caveats allowed in my analysis! My typical go-to is to calculate the metric at my most desired basic unit (such as daily new users) and applying a window function. Want average (or sum or [insert_window_function_here]) daily new users trailing 7 days:
with daily as ( select [created_at:date] as date , count(1) as dnu from users group by 1 ) select date , avg(dnu) over(order by date rows between 6 preceding and current row) from daily
Alternatively, just plot the daily new users and click the Periscope easy button with a line chart and get results.
select [created_at:date] as date , count(1) as dnu from users group by 1Reply