# Discourse Gamification

**URL:** https://meta.discourse.org/t/discourse-gamification/225916
**Category:** Plugin
**Tags:** official, gamification, included-in-core
**Created:** [May 2, 2022, 7:14pm UTC](https://meta.discourse.org/t/discourse-gamification/225916 "2022-05-02T19:14:25Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![Discourse](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/discourse/32/148734_2.png) [@Discourse](https://meta.discourse.org/u/Discourse)
#### Post date: [May 2, 2022, 7:14pm UTC](https://meta.discourse.org/t/discourse-gamification/225916/1 "2022-05-02T19:14:25Z")

</div>

| | | |
| --- | --- | --- |
| :discourse2: | **Summary** | **Discourse Gamification** adds customizable scoring (karma, kudos, points) and leaderboards to your instance. |
| :open_book: | **Install Guide** | **This plugin is bundled with Discourse core**. There is no need to install the plugin separately. |
| :test_tube: | **Demo** | [Leaderboard](https://meta.discourse.org/leaderboard/1) |

> [@](#):
>
> :discourse2: As this is an #official plugin maintained by the Discourse team, #Support, #Contribute > Bug, #Contribute > UX, and #Contribute > Feature requests can be made in the respective categories here on Meta, and tagged with the appropriate plugin tag. Click on a link below to get one started. :+1:
> 
> [:question:&nbsp; **Support**](https://meta.discourse.org/new-topic?category_id=6&body=%3E%20Before%20asking,%20did%20you%20search%20first%3F%20Press%20%F0%9F%94%8D%20at%20the%20upper%20right%20to%20search.&tags=gamification "Ask for support on configuring and using Discourse Gamification") [:bug:&nbsp; **Bug**](https://meta.discourse.org/new-topic?category_id=1&tags=gamification "A bug report means something is broken, preventing normal/typical use of the plugin") [:eyes:&nbsp; **UX**](https://meta.discourse.org/new-topic?category_id=9&tags=gamification "Discussion about the user interface of Discourse Gamification, and how features are presented (including language and UI elements)") [:bulb:&nbsp; **Feature**](https://meta.discourse.org/new-topic?category_id=2&tags=gamification "Discussion about how existing Discourse Gamification features can be improved or enhanced, and how proposed new features could work")

 ![image](https://global.discourse-cdn.com/meta/original/4X/6/a/0/6a0ba940d7912795e41787feb5ab6dc5e84fe3ea.png)

### Features

While Discourse ships, out of the box, with gamification features (badges, trust levels) some communities want to take it to another level. That’s where [GitHub - discourse/discourse-gamification · GitHub](https://github.com/discourse/discourse-gamification) comes in.

This plugin allows admins to easily create and tweak community scoring contests, where points are awarded by participating in the community.

Points are automatically updated every hour for events of the day, and we re-calculate scores from the last 10 days once a day.

#### Cheers

Users are awarded “cheers” by performing certain actions on the community. Each user cheer score appear on their user card, user profile and can be enabled on the user directory.

 ![user card example with cheers](https://global.discourse-cdn.com/meta/original/4X/a/7/b/a7bfe2f5d0061f38d44fae9e00211637e8e22c70.jpeg)

 ![user profile example with cheers](https://global.discourse-cdn.com/meta/original/4X/f/8/3/f83ee054e22bd8d04ed8bb596b7769903596dd6b.jpeg)

 ![user directory example with cheers](https://global.discourse-cdn.com/meta/original/4X/5/f/a/5fa5cbac6b82262791f2ba985037de243bb1af02.png)

Like the plugin but the name cheers isn’t the best for your community? You can rename it to anything using [Customize all text in Discourse](https://meta.discourse.org/t/customize-all-text-in-discourse/36092).

#### Leaderboards

 ![image](https://global.discourse-cdn.com/meta/original/4X/1/d/4/1d4db97176d4ae8cbe74a7c34084926bf37f1a79.png)

Admins can create multiple leaderboards, and each one can have a custom:

- start date
- end date
- Competing users
- Leaderboard privacy

By default, we ship with a default leaderboard at `/leaderboard` that will list all users from the first day where scores started to be awarded.

You can see a demo of it at [Discourse Meta](https://meta.discourse.org/leaderboard/1)

#### Scorables

Currently, the following events award cheers:

- Daily visits
- Flags accepted
- Likes given
- Likes received
- Posts created
- Posts read
- Solutions accepted (requires [Discourse Solved (Accepted answer plugin)](https://meta.discourse.org/t/discourse-solved-accepted-answer-plugin/30155))
- Time read
- Topics created
- User invites accepted

See [roadmap](https://meta.discourse.org/t/discourse-gamification/225916#roadmap-10) for upcoming scorables.

### Score backfill

You can run a backfill to calculate the historical scores through the UI using the ‘Recalculate Scores’ button on your `/admin/plugins/gamification` page:

 ![recalculate scores - button](https://global.discourse-cdn.com/meta/original/4X/c/9/4/c94346f279c73a6a7d73fb90c4a40afd5426dda3.png)

This can also be used to recalculate the leaderboard if you make any changes to your scorables or eligible scoring categories. You can generate a rescore up to 5 times a day, and can select a range of time frames (or set a custom one):

 ![select timeframe](https://global.discourse-cdn.com/meta/original/4X/5/d/0/5d0566c206e584d49d721c27d8aac5947e1666be.png) ![timefarne options](https://global.discourse-cdn.com/meta/original/4X/4/d/e/4de7a40d1cc88217654798a402a359a61adbd64b.png)

### Configuration

Global customizations are:

- each action score multiplier
- Restrict categories where points can be earned
- enable and disable the plugin

Those plugin-level settings live at `/admin/site_settings/category/plugins?filter=plugin%3Adiscourse-gamification`.

To create, delete and update leaderboards, admins can visit `/admin/plugins/gamification`.

### Use as widget

This can also be displayed as a widget in a smaller format, inside the [Right Sidebar Blocks theme component](https://meta.discourse.org/t/right-sidebar-blocks/231067). More info to be found there.

### Badges based on score

You can have automatic badges based on the gamification score using [Enable Badge SQL](https://meta.discourse.org/t/enable-badge-sql/47894)

Here is an example badge when a user has over 9000 cheers:

```sql
SELECT user_id, current_timestamp AS granted_at 
FROM gamification_scores
WHERE (:backfill OR user_id IN (:user_ids))
GROUP BY 1
HAVING SUM(score) > 9000

```

### Changelog

- 2022-05-02T03:00:00Z - Public Release
- 2022-05-10T05:00:00Z - Update roadmap with recent changes

### Roadmap

(roughly ordered)

- Make leaderboard respect `prioritize usernames in ux` being disabled

- Use higher resolutions avatars in leaderboard podium

- Add custom per-badge scoring

- Add per-reaction score awarding (requires [Discourse Reactions](https://meta.discourse.org/t/discourse-reactions-beyond-likes/183261))

- Add chat-events scoring (requires [Discourse Chat](https://meta.discourse.org/t/discourse-chat/230881))

- Add poll events scoring (created poll, voted in poll)

- Add media events scoring (posted image, posted video, posted onebox)

Implemented:

- ~~Fix i18n table title in custom score column on user directory~~
- ~~Ignore staged users~~
- ~~Ignore anonymized users (email match `@anonymized.invalid`)~~
- ~~Style leaderboard edit form~~
- ~~Leaderboard “you” link needs a larger offset to accommodate floating header..~~
- ~~Fix highlight of own user on the leaderboard not working if own user position is \> 100~~
- ~~Add i18n thousands separator to user card / profile cheer score~~
- ~~Add time period filters to leaderboards~~
- ~~Add default time period filter to leaderboard settings~~
- ~~Add `excluded_groups_ids` to leaderboard settings~~
- ~~Allow admins to award/remove arbitrary points to users to allow integration with out-of-Discourse scorable events~~
- ~~Make scores click link to leaderboard (both in user profile and user card)~~

> :discourse2: Hosted by us? This plugin is available on our Business and Enterprise plans [Gamification | Discourse - Civilized Discussion](https://discourse.org/plugins/gamification.html)

> Last edited by @tobiaseigen 2025-07-16T21:11:22Z
> 
> > **Check document**
> >
> > Perform check on document:

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [July 4, 2024, 11:34am UTC](https://meta.discourse.org/t/discourse-gamification/225916/392 "2024-07-04T11:34:37Z")

</div>

A post was split to a new topic: [Choose leaderboard linked in profile](https://meta.discourse.org/t/choose-leaderboard-linked-in-profile/314980)

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [July 4, 2024, 11:41am UTC](https://meta.discourse.org/t/discourse-gamification/225916/393 "2024-07-04T11:41:55Z")

</div>

A post was split to a new topic: [Subtract points based on certain reactions](https://meta.discourse.org/t/subtract-points-based-on-certain-reactions/314984)

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [July 4, 2024, 12:40pm UTC](https://meta.discourse.org/t/discourse-gamification/225916/394 "2024-07-04T12:40:37Z")

</div>

2 posts were split to a new topic: [Creating a Top 20 leaderboard for a specific date range](https://meta.discourse.org/t/creating-a-top-20-leaderboard-for-a-specific-date-range/314999)

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [July 4, 2024, 12:46pm UTC](https://meta.discourse.org/t/discourse-gamification/225916/395 "2024-07-04T12:46:18Z")

</div>

Just a note to say the gamification scoring for `posts_created` has been adjusted to account for a few extra things:

[https://github.com/discourse/discourse-gamification/pull/114](https://github.com/discourse/discourse-gamification/pull/114)

---

<div class="post-metadata">

### Author: ![geoffau](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/geoffau/32/440605_2.png) [@geoffau](https://meta.discourse.org/u/geoffau)
#### Post date: [August 14, 2024, 11:09pm UTC](https://meta.discourse.org/t/discourse-gamification/225916/396 "2024-08-14T23:09:14Z")

</div>

This is great. A feature suggestion is to allow different scorable settings for each board so every board could be used for a separate community-driven competition.

For example, a board for most posts this month would have the post created score value set to 1 while all others are 0. Where a best like of the month board would have like given score value set to 1 and all others set to 0.

---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [August 14, 2024, 11:18pm UTC](https://meta.discourse.org/t/discourse-gamification/225916/397 "2024-08-14T23:18:45Z")

</div>

> [@geoffau](#):
>
> Where a best like of the month board would have like given score value set to 1 and all others set to 0

Like this [/u?order=likes\_given&period=monthly](https://meta.discourse.org/u?order=likes_given&period=monthly)?

---

<div class="post-metadata">

### Author: ![geoffau](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/geoffau/32/440605_2.png) [@geoffau](https://meta.discourse.org/u/geoffau)
#### Post date: [August 14, 2024, 11:29pm UTC](https://meta.discourse.org/t/discourse-gamification/225916/398 "2024-08-14T23:29:46Z")

</div>

Yes, that is a similar idea but as part of the Gamification board, not the default user listing layout.

The discourse user list (/u) can be displayed in different ways, such as the user card directory theme component which is good for the global site user list but does not look as good for a user ranking page. So the suggestion to have each gamification board use a separate setting is valid and makes more sense than using the discourse user list in this situation.

---

<div class="post-metadata">

### Author: ![Lilly](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lilly/32/575047_2.png) [@Lilly](https://meta.discourse.org/u/Lilly)
#### Post date: [September 24, 2024, 9:47pm UTC](https://meta.discourse.org/t/discourse-gamification/225916/399 "2024-09-24T21:47:58Z")

</div>

A post was split to a new topic: [Gamefication scoring for portugese forum?](https://meta.discourse.org/t/gamefication-scoring-for-portugese-forum/327994)

---

<div class="post-metadata">

### Author: ![JonahAragon1](https://avatars.discourse-cdn.com/v4/letter/j/f19dbf/32.png) [@JonahAragon1](https://meta.discourse.org/u/JonahAragon1)
#### Post date: [November 2, 2024, 8:37pm UTC](https://meta.discourse.org/t/discourse-gamification/225916/400 "2024-11-02T20:37:15Z")

</div>

How do I remove this leaderboard link from my sidebar? It seems to be automatically added, since it isn’t in the custom section links settings where I’d like it to be in order to move it to the More menu.

 ![2024-11-02 at 15.35.26](https://global.discourse-cdn.com/meta/original/4X/5/c/c/5cc7e9a6a501fd26fc2a2556c0baf0c15ba96e1e.png)

I see Meta has figured this out, but I don’t see a configurable setting anywhere on my end.

---

<div class="post-metadata">

### Author: ![ondrej](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ondrej/32/198804_2.png) [@ondrej](https://meta.discourse.org/u/ondrej)
#### Post date: [November 2, 2024, 9:22pm UTC](https://meta.discourse.org/t/discourse-gamification/225916/401 "2024-11-02T21:22:49Z")

</div>

As an admin on a site, you should be able to customise this section.

 ![image](https://global.discourse-cdn.com/meta/original/4X/9/1/e/91ee22659ab89d3b6c37238f37757a0747277adf.png)

---

<div class="post-metadata">

### Author: ![JonahAragon1](https://avatars.discourse-cdn.com/v4/letter/j/f19dbf/32.png) [@JonahAragon1](https://meta.discourse.org/u/JonahAragon1)
#### Post date: [November 2, 2024, 9:23pm UTC](https://meta.discourse.org/t/discourse-gamification/225916/402 "2024-11-02T21:23:54Z")

</div>

Exactly, I would _think_ it should be listed there.

 ![2024-11-02 at 16.23.12](https://global.discourse-cdn.com/meta/original/4X/4/5/c/45c2770aeecc752983cbf2024f9c543666ac48c0.png)

---

<div class="post-metadata">

### Author: ![ondrej](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ondrej/32/198804_2.png) [@ondrej](https://meta.discourse.org/u/ondrej)
#### Post date: [November 2, 2024, 9:28pm UTC](https://meta.discourse.org/t/discourse-gamification/225916/403 "2024-11-02T21:28:39Z")

</div>

You should be able to use the = to drag it into the ‘More’ section.

Sorry I misread your post

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [November 20, 2024, 12:02am UTC](https://meta.discourse.org/t/discourse-gamification/225916/404 "2024-11-20T00:02:52Z")

</div>

2 posts were split to a new topic: [Is There a Minimum User Requirement for Leaderboard Display?](https://meta.discourse.org/t/is-there-a-minimum-user-requirement-for-leaderboard-display/337161)

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [November 20, 2024, 12:00am UTC](https://meta.discourse.org/t/discourse-gamification/225916/405 "2024-11-20T00:00:41Z")

</div>

A post was split to a new topic: [How Do You Get Cheers?](https://meta.discourse.org/t/how-do-you-get-cheers/337156)

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [December 5, 2024, 6:36pm UTC](https://meta.discourse.org/t/discourse-gamification/225916/406 "2024-12-05T18:36:53Z")

</div>

2 posts were split to a new topic: [Differences in Score Ranking Options](https://meta.discourse.org/t/differences-in-score-ranking-options/340699)

---

<div class="post-metadata">

### Author: ![selase](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/selase/32/270909_2.png) [@selase](https://meta.discourse.org/u/selase)
#### Post date: [December 30, 2024, 6:29pm UTC](https://meta.discourse.org/t/discourse-gamification/225916/407 "2024-12-30T18:29:26Z")

</div>

A post was split to a new topic: [Users Complaining About Losing Points](https://meta.discourse.org/t/users-complaining-about-losing-points/344927)

---

<div class="post-metadata">

### Author: ![Kartoon](https://avatars.discourse-cdn.com/v4/letter/k/e36b37/32.png) [@Kartoon](https://meta.discourse.org/u/Kartoon)
#### Post date: [December 22, 2024, 10:47am UTC](https://meta.discourse.org/t/discourse-gamification/225916/408 "2024-12-22T10:47:08Z")

</div>

> [@Discourse](#):
>
> Allow admins to award/remove arbitrary points to users to allow integration with out-of-Discourse scorable events

I just noticed this has apparently been added at some point…how does one do this?

---

<div class="post-metadata">

### Author: ![NateDhaliwal](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/natedhaliwal/32/313494_2.png) [@NateDhaliwal](https://meta.discourse.org/u/NateDhaliwal)
#### Post date: [December 22, 2024, 2:22pm UTC](https://meta.discourse.org/t/discourse-gamification/225916/409 "2024-12-22T14:22:15Z")

</div>

@Kartoon I think this is what you are looking for:

> [@How to integrate Discourse Gamification with an external system (redeem and award points)](https://meta.discourse.org/t/how-to-integrate-discourse-gamification-with-an-external-system-redeem-and-award-points/262968):
>
> Since we launched [Discourse Gamification](https://meta.discourse.org/t/discourse-gamification/225916) a year ago, one of the most requested features from our roadmap has been the ability to make it possible to integrate Discourse Gamification with external gamification system . Examples are plenty: Integrate with existing gamification programs in companies ability to award points for events that happen outside of Discourse, like IRL events, or elsewhere online, like being a customer in a community, or buying a product. the ability to allow users …

---

<div class="post-metadata">

### Author: ![albert\_vu](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/albert_vu/32/278482_2.png) [@albert\_vu](https://meta.discourse.org/u/albert_vu)
#### Post date: [January 14, 2025, 10:25am UTC](https://meta.discourse.org/t/discourse-gamification/225916/410 "2025-01-14T10:25:37Z")

</div>

Hi @Discourse, :wave:

I’m just wondering if the events that award cheers can be “undone”. For example, when I mark a reply of one of my forum members as a solution, they’d receive 5 cheers. However, later I decide that said reply wasn’t a solution and unmark it, then would they lose the 5 cheers that were awarded to them? :thinking:

[Next page](https://meta.discourse.org/t/discourse-gamification/225916.md?page=2)
