How to implement gamification in a Drupal site and award incentives?


How can a Drupal site be transformed in a gamification platform, which can be used to encourage actions on your site that you want users to perform within a specified time frame.

Some examples of such actions:

  • Log in to the site once per day for three consecutive days.
  • Post a number of nodes of selected content types.
  • Make a Friend connection on the site.
  • ...

When such actions are completed, other things (incentives) should be triggered with the Rules module, using the commonly used/known modules that integrate with Rules, such as:


1 answer


The Goals module is a possible solution to answer this question. It can be used to incentivize anything on your site, such as voting, sharing content, creating relationships, etc.

Goals and Tasks are implemented using fieldable entities. So you can customize Goals via "Manage Fields" and/or "Manage display".

Head over to the Goals video which includes:

  • a general introduction to the module.
  • a demonstration to install, configure and use it.
  • samples of how it uses the Rules modules to do its magic (i.e. to track the progress of a user to achieve the various goals).

Using the Goals Extras sub-module it integrates with the User Points module also.

All this can be done with site building features only (no custom code involved), though hooks are available to integrate it in custom coding also). For some examples of using these hooks, refer to the answers to these questions):

For more details, refer to its Community Documentation. For some details about how it differs from the Achievements module (which is a possible alternative), refer to What is the difference with the Achievements module?, which states:

The Goals module is built around using the admin interface configuration. Plus, goals and tasks within the Goals module are fieldable entities, so you have the flexibility to add additional fields and incorporate these entities into views.

I can't speak definitively for the Achievements module, but my best understanding is that it relies heavily on custom coding to handle many of the functions.

Disclosure: I'm the maintainer of this module.