diff --git a/README.txt b/README.txt
index c4c65ea..aafb7e9 100644
--- a/README.txt
+++ b/README.txt
@@ -25,7 +25,9 @@ http://disqus.com/api/applications/
 BUILT-IN FEATURES
 =============
 This module can automatically update and/or delete your Disqus threads when you
-delete/update your nodes. 
+delete/update your nodes.
+
+Tracking new comments and replies via "Google Analytics" analytic service.
 
 Visit Disqus configuration page after you installed Disqus API to configure it's
 behaviour. 
diff --git a/disqus-node-form.js b/disqus-node-form.js
deleted file mode 100644
index d8a807f..0000000
--- a/disqus-node-form.js
+++ /dev/null
@@ -1,14 +0,0 @@
-
-(function ($) {
-
-Drupal.behaviors.disqusCommentFieldsetSummaries = {
-  attach: function (context) {
-    $('fieldset.comment-node-settings-form', context).drupalSetSummary(function (context) {
-      var drupalCommentStatus = Drupal.checkPlain('Drupal Comments: ' + $('.form-item-comment input:checked', context).next('label').text());
-      var disqusCommentStatus = $('.form-item-disqus-status input:checked', context).length > 0 ? '<br/> Disqus enabled' : '';
-      return drupalCommentStatus + disqusCommentStatus;
-    });
-  }
-};
-
-})(jQuery);
diff --git a/disqus.admin.inc b/disqus.admin.inc
index 9c59050..d2faed4 100644
--- a/disqus.admin.inc
+++ b/disqus.admin.inc
@@ -97,6 +97,12 @@ function disqus_admin_settings() {
     '#description' => t('When enabled, uses the <a href="http://docs.disqus.com/help/2/">disqus_developer</a> flag to tell Disqus that you are in a testing environment. Threads will not display on the public community page with this set.'),
     '#default_value' => variable_get('disqus_developer', FALSE),
   );
+  $form['behavior']['disqus_track_newcomment_ga'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Track new comments in Google Analytics'),
+    '#description' => t('When enabled, sends tracking information to Google Analytics. This will work only if you have installed the <a href="https://www.drupal.org/project/google_analytics">google_analytics</a> module.'),
+    '#default_value' => variable_get('disqus_track_newcomment_ga', FALSE),
+  );
   // Advanced settings.
   $form['advanced'] = array(
     '#type' => 'fieldset',
diff --git a/disqus.install b/disqus.install
index 8da7c15..5c5d62c 100644
--- a/disqus.install
+++ b/disqus.install
@@ -67,6 +67,7 @@ function disqus_uninstall() {
     'disqus_top_commenters_hide_mods',
     'disqus_top_commenters_items',
     'disqus_top_commenters_showavatars',
+    'disqus_track_newcomment_ga',
     'disqus_use_site_logo',
     'disqus_weight',
   );
diff --git a/disqus.js b/disqus.js
deleted file mode 100644
index 7332e3f..0000000
--- a/disqus.js
+++ /dev/null
@@ -1,89 +0,0 @@
-/**
- * @file
- * JavaScript for the Disqus Drupal module.
- */
-
-// The Disqus global variables.
-var disqus_shortname = '';
-var disqus_url = '';
-var disqus_title = '';
-var disqus_identifier = '';
-var disqus_developer = 0;
-var disqus_def_name = '';
-var disqus_def_email = '';
-var disqus_config;
-
-(function ($) {
-
-/**
- * Drupal Disqus behavior.
- */
-Drupal.behaviors.disqus = {
-  attach: function (context, settings) {
-    $('body').once('disqus', function() {
-      // Load the Disqus comments.
-      if (settings.disqus || false) {
-        // Setup the global JavaScript variables for Disqus.
-        disqus_shortname = settings.disqus.domain;
-        disqus_url = settings.disqus.url;
-        disqus_title = settings.disqus.title;
-        disqus_identifier = settings.disqus.identifier;
-        disqus_developer = settings.disqus.developer || 0;
-        disqus_def_name = settings.disqus.name || '';
-        disqus_def_email = settings.disqus.email || '';
-
-        // Language and SSO settings are passed in through disqus_config().
-        disqus_config = function() {
-          if (settings.disqus.language || false) {
-            this.language = settings.disqus.language;
-          }
-          if (settings.disqus.remote_auth_s3 || false) {
-            this.page.remote_auth_s3 = settings.disqus.remote_auth_s3;
-          }
-          if (settings.disqus.api_key || false) {
-            this.page.api_key = settings.disqus.api_key;
-          }
-          if (settings.disqus.sso || false) {
-            this.sso = settings.disqus.sso;
-          }
-          if (settings.disqus.callbacks || false) {
-            for (var key in settings.disqus.callbacks) {
-              for (var i = 0; i < settings.disqus.callbacks[key].length; i++) {
-                var callback = settings.disqus.callbacks[key][i].split('.');
-                var fn = window;
-                for (var j = 0; j < callback.length; j++) {
-                  fn = fn[callback[j]];
-                }
-                if(typeof fn === 'function') {
-                  this.callbacks[key].push(fn);
-                }
-              }
-            }
-          }
-        };
-
-        // Make the AJAX call to get the Disqus comments.
-        jQuery.ajax({
-          type: 'GET',
-          url: '//' + disqus_shortname + '.disqus.com/embed.js',
-          dataType: 'script',
-          cache: false
-        });
-      }
-
-      // Load the comment numbers JavaScript.
-      if (settings.disqusComments || false) {
-        disqus_shortname = settings.disqusComments;
-        // Make the AJAX call to get the number of comments.
-        jQuery.ajax({
-          type: 'GET',
-          url: '//' + disqus_shortname + '.disqus.com/count.js',
-          dataType: 'script',
-          cache: false
-        });
-      }
-    });
-  }
-};
-
-})(jQuery);
diff --git a/disqus.module b/disqus.module
index 6024664..ac00559 100644
--- a/disqus.module
+++ b/disqus.module
@@ -141,6 +141,14 @@ function disqus_element_post_render($children, &$element) {
     $disqus += disqus_sso_disqus_settings($user);
   }
 
+  // Check if we want to track new comments in Google Analytics.
+  if (variable_get('disqus_track_newcomment_ga', FALSE)) {
+    // Add a callback when a new comment is posted.
+    $disqus['callbacks']['onNewComment'][] = 'disqusTrackNewComment';
+    // Attach the js with the callback implementation.
+    $element['#attached']['js'][] = drupal_get_path('module', 'disqus') . '/js/disqus_ga.js';
+  }
+
   /**
    * Pass callbacks on if needed. Callbacks array is two dimensional array
    * with callback type as key on first level and array of JS callbacks on the
@@ -161,7 +169,7 @@ function disqus_element_post_render($children, &$element) {
   }
 
   // Add the disqus.js and all the settings to process the JavaScript and load Disqus.
-  $element['#attached']['js'][] = drupal_get_path('module', 'disqus') . '/disqus.js';
+  $element['#attached']['js'][] = drupal_get_path('module', 'disqus') . '/js/disqus.js';
   $element['#attached']['js'][] = array(
     'type' => 'setting',
     'data' => array(
@@ -287,7 +295,7 @@ function disqus_node_view($node, $view_mode) {
         );
 
         // Attach disqus.js to load the Disqus comment count JavaScript.
-        $node->content['links']['#attached']['js'][] = drupal_get_path('module', 'disqus') . '/disqus.js';
+        $node->content['links']['#attached']['js'][] = drupal_get_path('module', 'disqus') . '/js/disqus.js';
         $node->content['links']['#attached']['js'][] = array(
           'data' => array('disqusComments' => $node->disqus['domain']),
           'type' => 'setting',
@@ -758,7 +766,7 @@ function disqus_form_alter(&$form, $form_state, $form_id) {
           '#group' => 'additional_settings',
           '#weight' => 30,
           '#attached' => array(
-            'js' => array(drupal_get_path('module', 'disqus') . '/disqus-node-form.js'),
+            'js' => array(drupal_get_path('module', 'disqus') . '/js/disqus-node-form.js'),
           ),
         );
       }
@@ -769,7 +777,7 @@ function disqus_form_alter(&$form, $form_state, $form_id) {
           // But reveal parent comment settings fieldset if user has toggle permission
           $form['comment_settings']['#access'] = (user_access('toggle disqus comments') || $form['comment_settings']['#access']);
           // Add the Javascript for tab text.
-          $form['comment_settings']['#attached']['js'][] = drupal_get_path('module', 'disqus') . '/disqus-node-form.js';
+          $form['comment_settings']['#attached']['js'][] = drupal_get_path('module', 'disqus') . '/js/disqus-node-form.js';
         }
       }
       // Add the Disqus settings into the comment settings fieldset for users with toggle permission.
diff --git a/disqus.views.inc b/disqus.views.inc
index e836f6e..dc1c034 100644
--- a/disqus.views.inc
+++ b/disqus.views.inc
@@ -65,7 +65,7 @@ class views_handler_field_node_disqus_comment_count extends views_handler_field
        */
       $content['#attached'] = array(
         'js' => array(
-          array('data' => drupal_get_path('module', 'disqus') . '/disqus.js'),
+          array('data' => drupal_get_path('module', 'disqus') . '/js/disqus.js'),
           array(
             'data' => array('disqusComments' => $disqus['domain']),
             'type' => 'setting',
diff --git a/disqus_ds/disqus_ds.module b/disqus_ds/disqus_ds.module
index 7bdc582..b30d139 100644
--- a/disqus_ds/disqus_ds.module
+++ b/disqus_ds/disqus_ds.module
@@ -43,7 +43,7 @@ function _disqus_ds_comment(array &$field) {
       '#access' => user_access('view disqus comments'),
       '#attached' => array(
         'js' => array(
-          array('data' => drupal_get_path('module', 'disqus') . '/disqus.js', 'type' => 'file'),
+          array('data' => drupal_get_path('module', 'disqus') . '/js/disqus.js', 'type' => 'file'),
           array('data' => $settings, 'type' => 'setting'),
         ),
       ),
@@ -77,7 +77,7 @@ function _disqus_ds_comment_count(array &$field) {
       ),
       '#attached' => array(
         'js' => array(
-          array('data' => drupal_get_path('module', 'disqus') . '/disqus.js', 'type' => 'file'),
+          array('data' => drupal_get_path('module', 'disqus') . '/js/disqus.js', 'type' => 'file'),
           array('data' => $settings, 'type' => 'setting'),
         ),
       ),
diff --git a/js/disqus-node-form.js b/js/disqus-node-form.js
new file mode 100644
index 0000000..d8a807f
--- /dev/null
+++ b/js/disqus-node-form.js
@@ -0,0 +1,14 @@
+
+(function ($) {
+
+Drupal.behaviors.disqusCommentFieldsetSummaries = {
+  attach: function (context) {
+    $('fieldset.comment-node-settings-form', context).drupalSetSummary(function (context) {
+      var drupalCommentStatus = Drupal.checkPlain('Drupal Comments: ' + $('.form-item-comment input:checked', context).next('label').text());
+      var disqusCommentStatus = $('.form-item-disqus-status input:checked', context).length > 0 ? '<br/> Disqus enabled' : '';
+      return drupalCommentStatus + disqusCommentStatus;
+    });
+  }
+};
+
+})(jQuery);
diff --git a/js/disqus.js b/js/disqus.js
new file mode 100644
index 0000000..7332e3f
--- /dev/null
+++ b/js/disqus.js
@@ -0,0 +1,89 @@
+/**
+ * @file
+ * JavaScript for the Disqus Drupal module.
+ */
+
+// The Disqus global variables.
+var disqus_shortname = '';
+var disqus_url = '';
+var disqus_title = '';
+var disqus_identifier = '';
+var disqus_developer = 0;
+var disqus_def_name = '';
+var disqus_def_email = '';
+var disqus_config;
+
+(function ($) {
+
+/**
+ * Drupal Disqus behavior.
+ */
+Drupal.behaviors.disqus = {
+  attach: function (context, settings) {
+    $('body').once('disqus', function() {
+      // Load the Disqus comments.
+      if (settings.disqus || false) {
+        // Setup the global JavaScript variables for Disqus.
+        disqus_shortname = settings.disqus.domain;
+        disqus_url = settings.disqus.url;
+        disqus_title = settings.disqus.title;
+        disqus_identifier = settings.disqus.identifier;
+        disqus_developer = settings.disqus.developer || 0;
+        disqus_def_name = settings.disqus.name || '';
+        disqus_def_email = settings.disqus.email || '';
+
+        // Language and SSO settings are passed in through disqus_config().
+        disqus_config = function() {
+          if (settings.disqus.language || false) {
+            this.language = settings.disqus.language;
+          }
+          if (settings.disqus.remote_auth_s3 || false) {
+            this.page.remote_auth_s3 = settings.disqus.remote_auth_s3;
+          }
+          if (settings.disqus.api_key || false) {
+            this.page.api_key = settings.disqus.api_key;
+          }
+          if (settings.disqus.sso || false) {
+            this.sso = settings.disqus.sso;
+          }
+          if (settings.disqus.callbacks || false) {
+            for (var key in settings.disqus.callbacks) {
+              for (var i = 0; i < settings.disqus.callbacks[key].length; i++) {
+                var callback = settings.disqus.callbacks[key][i].split('.');
+                var fn = window;
+                for (var j = 0; j < callback.length; j++) {
+                  fn = fn[callback[j]];
+                }
+                if(typeof fn === 'function') {
+                  this.callbacks[key].push(fn);
+                }
+              }
+            }
+          }
+        };
+
+        // Make the AJAX call to get the Disqus comments.
+        jQuery.ajax({
+          type: 'GET',
+          url: '//' + disqus_shortname + '.disqus.com/embed.js',
+          dataType: 'script',
+          cache: false
+        });
+      }
+
+      // Load the comment numbers JavaScript.
+      if (settings.disqusComments || false) {
+        disqus_shortname = settings.disqusComments;
+        // Make the AJAX call to get the number of comments.
+        jQuery.ajax({
+          type: 'GET',
+          url: '//' + disqus_shortname + '.disqus.com/count.js',
+          dataType: 'script',
+          cache: false
+        });
+      }
+    });
+  }
+};
+
+})(jQuery);
diff --git a/js/disqus_ga.js b/js/disqus_ga.js
new file mode 100644
index 0000000..32a1ece
--- /dev/null
+++ b/js/disqus_ga.js
@@ -0,0 +1,37 @@
+/**
+ * @file
+ * JavaScript for the Disqus Google Analytics module.
+ */
+
+(function($) {
+
+    /**
+     * Track new comments in Google analytics.
+     * Custom modules can override this by implementing hook_js_alter().
+     */
+    disqusTrackNewComment = function() {
+
+        // Make sure that the google analytics event tracking object or
+        // the universal analytics tracking function exists
+        // if not then exit and don't track.
+        if (typeof _gaq == "undefined" && typeof ga == "undefined") {
+            return;
+        }
+
+        // Construct current page relative URL to be used as event Label.
+        var label = document.location.href.toLowerCase().substring((document.location.href.toLowerCase().indexOf(document.domain.toLowerCase())) + (document.domain.toLowerCase().length));
+
+        if (typeof _gaq != 'undefined') {
+            _gaq.push(['_trackEvent', 'Disqus', 'Comment', label]);
+        }
+        else {
+            ga('send', {
+                'hitType': 'event',
+                'eventCategory': 'Disqus',
+                'eventAction': 'Comment',
+                'eventLabel': label
+            });
+        }
+    };
+
+})(jQuery);
\ No newline at end of file
