diff --git a/feeds.api.php b/feeds.api.php
index c139da1..89188f2 100644
--- a/feeds.api.php
+++ b/feeds.api.php
@@ -283,8 +283,8 @@ function hook_feeds_processor_targets_alter(&$targets, $entity_type, $bundle) {
 
       // Specify both summary_callback and form_callback to add a per mapping
       // configuration form.
-      'summary_callback' => 'my_module_summary_callback',
-      'form_callback' => 'my_module_form_callback',
+      'summary_callback' => array('my_module_summary_callback'),
+      'form_callback' => array('my_module_form_callback'),
     );
     $targets['my_node_field2'] = array(
       'name' => t('My Second custom node field'),
diff --git a/feeds_ui/feeds_ui.admin.inc b/feeds_ui/feeds_ui.admin.inc
index 45b423c..1ed2de3 100644
--- a/feeds_ui/feeds_ui.admin.inc
+++ b/feeds_ui/feeds_ui.admin.inc
@@ -633,12 +633,12 @@ function feeds_ui_mapping_settings_form($form, $form_state, $i, $mapping, $targe
   }
 
   if ($form_state['mapping_settings_edit'] === $i) {
+    $settings_form = array();
     // Build the form.
-    if (isset($target['form_callback'])) {
-      $settings_form = call_user_func($target['form_callback'], $mapping, $target, $form, $form_state);
-    }
-    else {
-      $settings_form = array();
+    if (!empty($target['form_callback'])) {
+      foreach ((array) $target['form_callback'] as $callback) {
+        $settings_form += call_user_func($callback, $mapping, $target, $form, $form_state);
+      }
     }
 
     // Merge in the optional unique form.
@@ -662,12 +662,13 @@ function feeds_ui_mapping_settings_form($form, $form_state, $i, $mapping, $targe
     );
   }
   else {
+    $summary = '';
     // Build the summary.
-    if (isset($target['summary_callback'])) {
-      $summary = call_user_func($target['summary_callback'], $mapping, $target, $form, $form_state);
-    }
-    else {
-      $summary = '';
+    if (!empty($target['summary_callback'])) {
+      foreach ((array) $target['summary_callback'] as $callback) {
+        $summary[] = call_user_func($callback, $mapping, $target, $form, $form_state);
+      }
+      $summary = implode('<br />', $summary);
     }
 
     // Append the optional unique summary.
diff --git a/mappers/path.inc b/mappers/path.inc
index cd39fb1..cbb9e57 100644
--- a/mappers/path.inc
+++ b/mappers/path.inc
@@ -19,8 +19,8 @@ function path_feeds_processor_targets_alter(&$targets, $entity_type, $bundle_nam
         'name' => t('Path alias'),
         'description' => t('URL path alias of the node.'),
         'callback' => 'path_feeds_set_target',
-        'summary_callback' => 'path_feeds_summary_callback',
-        'form_callback' => 'path_feeds_form_callback',
+        'summary_callback' => array('path_feeds_summary_callback'),
+        'form_callback' => array('path_feeds_form_callback'),
       );
       break;
   }
diff --git a/mappers/taxonomy.inc b/mappers/taxonomy.inc
index 088a558..56b27e5 100644
--- a/mappers/taxonomy.inc
+++ b/mappers/taxonomy.inc
@@ -65,8 +65,8 @@ function taxonomy_feeds_processor_targets_alter(&$targets, $entity_type, $bundle
         'name' => check_plain($instance['label']),
         'callback' => 'taxonomy_feeds_set_target',
         'description' => t('The @label field of the entity.', array('@label' => $instance['label'])),
-        'summary_callback' => 'taxonomy_feeds_summary_callback',
-        'form_callback' => 'taxonomy_feeds_form_callback',
+        'summary_callback' => array('taxonomy_feeds_summary_callback'),
+        'form_callback' => array('taxonomy_feeds_form_callback'),
       );
     }
   }
diff --git a/mappers/text.inc b/mappers/text.inc
index 235aea3..7eb4a40 100644
--- a/mappers/text.inc
+++ b/mappers/text.inc
@@ -38,8 +38,8 @@ function text_feeds_processor_targets_alter(&$targets, $entity_type, $bundle_nam
     }
 
     if (!empty($instance['settings']['text_processing'])) {
-      $targets[$name]['summary_callback'] = 'text_feeds_summary_callback';
-      $targets[$name]['form_callback'] = 'text_feeds_form_callback';
+      $targets[$name]['summary_callback'] = array('text_feeds_summary_callback');
+      $targets[$name]['form_callback'] = array('text_feeds_form_callback');
     }
   }
 }
diff --git a/plugins/FeedsTermProcessor.inc b/plugins/FeedsTermProcessor.inc
index 9b0024e..4a542ae 100644
--- a/plugins/FeedsTermProcessor.inc
+++ b/plugins/FeedsTermProcessor.inc
@@ -177,8 +177,8 @@ class FeedsTermProcessor extends FeedsProcessor {
       'description' => array(
         'name' => t('Term description'),
         'description' => t('Description of the taxonomy term.'),
-        'summary_callback' => 'text_feeds_summary_callback',
-        'form_callback' => 'text_feeds_form_callback',
+        'summary_callback' => array('text_feeds_summary_callback'),
+        'form_callback' => array('text_feeds_form_callback'),
       ),
     );
 
diff --git a/tests/feeds_tests.module b/tests/feeds_tests.module
index fe25704..e18c9fa 100644
--- a/tests/feeds_tests.module
+++ b/tests/feeds_tests.module
@@ -109,8 +109,8 @@ function feeds_tests_feeds_processor_targets_alter(&$targets, $entity_type, $bun
     'name' => t('Test Target'),
     'description' => t('This is a test target.'),
     'callback' => 'feeds_tests_mapper_set_target',
-    'summary_callback' => 'feeds_tests_mapper_summary',
-    'form_callback' => 'feeds_tests_mapper_form',
+    'summary_callback' => array('feeds_tests_mapper_summary'),
+    'form_callback' => array('feeds_tests_mapper_form'),
   );
 
   $targets['test_unique_target'] = array(
