Daily usage streak and badges (for building a habit)

Hi Everyone,

When I roll out Discourse to my clients, a key point I always emphasize is the importance that (a) people across the organization use it (not just “community managers”, and (b) they use it on a daily basis.

For the latter, I explain habit theory and the notion that if we commit to something for around 66 days it becomes a habit. As such, I ask people to commit time in their calendars (if only 15 - 30mins a day) to visit the forum, respond to topics, and post new topics.

As such, this daily use is (I believe) key in making Discourse communities “stick”. One idea I wanted to propose here is that there is a way in which users can see their daily usage streak in the same way other services work such as fitness and mindfulness apps.

A few ideas how this could work:

  • At a simple level, this could be delivered via badges (e.g. badges for 5, 10, 15, 30, 60, 100, 150, 300, 365 days).
  • Ideally, on top of this, users can see their own run streak and admins can sort users by a run streak (important for people who run Discourse rollouts to see which people are participating and which are not).

Sadly, I don’t have time to build this myself (you also don’t want my terrible code), but is anyone else interested in something such as this, and maybe want to build it?


Hey, that’s a pretty cool idea. You know there are already badges for this sort of thing, right?

Look in “getting started” and “afficionado” (visited on 100 consecutive days) here: Discourse Meta

Based on the code for afficionado, you can always add more badges for the intervals you describe.

One downside to this is that badges for each interval don’t go away, so with your concept you’d end up with just way too many badges. They are not superceded by higher level badges. That would be an interesting new feature to add… e.g. “when this badge is awarded, take away these other badges”.


I see two badges for this. I think it would be useful to have some additional badges leading up to the 66 day target, but great to see this is doable via badges.

I don’t think would be all that big of a deal - I think seeing the previous streak badges would be helpful if you fall off the wagon and restart the streak.

The thing I would love to see is the current streak level in the person’s profile, and a list of people and their current streak levels (almost like a leaderboard). This would be helpful as I track which users are staying in line with the request to visit daily and which are not.

1 Like

You could also consider to exclude weekends if this is a professional community.


You could do most of this with custom badges, though the feature is turned off by default.

1 Like


I think the key element here why I would like to see this feature is so users can see a personal run streak for daily participation. This could not just be for visiting the forum, but also read time with each visit, or even if they post/reply with each visit. I think building this habit is the make or break for a lot of Discourse rollouts.

1 Like

We’ve got good feedback about using a type of sparkline for this:
(or more likely a bit more sparse, like mine:)


This looks interesting. How do I get this? Is this something baked into core or a plugin?

Sorry, should’ve been more clear. This isn’t in Discourse, just wanted to share a design of something similar that we’ve built in a community analytics package.