diff --git constant_contact.module constant_contact.module
index ba07fa7..3cb70ac 100755
--- constant_contact.module
+++ constant_contact.module
@@ -503,16 +503,26 @@ function constant_contact_user($op, &$edit, &$account, $category = NULL)
 		//module_invoke_all('constant_contact', 'user_inserted', $edit, $lists);
 		$edit['cc_newsletter'] = 1; /* they may not have this flag set but may be subscribed */
 
-		// parse custom fields
-		$extra_fields = array();
-		if(is_array($fields)):
-		foreach($fields as $field):
-			$fieldname = str_replace(' ','', $field);
-			if(isset($field_mappings[$fieldname]) && isset($_POST[$field_mappings[$fieldname]])):
-				$extra_fields[$fieldname] = $_POST[$field_mappings[$fieldname]];
-			endif;
-		endforeach;
-		endif;
+    // parse custom fields
+    $extra_fields = array();
+    if(is_array($fields)):
+    foreach($fields as $field):
+      $fieldname = str_replace(' ','', $field);
+      if(isset($field_mappings[$fieldname]) && isset($_POST[$field_mappings[$fieldname]])):
+        $extra_fields[$fieldname] = $_POST[$field_mappings[$fieldname]];
+        
+        // CCK fields / multi-value fields - strip down array to first value.
+        // structure is probably $field[$delta][$value], but try to work for any array
+        if (is_array($extra_fields[$fieldname])) {
+          while (is_array($extra_fields[$fieldname])) {
+            $extra_fields[$fieldname] = array_shift($extra_fields[$fieldname]);
+          }
+        }
+        
+      endif;
+    endforeach;
+    endif;
+    
 
 		// find contact
 		$contact = $cc->query_contacts($edit['mail']);
