diff --git a/googleanalytics.admin.inc b/googleanalytics.admin.inc
index 8ef3e67..e9e3a66 100755
--- a/googleanalytics.admin.inc
+++ b/googleanalytics.admin.inc
@@ -236,7 +236,7 @@ function googleanalytics_admin_settings_form(&$form_state) {
   $form['googleanalytics_custom_var'] = array(
     '#collapsed' => TRUE,
     '#collapsible' => TRUE,
-    '#description' => t('You can add Google Analytics <a href="!custom_var_documentation">Custom Variables</a> here. These will be added to every page that Google Analytics tracking code appears on. Google Analytics will only accept custom variables if the <em>name</em> and <em>value</em> combined are less than 64 bytes after URL encoding. Keep the names as short as possible and expect long values to get trimmed. You may use tokens in custom variable values. Global and user tokens are always available; on node pages, node tokens are also available.', array('!custom_var_documentation' => 'http://code.google.com/intl/en/apis/analytics/docs/tracking/gaTrackingCustomVariables.html')),
+    '#description' => t('You can add Google Analytics <a href="!custom_var_documentation">Custom Variables</a> here. These will be added to every page that Google Analytics tracking code appears on. Google Analytics will only accept custom variables if the <em>name</em> and <em>value</em> combined are less than 64 bytes after URL encoding. Keep the names as short as possible and expect long values to get trimmed. You may use tokens in custom variable names and values. Global and user tokens are always available; on node pages, node tokens are also available.', array('!custom_var_documentation' => 'http://code.google.com/intl/en/apis/analytics/docs/tracking/gaTrackingCustomVariables.html')),
     '#theme' => 'googleanalytics_admin_custom_var_table',
     '#title' => t('Custom variables'),
     '#tree' => TRUE,
@@ -260,7 +260,7 @@ function googleanalytics_admin_settings_form(&$form_state) {
     );
     $form['googleanalytics_custom_var']['slots'][$i]['name'] = array(
       '#default_value' => !empty($googleanalytics_custom_vars['slots'][$i]['name']) ? $googleanalytics_custom_vars['slots'][$i]['name'] : '',
-      '#description' => t('The custom variable name.'),
+      '#description' => ($token_enabled ? t('The custom variable name. You may use tokens in this field.') : t('The custom variable name.')),
       '#size' => 20,
       '#type' => 'textfield',
     );
@@ -271,6 +271,10 @@ function googleanalytics_admin_settings_form(&$form_state) {
       '#type' => 'textfield',
     );
     if ($token_enabled) {
+      $form['googleanalytics_custom_var']['slots'][$i]['name']['#element_validate'][] = 'googleanalytics_token_element_validate';
+      $form['googleanalytics_custom_var']['slots'][$i]['name']['#element_validate'][] = 'token_element_validate';
+      $form['googleanalytics_custom_var']['slots'][$i]['name']['#token_types'][] = 'node';
+      $form['googleanalytics_custom_var']['slots'][$i]['name']['#token_types'][] = 'user';
       $form['googleanalytics_custom_var']['slots'][$i]['value']['#element_validate'][] = 'googleanalytics_token_element_validate';
       $form['googleanalytics_custom_var']['slots'][$i]['value']['#element_validate'][] = 'token_element_validate';
       $form['googleanalytics_custom_var']['slots'][$i]['value']['#token_types'][] = 'node';
@@ -400,6 +404,9 @@ function googleanalytics_admin_settings_form_validate($form, &$form_state) {
     // If token module is not available, block tokens with personally identifying
     // information with an "ugly" value check. Normally the values are validated
     // via '#element_validate' functions that are not available without token module.
+    if (!module_exists('token') && _googleanalytics_contains_forbidden_token($custom_var['name'])) {
+      form_set_error("googleanalytics_custom_var][slots][" . $custom_var['slot'] . "][value", t('The custom variable %element-title is using forbidden tokens with personal identifying information.', array('%element-title' => $custom_var['name'] ? $custom_var['name'] : $custom_var['slot'])));
+    }
     if (!module_exists('token') && _googleanalytics_contains_forbidden_token($custom_var['value'])) {
       form_set_error("googleanalytics_custom_var][slots][" . $custom_var['slot'] . "][value", t('The custom variable %element-title is using forbidden tokens with personal identifying information.', array('%element-title' => $custom_var['name'] ? $custom_var['name'] : $custom_var['slot'])));
     }
diff --git a/googleanalytics.module b/googleanalytics.module
index a86e63e..58e1f33 100755
--- a/googleanalytics.module
+++ b/googleanalytics.module
@@ -181,6 +181,7 @@ function googleanalytics_footer($main = 0) {
           if (is_object($node)) {
             $types += array('node' => $node);
           }
+          $custom_var_name = token_replace_multiple($custom_var_name, $types, '[', ']', array('clear' => TRUE));
           $custom_var_value = token_replace_multiple($custom_var_value, $types, '[', ']', array('clear' => TRUE));
         }
 
