diff --git a/modules/mailchimp_lists/mailchimp_lists.module b/modules/mailchimp/modules/mailchimp_lists/mailchimp_lists.module
index bd63e20..3c61606 100644
--- a/modules/mailchimp/modules/mailchimp_lists/mailchimp_lists.module
+++ b/modules/mailchimp/modules/mailchimp_lists/mailchimp_lists.module
@@ -688,10 +688,18 @@ function mailchimp_lists_load_user_mergevars($account, $list) {
   // grab the saved list merge vars and filter out unset values
   if (!empty($list->settings['mergefields'])) {
     $mergevars = array_filter($list->settings['mergefields']);
-    $mergevars = array_flip($mergevars);
-
-    // match with token values
-    $values = module_invoke_all('mailchimp_lists_merge_values', $mergevars, $account, $list);
+    $mergevars_flipped = array_flip($mergevars);
+    if (count($mergevars) == count($mergevars_flipped)) {
+      // match with token values mergevars if we will not loose any of array elements while array_flip()
+      $values = module_invoke_all('mailchimp_lists_merge_values', $mergevars_flipped, $account, $list);
+    } else {
+      // match with token values mergevars var per var
+      $values = array();
+      foreach ($mergevars as $name => $token) {
+        $replaced = module_invoke_all('mailchimp_lists_merge_values', array($token => $name), $account, $list);
+        $values[$name] = $replaced[$name];
+      }
+    }
 
     // always add email
     $values += array(
