Weekly or monthly "best new user" badge

We know that healthy communities are always growing, through an influx of new users. Without a steady stream of new users, a community can only hope for, at best, stagnation. Discourse can’t magically deliver new users to your site. However, it should help you reward and appreciate the great new users that do arrive on your site!

For the 1.8 #releases we’re building in a way to automatically reward your best new users.

Sort of a “rookie of the month” kind of badge that says …

  • hey thanks for showing up!
  • we really appreciate what you’re contributing
  • in fact, you’re one of the best new users this month and you get a special badge and letter to permanently commemerate

I think this badge has to be based on posting, because as much as I believe reading is fundamental, new arrivals who spend a lot of time reading aren’t moving the needle in quite the same way that new arrivals who post do.

My initial brainstorming leads me to this criteria for the badge:

  • of the user accounts created in the last (x) weeks …
  • take the top (y) users by post likes
  • consider ratio of total new user posts in the interval to likes, so we aren’t necessarily rewarding one post with 50+ likes
  • for the interval, award two users the badge and send out a congratulatory email (we provide the default copy)
  • we might want to ignore other new user votes to favor only votes by established users?

Note that the badge must be marked with the interval, so we know when it was awarded; it’s more meaningful that way:

Rookie of the month, November 1962


I personally do not have a problem with it. Plus it would make it extremely hard for new users to earn said badge if existing contributing users are thrown in the mix. As they are likely a big source of the contributions to the site and therefore there would be several new members who would likely not get awarded for a long time and thus have zero motivation to stay.

How so? did you read this closely?

Sorry, let me rephrase. I meant, I’m okay with current members not being able to earn said badge, because, if they could, they would be competing against the new users. The existing users are likely already contributing a lot to the site, which would make it harder for new users to stand out (potentially?).

I just imagine those who have been contributing for a while, would likely be posting better content than most new users.

I personally like it targetting new users only (that is all I was really trying to accomplish with that prior post). It offers a quick motivation to new users who “jump in with both feet”


Well yes, there are tons of badges for existing users. The whole point is to focus on the pool of new users and see who’s doing well and really congratulate them in a special, unique way. You know “welcome to the neighborhood” and so on.

It’s not inconceivable that you could do something similar for all users…

… but I honestly feel that kind of effort is best spent rewarding your new users because they are so absolutely critical to the long term survival of a community.


Yeah, I’m with that 100%. As a crazy idea and maybe to help @jomaxro side of things. The initial badge could be bronze for new users, silver for users that have been around for a year, and gold for 2+ years? (and maybe take into account other metrics too, not just likes, maybe number of replies)


I like that… maybe not any “established user”, maybe some groups, such “bug reporter” that’s needs a vote for discourse member group?

1 Like

I was thinking more in terms of fraud and bad actors. But established user likes are more significant, so removing new user likes also helps there.


It’d be good to take other measures – from the official plugins – into consideration, too. For example, a new user whose suggestions get a lot of votes (from established users?) or who has been answering questions (and had those answers accepted).

I do also like @cpradio’s idea of having this apply to established users as well by segmenting it into various groups; perhaps something along these lines:

  • Most valuable new member (bronze): account created within the past three months. Awarded monthly.
  • Most valuable established member (silver): account created between three and 12 months ago. Perhaps awarded quarterly?
  • Most valuable veteran (gold): account created greater than 12 months ago. Perhaps awarded quarterly?

There is, I think, value in having these sort of recurring, aspirational but limited badges. Discourse has some great recurrent badges already (like “Nice share”, “Nice reply”, “Nice topic”, and so on), but adding a little bit of competition into the mix could really help drive people to engage positively with the community.


Okay, I’ve just committed what I think is a good first stab at this:

  • The job runs once a month

  • It finds any users created in that period, and comes up with a score based on how many likes they’ve received out of how many times they’ve posted.

  • Likes from older accounts are weighed more than likes from new accounts, to prevent abuse via creating new accounts to get the badge.

  • A like from an account < 1 week old = 0.1

  • A like from an account < 1 month old = 0.5

  • A like from an account > 1 month = 1.0

  • Two users are selected, and they receive a PM from the system congratulating them on the badge.

The sticky bit is this:

This could be really complicated. We’re either talking about creating a new badge every month (which is much more complicated for system badges, not to mention clutters up the database), or perhaps just changing the display of the text.

For now, the PM the user receives says

Congratulations, you’ve been awarded the Rookie of the Month award for %{month_year}.

So it’s quite clear to the user who received it what month they received it for. Other users can also figure it out pretty easily from the badges page:

Now, I could add a flag to the badge type that would make it show the month/year the badge was awarded on that page. Instead of 22h it could say “Granted Mar, 2017” if the flag is set. Would that work?


This is probably ok. We need some copy changes including the badge title though. I don’t think “rookie” is going to be easy to translate and I didn’t mean it literally as the title of the badge.

1 Like

Ah oops. Let me know what you want it to be – I’ll be changing a bunch of places in Ruby code too to reflect it.

1 Like

I suggest “New User of the Month” as that is simple to translate.

1 Like

I like where this is going, but I question if time is the best measurement here. If the only goal is to prevent abuse, then time is great. If the goal is to give long-time users more influence, could further multipliers be added for high TL and/or staff? A user’s vote would be worth the highest possible modifier - so a 1-day old staff account would be worth 2.0 points (not 2.1 or 0.1).

  • Perhaps:
  • A like from a TL3 account = 1.25
  • A like from a TL4 account = 1.5
  • A like from a staff account = 2.0

One new requirement we are adding based on our initial testing:

  • New user must have at least 2 posts
  • New user must have posted in at least 2 topics

If no users meet this criteria, then no badge will be awarded for the monthly period.

I also agree with @jomaxro it is better to tie the multipliers to trust level than age of account @eviltrout.


To be clear I was suggesting both…but my idea could be expanded to solely use Trust Levels.

Okay great feedback guys. I’ve pushed a few updates:

  • It’s now called “New User of the Month”
  • It requires 2 posts in 2 different topics
  • The score is calculated based on the trust level of the person who liked it, not their account age. You can see the table I came up with here.

Just to check that I’m reading that correctly - that doesn’t account for staff, right? So if a user is staff but never bothered to change their trust level they’re vote will not account for being staff?


Probably a good idea to consider staff explicitly there @eviltrout, as staff likes are definitely important.


Our first two “Users of the Month” got automatically awarded today. Brilliant feature, and nicely implemented.

One very minor point. There’s a copy issue: misspelt “permamently” in the email that goes out. The issue is in:


No big deal and was easily fixed on our instance.

Thanks for implementing another really neat feature of Discourse :thumbsup: