Recommended releases

Download Released

Activity Calendar module creates an activity calendar heatmap for each user of
your Backdrop website, similar to GitHub contribution calendar.

Activity Calendar


This module relies on Cal-HeatMap library. No need to
download anything as the library files are already bundled into the module.


  • Install this module using the official Backdrop CMS instructions at or run the following oneliner command
    in case if Brush is installed:

    brush en activity_calendar -y
  • Visit the configuration page under Administration > Configuration > User
    accounts > Activity calendar (admin/config/people/activity_calendar) and fill
    in the form per your preferences.

  • Go to any user's profile page and enjoy checking their activity calendar.


On module's administration page you can configure such Calendar settings as
monthly or yearly output format, lightest and darkest colors for highlighting
calendar cells, point thresholds for changing the color of users' daily activity.

Under the Activity points section you can select actions that will increment
activity points, such as creating nodes or submitting comments, limit content
types and set how many points users get by creating new nodes and comments per
content type.

If Flag Activity sub-module is enabled, you can configure number of points
assigned for each flagging.

Other modules can implement hook_calendar() that should return array
of module_name string and $user_activity sub-array, which in turn should have
Unix timestamps as array keys and number of points for each timestamp entry. For

 * @file
 * Flag activity module.

 * Implements hook_calendar().
function flag_activity_calendar() {
  $config_flag_points = config_get('activity_calendar.settings', 'flag_activity');
  $flag_points = ($config_flag_points) ? $config_flag_points : 1;

  if (arg(0) == 'user') {
    // Collect all flag points as the hook is called from user page.
    $flags = db_select('flagging', 'f')
    ->fields('f', array('flagging_id', 'timestamp'))
    ->condition('f.uid', arg(1))
  else {
    // Collect flag points only for the current month.
    global $user;
    $flags = db_select('flagging', 'f')
    ->fields('f', array('flagging_id', 'timestamp'))
    ->condition('f.uid', $user->uid)
    ->condition('f.timestamp', strtotime('first day of this month'), '>=')

  if (!empty($flags)) {
    foreach ($flags as $flag) {
      $user_activity[$flag->timestamp] = intval($flag_points);
    $result['module_name'] = 'Flag Activity';
    $result['user_activity'] = $user_activity;
  return $result;


Bugs and Feature requests should be reported in the Issue Queue:

Current Maintainers

  • Created for Backdrop and maintained by Alan Mels.



This project is GPL v2 software.
See the LICENSE.txt file in this directory for complete text.