diff --git a/evergage.module b/evergage.module
index ea6bab2..ec55a7a 100644
--- a/evergage.module
+++ b/evergage.module
@@ -127,6 +127,9 @@ function evergage_add_action($action = NULL, array $params = array(), $uid = NUL
         }
       }
 
+      // allow other modules to alter the action
+      drupal_alter('evergage_action', $finalaction, $account_id, $params);
+
       // Queue the action.
       db_insert('evergage')
         ->fields(array(
@@ -172,6 +175,7 @@ function evergage_send_http_event($action, $params) {
     'blocking' => FALSE,
   );
 
+  drupal_alter('evergage_send_http_event', $url, $options);
   httprl_request($url, $options);
 
   $request = httprl_send_request();
@@ -185,7 +189,7 @@ function evergage_send_http_event($action, $params) {
  */
 function evergage_add_javascript() {
 
-  $script = 'var _aaq = _aaq || [];';
+  $script_push_codes = array();
   // Only add the Evergage JavaScript on the first round.
   static $i = 1;
   if ($i == 1) {
@@ -201,19 +205,19 @@ function evergage_add_javascript() {
     drupal_add_js(array('evergage' => $settings), 'setting');
 
     if (variable_get('evergage_set_use_site_config', TRUE)) {
-      $script .= evergage_get_attribute_push_code('setUseSiteConfig', 'true');
+      $script_push_codes['setUseSiteConfig'] = 'true';
     }
 
     // Set the user name if logged in
     // (otherwise, anonymous tracking will be used if configured in Evergage).
     if (isset($account->name)) {
-      $script .= evergage_get_attribute_push_code('setUser', $account->name);
+      $script_push_codes['setUser'] = $account->name;
     }
 
     // Set up the Cookie Domain.
     $domain = variable_get('evergage_cookie_domain', '');
     if (!empty($domain)) {
-      $script .= evergage_get_attribute_push_code('setCookieDomain', $domain);
+      $script_push_codes['setCookieDomain'] = $domain;
     }
 
     // If a custom user field is defined to match the company field then
@@ -231,7 +235,7 @@ function evergage_add_javascript() {
           // Use the safe value to pass over to Evergage.
           $item = array_pop($items);
           if (isset($item) && isset($item['safe_value'])) {
-            $script .= evergage_get_attribute_push_code('setCompany', $item['safe_value']);
+            $script_push_codes['setCompany'] = $item['safe_value'];
           }
         }
       }
@@ -244,12 +248,20 @@ function evergage_add_javascript() {
       module_load_include('php', 'evergage', 'EncryptedUserIdUtility');
       $encrypt = new EncryptedUserIdUtility(variable_get('evergage_account', ''), $api_token);
       $encrypted_user_id = $encrypt->encrypt($account->name);
-      $script .= evergage_get_attribute_push_code('setEncryptedUser', $encrypted_user_id);
+      $script_push_codes['setEncryptedUser'] = $encrypted_user_id;
+    }
+
+    // allow other modules to alter the attributes of the script
+    drupal_alter('evergage_add_javascript', $script_push_codes, $account);
+    $script = 'var _aaq = _aaq || [];';
+    foreach ($script_push_codes as $attribute => $value) {
+      $script .= evergage_get_attribute_push_code($attribute, $value);
     }
 
     if (variable_get('evergage_track_hooks')) {
       $script .= evergage_add_persistent_hook_tracking_events();
     }
+
     drupal_add_js(drupal_get_path('module', 'evergage') . '/evergage.js');
     drupal_add_js($script, array('scope' => 'header', 'type' => 'inline'));
   }
@@ -302,11 +314,11 @@ function evergage_add_persistent_hook_tracking_events() {
     ->condition('uid', $user->uid, '=')
     ->execute();
 
-  $recordstodelete = array();
+  $records_to_delete = array();
 
   while ($record = $result->fetchAssoc()) {
     $final_action = unserialize($record['actionset']);
-    $recordstodelete[] = $record['aid'];
+    $records_to_delete[] = $record['aid'];
 
     // Retrieve the action and remove it from the parameters.
     $action = empty($final_action['action']) ? FALSE : $final_action['action'];
@@ -324,8 +336,10 @@ function evergage_add_persistent_hook_tracking_events() {
     $script .= '_aaq.push(["trackAction", "' . $action . '"]);';
   }
 
+  drupal_alter('evergage_add_persistent_hook_tracking_events', $action, $user->uid);
+
   // Delete all processed entries.
-  foreach ($recordstodelete as $aid) {
+  foreach ($records_to_delete as $aid) {
     db_delete('evergage')
       ->condition('aid', $aid)
       ->execute();
