diff --git a/includes/issue_node_view.inc b/includes/issue_node_view.inc
index 18db036..d1fae63 100644
--- a/includes/issue_node_view.inc
+++ b/includes/issue_node_view.inc
@@ -126,7 +126,14 @@ function template_preprocess_project_issue_summary(&$vars) {
   }
 
   $follow_flag = project_issue_get_follow_flag();
-  $vars['follow_link'] = !empty($follow_flag) ? flag_create_link($follow_flag, $issue_node->nid) : '';
+  $vars['follow_link'] = '';
+  if (!empty($follow_flag)) {
+    // Get current number of people following the issue.
+    $count = flag_get_counts('node', $issue_node->nid);
+    $count = $count['project_issue_follow'] ? $count['project_issue_follow'] : 0;
+    $vars['follow_link'] = flag_create_link($follow_flag, $issue_node->nid)
+      . '<div class="project-issue-follow-count">' . t('Following: <span class="project-issue-raw-count">@count</span>', array('@count' => $count)) . '</div>';
+  }
 }
 
 /**
diff --git a/project_issue.js b/project_issue.js
index bbdd087..ac52654 100644
--- a/project_issue.js
+++ b/project_issue.js
@@ -7,4 +7,18 @@ function project_issue_autocomplete_handler() {
   $('#edit-project-info-project-title').blur(function(e) {
     $(this).parent().after($('<div class="wrapper-throbber">'));
   });
-}
\ No newline at end of file
+}
+
+Drupal.behaviors.projectIssue = function (context) {
+  $('.flag-project-issue-follow').bind('flagGlobalAfterLinkUpdate', function (Event, Data) {
+    // Update the 'Following' counter on successful flag or unflag.
+    var currentCount = $('.project-issue-raw-count').html();
+    if (Data.flagStatus === 'flagged') {
+      currentCount = parseInt(currentCount, 10) + 1;
+    }
+    else {
+      currentCount = parseInt(currentCount, 10) - 1;
+    }
+    $('.project-issue-raw-count').html(String(currentCount));
+  });
+}
