diff --git a/.cspell-project-words.txt b/.cspell-project-words.txt
index f79ef95521355a0dd36aa2e1ab0904b4e689579e..42a0188ed3886762f336ecf4e20b885f5c3830ff 100644
--- a/.cspell-project-words.txt
+++ b/.cspell-project-words.txt
@@ -57,3 +57,5 @@ lobodakyrylo
 uridrupal
 vaidas_a
 tempstore
+drupaltype
+fieldmap
diff --git a/migrations/wordpress_content.yml b/migrations/wordpress_content.yml
index fe0b7e7fb4dbceed70a56451af1411881d1e3ee5..54aec31f8c490b6a42bce249fb7058f7eff2f473 100644
--- a/migrations/wordpress_content.yml
+++ b/migrations/wordpress_content.yml
@@ -72,9 +72,15 @@ process:
     message: 'Cannot import empty titles. This may include trashed posts from the WordPress import file.'
   # @todo: Will need process plugin to rewrite links/img refs.
   # @link https://www.drupal.org/node/2742279
-  'body/value': content
-  'body/summary': excerpt
+  '_content/value':
+    - plugin: get
+      source: content
+  '_content/summary':
+    - plugin: get
+      source: excerpt
   created:
+    # @todo This field is not fault tolerant. May be fatal errors.
+    # @link https://www.drupal.org/project/wordpress_migrate/issues/3516516
     plugin: callback
     source: post_date
     callable: strtotime
diff --git a/src/WordPressMigrationGenerator.php b/src/WordPressMigrationGenerator.php
index 38837c1e9495b5f0532ec269b39018b9e454bc0b..0a2ef6528d05571f9e7849439c32aa02822c2069 100644
--- a/src/WordPressMigrationGenerator.php
+++ b/src/WordPressMigrationGenerator.php
@@ -206,15 +206,22 @@ class WordPressMigrationGenerator implements WordPressMigrationGeneratorInterfac
     if ($this->configuration['base_url'] !== '') {
       $process = $this->processUrlPathAliases($process);
     }
-    $process['uid']         = $this->uidMapping;
-    $process['body/format'] = [
-      'plugin' => 'default_value',
-      'default_value' => $this->configuration[$wordpress_type]['text_format'],
-    ];
-    $process['type']        = [
-      'plugin' => 'default_value',
-      'default_value' => $this->configuration[$wordpress_type]['type'],
-    ];
+    $process['uid'] = $this->uidMapping;
+    // Dynamically assign body field content to specified field.
+    if (isset($this->configuration[$wordpress_type]['body_field'])) {
+      $process[$this->configuration[$wordpress_type]['body_field']] = '@_content';
+      // body/summary = 'excerpt'
+      // body/value = 'content'.
+      $process['_content/format'] = [
+        'plugin' => 'default_value',
+        'default_value' => $this->configuration[$wordpress_type]['text_format'],
+      ];
+      $process['type']            = [
+        'plugin' => 'default_value',
+        'default_value' => $this->configuration[$wordpress_type]['type'],
+      ];
+    }
+
     if ($this->configuration['tag_vocabulary']) {
       $term_field = $this->termField($this->configuration[$wordpress_type]['type'], $this->configuration['tag_vocabulary']);
       if ($term_field) {
diff --git a/wordpress_migrate_ui/src/Form/BodyFieldSelectForm.php b/wordpress_migrate_ui/src/Form/BodyFieldSelectForm.php
new file mode 100644
index 0000000000000000000000000000000000000000..e753ee5bd1348054fa9f329a72da4d7ed1cb3109
--- /dev/null
+++ b/wordpress_migrate_ui/src/Form/BodyFieldSelectForm.php
@@ -0,0 +1,106 @@
+<?php
+
+namespace Drupal\wordpress_migrate_ui\Form;
+
+use Drupal\Core\Entity\EntityFieldManagerInterface;
+use Drupal\Core\Form\FormBase;
+use Drupal\Core\Form\FormStateInterface;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+use Drupal\wordpress_migrate_ui\Wizard\ImportWizard;
+
+/**
+ * Simple wizard step form.
+ *
+ * Designed to run on each content type (posts, pages).
+ * $form_state->getTemporaryValue('wizard'); Use CachedValues for state.
+ */
+class BodyFieldSelectForm extends FormBase {
+
+  /**
+   * Constructs a new BodyFieldSelectForm.
+   *
+   * @param \Drupal\Core\Entity\EntityFieldManagerInterface $entityFieldManager
+   *   The entity field manager.
+   */
+  public function __construct(
+    protected readonly EntityFieldManagerInterface $entityFieldManager,
+  ) {
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create(ContainerInterface $container): BodyFieldSelectForm|static {
+    return new static(
+      $container->get('entity_field.manager')
+    );
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getFormId(): string {
+    return 'wordpress_migrate_body_field_select_form';
+  }
+
+  /**
+   * Via $form_state know which content type is here, pick text_with_summary.
+   *
+   * Use $cached_values for setting this up.
+   *
+   * @param array $form
+   * @param \Drupal\Core\Form\FormStateInterface $form_state
+   *
+   * @return array
+   */
+  public function buildForm(array $form, FormStateInterface $form_state): array {
+    // Start clean in case we came here via Previous, then set again.
+    $cached_values = $form_state->getTemporaryValue('wizard');
+    unset($cached_values['body_field']);
+    $form_state->setTemporaryValue('wizard', $cached_values);
+    $wp_type = (string) $cached_values['wordpress_content_type'];
+    // String post or page. Key off it to set new attribute.
+    $field_map = $this->entityFieldManager->getFieldMap();
+    $needle_form_el_type = 'text_with_summary';
+    $drupal_content_type = (string) $cached_values[$wp_type]['type'];
+    $form['overview'] = [
+      '#markup' => $this->t('Here you may choose the \'Text (formatted, long, with summary)\' field to import WordPress @type body text into. Your <strong>:drupaltype</strong> content type must have a body field selected below, or
+      the new node will not have any body text or content. <br /> If missing, the field
+      can be created within <strong>:drupaltype</strong> fields via: Add Field: \'Formatted Text \'. Currently,
+       both the main body and the excerpt (summary) will get imported to the  field selected below.', ['@type' => $wp_type, ':drupaltype' => $drupal_content_type]),
+    ];
+    $options = ['' => $this->t('Do not import')];
+    $options = ImportWizard::getBundleFieldnameOptionsFromFieldmap($field_map, $cached_values, $options, $wp_type, $needle_form_el_type);
+
+    $form['body_field'] = [
+      '#type' => 'select',
+      '#title' => $this->t('Import WordPress @type body text field into:', ['@type' => $wp_type]),
+      '#options' => $options,
+      '#description' => $this->t('The @type body text will be imported to this field (within the field: full body, and excerpt/summary).', ['@type' => $wp_type]),
+    ];
+
+    // Select body automatically.
+    if (array_key_exists('body', $options)) {
+      $form['body_field']['#default_value'] = $options['body'];
+    }
+
+    return $form;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function validateForm(array &$form, FormStateInterface $form_state): void {
+  }
+
+  /**
+   * Uses $cached_values wizard $form_state to set results per content type.
+   */
+  public function submitForm(array &$form, FormStateInterface $form_state): void {
+    $cached_values = $form_state->getTemporaryValue('wizard');
+    $content_type = $cached_values['wordpress_content_type'];
+    $cached_values[$content_type]['body_field'] = $form_state->getValue('body_field');
+    $form_state->setTemporaryValue('wizard', $cached_values);
+  }
+
+}
diff --git a/wordpress_migrate_ui/src/Form/ContentSelectForm.php b/wordpress_migrate_ui/src/Form/ContentSelectForm.php
index 558c4fe9a165c2ec71c07d2bcfe9ecfa6b478e2e..9f444aa6a2ac0766cb7c23242d8f61a8bdbd26bf 100644
--- a/wordpress_migrate_ui/src/Form/ContentSelectForm.php
+++ b/wordpress_migrate_ui/src/Form/ContentSelectForm.php
@@ -56,7 +56,7 @@ class ContentSelectForm extends FormBase {
     $form_state->setTemporaryValue('wizard', $cached_values);
 
     $form['overview'] = [
-      '#markup' => $this->t('WordPress blogs contain two primary kinds of content, blog posts and pages. Here you may choose what types of Drupal nodes to create from each of those content types, or omit one or both from the import entirely.'),
+      '#markup' => $this->t('WordPress blogs contain two primary kinds of content, blog posts and pages. Here you may choose what types of Drupal nodes (content types) to create from posts and pages. Or you can omit one (but not both) from the migration group entirely.<br />Note: In Drupal fields are separate from content types. You may need to add fields to these content types in order for the imports to work correctly (For example, tags, categories, and featured image fields). In the next steps of the wizard, field options may be shown which are <em>not</em> associated to the selected content types below.'),
     ];
 
     // Get destination node type(s)
@@ -68,13 +68,13 @@ class ContentSelectForm extends FormBase {
 
     $form['blog_post_type'] = [
       '#type' => 'select',
-      '#title' => $this->t('Import WordPress blog posts as'),
+      '#title' => $this->t('Import WordPress blog posts as Drupal content type nodes:'),
       '#options' => $options,
     ];
 
     $form['page_type'] = [
       '#type' => 'select',
-      '#title' => $this->t('Import WordPress pages as'),
+      '#title' => $this->t('Import WordPress pages as Drupal content type nodes:'),
       '#options' => $options,
     ];
 
diff --git a/wordpress_migrate_ui/src/Form/ImageSelectForm.php b/wordpress_migrate_ui/src/Form/ImageSelectForm.php
index 2505375013903f6d37eafbc9d246d47d35e1ab4d..093502655cc571b754198171bb2dca3ddf239593 100644
--- a/wordpress_migrate_ui/src/Form/ImageSelectForm.php
+++ b/wordpress_migrate_ui/src/Form/ImageSelectForm.php
@@ -49,7 +49,7 @@ class ImageSelectForm extends FormBase {
     $form_state->setTemporaryValue('wizard', $cached_values);
 
     $form['overview'] = [
-      '#markup' => $this->t('Here you may choose the Drupal image field to import Wordpress featured images into.'),
+      '#markup' => $this->t('Here you may choose the Drupal image field to import WordPress featured images into. <br /><strong>Note</strong>: Make sure this field is connected to your Drupal import content type. It may not be associated.'),
     ];
 
     $field_map = $this->entityFieldManager->getFieldMap();
diff --git a/wordpress_migrate_ui/src/Wizard/ImportWizard.php b/wordpress_migrate_ui/src/Wizard/ImportWizard.php
index 48e8518b13dfb8e8577ec4993c8c9d1379a34567..33e119783efc81fd0ee0c8f60790de5bae4e6613 100644
--- a/wordpress_migrate_ui/src/Wizard/ImportWizard.php
+++ b/wordpress_migrate_ui/src/Wizard/ImportWizard.php
@@ -15,6 +15,9 @@ use Symfony\Component\EventDispatcher\EventDispatcherInterface;
 /**
  * Imports the wizard.
  *
+ * Inside the form wizard steps:
+ * $form_state->getTemporaryValue('wizard'); Use CachedValues for state.
+ *
  * @package Drupal\wordpress_migrate_ui\Wizard
  */
 class ImportWizard extends FormWizardBase {
@@ -118,6 +121,11 @@ class ImportWizard extends FormWizardBase {
           'title' => $this->t('Posts'),
           'values' => ['wordpress_content_type' => 'post'],
         ],
+        'body_field_select_post' => [
+          'form' => 'Drupal\wordpress_migrate_ui\Form\BodyFieldSelectForm',
+          'title' => $this->t('Body Field for Posts'),
+          'values' => ['wordpress_content_type' => 'post'],
+        ],
       ];
     }
     if (array_key_exists('page', $cached_values) && $cached_values['page']['type'] !== '') {
@@ -127,6 +135,11 @@ class ImportWizard extends FormWizardBase {
           'title' => $this->t('Pages'),
           'values' => ['wordpress_content_type' => 'page'],
         ],
+        'body_field_select_page' => [
+          'form' => 'Drupal\wordpress_migrate_ui\Form\BodyFieldSelectForm',
+          'title' => $this->t('Body Field for Pages'),
+          'values' => ['wordpress_content_type' => 'page'],
+        ],
       ];
     }
     $steps += [
@@ -158,4 +171,32 @@ class ImportWizard extends FormWizardBase {
     parent::finish($form, $form_state);
   }
 
+  /**
+   * For inside steps, select correct choice options for body text field.
+   *
+   * Keyed form select elements for the dropdown fields to pick from. Per
+   * whichever 'post' or 'page' + target content type picked earlier.
+   *
+   * @param array $field_map
+   * @param array $cached_vals
+   * @param $options
+   *   array Select menu element.
+   * @param $wp_type
+   *   string 'post' or 'page'.
+   */
+  public static function getBundleFieldnameOptionsFromFieldmap(array $field_map, array $cached_vals, array $options, string $wp_type, string $needle_form_el_type): array {
+    $drupal_content_type = $cached_vals[$wp_type]['type'];
+    foreach ($field_map as $entity_type => $fields) {
+      if ($entity_type === 'node') {
+        foreach ($fields as $field_name => $field_settings) {
+          // The magic.
+          if (($field_settings['type'] === $needle_form_el_type) && array_intersect($field_settings['bundles'], [$drupal_content_type])) {
+            $options[$field_name] = $field_name;
+          }
+        }
+      }
+    }
+    return $options;
+  }
+
 }