diff --git sites/all/modules/tracker2/tracker2.admin.inc sites/all/modules/tracker2/tracker2.admin.inc
index f03689d..450eb4a 100644
--- sites/all/modules/tracker2/tracker2.admin.inc
+++ sites/all/modules/tracker2/tracker2.admin.inc
@@ -34,6 +34,21 @@ function tracker2_admin() {
     '#default_value' => variable_get('tracker2_pager', 25),
     '#required' => TRUE,
   );
+  
+  if (module_exists('flag')) {
+    $flags = flag_get_flags();
+    $flag_options[] = t('None');
+    foreach ($flags as $flag) {
+      $flag_options[$flag->name] = $flag->title;
+    }
+    $form['tracker2_subscription_flag'] = array(
+      '#title' => t('Subscription Flag'),
+      '#description' => t('If you allow users to subscribe to content on your site with Flag, choose that particular flag here.'),
+      '#type' => 'select',
+      '#options' => $flag_options,
+      '#default_value' => variable_get('tracker2_subscription_flag', NULL),
+    );
+  }
 
   return system_settings_form($form);
 }
diff --git sites/all/modules/tracker2/tracker2.module sites/all/modules/tracker2/tracker2.module
index 85b1e36..ceb669f 100644
--- sites/all/modules/tracker2/tracker2.module
+++ sites/all/modules/tracker2/tracker2.module
@@ -164,6 +164,11 @@ function _tracker2_add($nid, $uid, $changed) {
   if (!$exists) {
     db_query('INSERT INTO {tracker2_user} (changed, published, nid, uid) VALUES (%d, %d, %d, %d)', $changed, $node->status, $nid, $uid);
   }
+  
+  // Flag integration
+  if (module_exists('flag')) {
+    _tracker2_flag('flag', $nid, $uid);
+  }
 }
 
 /**
@@ -227,6 +232,30 @@ function _tracker2_remove($nid, $uid = NULL, $changed = NULL) {
     db_query("DELETE FROM {tracker2_node} WHERE nid = %d", $nid);
     db_query("DELETE FROM {tracker2_user} WHERE nid = %d", $nid);
   }
+
+  // Flag integration
+  if (module_exists('flag')) {
+    _tracker2_flag('unflag', $nid, $uid);
+  }
+}
+
+/**
+ * Wrapper for un/flagging.
+ */
+function _tracker2_flag($event, $content_id, $uid) {
+  if ($flag_name = variable_get('tracker2_subscription_flag', FALSE)) {
+    $flag = flag_get_flag($flag_name);
+
+    // Flag
+    if ($event == 'flag' && !$flag->is_flagged($content_id, $uid)) {
+      $flag->flag('flag', $content_id);
+    }
+
+    // Unflag
+    if ($event == 'unflag' && $flag->is_flagged($content_id, $uid)) {
+      $flag->flag('unflag', $content_id);
+    }
+  }
 }
 
 /**
@@ -275,3 +304,23 @@ function tracker2_theme() {
     ),
   );
 }
+
+/**
+ * Implementation of hook_flag().
+ */
+function tracker2_flag($event, $flag, $content_id, $account) {
+  dsm(func_get_args());
+  $flag_name = variable_get('tracker2_subscription_flag', FALSE);
+  if ($flag->name == $flag_name) {
+    // Check flag type, must be node
+    if ($flag->content_type == 'node') {
+      $changed = db_result(db_query('SELECT changed FROM {node} WHERE nid = %d', $content_id));
+      if ($event == 'flag') {
+        _tracker2_add($content_id, $account->uid, $changed);
+      }
+      if ($event == 'unflag') {
+        _tracker2_remove($content_id, $account->uid, $changed);
+      }
+    }
+  }
+}
\ No newline at end of file
