diff --git a/config/schema/taxonomy_menu.schema.yml b/config/schema/taxonomy_menu.schema.yml
index f353a1c..6674cd4 100644
--- a/config/schema/taxonomy_menu.schema.yml
+++ b/config/schema/taxonomy_menu.schema.yml
@@ -23,3 +23,6 @@ taxonomy_menu.taxonomy_menu.*:
     menu_parent:
       type: string
       label: 'Menu parent'
+    description_field_name:
+      type: string
+      label: 'Description field name'
diff --git a/src/Entity/TaxonomyMenu.php b/src/Entity/TaxonomyMenu.php
index 5d74e0d..bc14af2 100644
--- a/src/Entity/TaxonomyMenu.php
+++ b/src/Entity/TaxonomyMenu.php
@@ -84,6 +84,14 @@ class TaxonomyMenu extends ConfigEntityBase implements TaxonomyMenuInterface {
    */
   protected $menu_parent;
 
+  /**
+   * The name of the description field.
+   *
+   * @var string
+   *  The machine name of the field to be used as the description.
+   */
+  protected $description_field_name;
+
   /**
    * {@inheritdoc}
    */
@@ -112,6 +120,13 @@ class TaxonomyMenu extends ConfigEntityBase implements TaxonomyMenuInterface {
     return $this->menu_parent;
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function getDescriptionFieldName() {
+    return $this->description_field_name;
+  }
+
   /**
    * {@inheritdoc}
    */
diff --git a/src/Form/TaxonomyMenuForm.php b/src/Form/TaxonomyMenuForm.php
index e220afa..e9e7a8c 100644
--- a/src/Form/TaxonomyMenuForm.php
+++ b/src/Form/TaxonomyMenuForm.php
@@ -49,8 +49,44 @@ class TaxonomyMenuForm extends EntityForm {
       '#title' => $this->t('Vocabulary'),
       '#options' => $options,
       '#default_value' => $taxonomy_menu->getVocabulary(),
+      '#ajax' => array(
+        'callback' => '::ajaxReplaceDescriptionFieldForm',
+        'wrapper' => 'description-field-container',
+        'method' => 'replace',
+      ),
+    ];
+
+    // Description field selection.
+    $form['description_container'] = [
+      '#type' => 'container',
+      '#prefix' => '<div id="description-field-container">',
+      '#suffix' => '</div>',
     ];
 
+    $selected_vocabulary = $taxonomy_menu->getVocabulary();
+
+    if ($selected_vocabulary) {
+      $field_definitions = $this->entityManager->getFieldDefinitions('taxonomy_term', $selected_vocabulary);
+
+      // Build a field options array.
+      $field_options = ['' => $this->t('none')];
+      if (count($field_definitions)) {
+        foreach ($field_definitions as $field_name => $field_definition) {
+          $field_options[$field_name] = $field_definition->getName();
+        }
+      }
+
+      if (count($field_options)) {
+        $form['description_container']['description_field_name'] = [
+          '#type' => 'select',
+          '#title' => $this->t('Description field'),
+          '#description' => $this->t('Select the field to be used for the menu item description.'),
+          '#options' => $field_options,
+          '#default_value' => $taxonomy_menu->getDescriptionFieldName(),
+        ];
+      }
+    }
+
     // Menu selection.
     $options = [];
     $menu_storage = \Drupal::entityTypeManager()->getStorage('menu');
@@ -96,6 +132,13 @@ class TaxonomyMenuForm extends EntityForm {
     return $form;
   }
 
+  /**
+   * AJAX callback; Builds the description field selector.
+   */
+  public static function ajaxReplaceDescriptionFieldForm(array &$form, FormStateInterface $form_state) {
+    return $form['description_container'];
+  }
+
   /**
    * {@inheritdoc}
    */
diff --git a/src/Plugin/Menu/TaxonomyMenuMenuLink.php b/src/Plugin/Menu/TaxonomyMenuMenuLink.php
index 451713e..6bd21d2 100644
--- a/src/Plugin/Menu/TaxonomyMenuMenuLink.php
+++ b/src/Plugin/Menu/TaxonomyMenuMenuLink.php
@@ -104,8 +104,13 @@ class TaxonomyMenuMenuLink extends MenuLinkBase implements ContainerFactoryPlugi
     /** @var $link \Drupal\taxonomy\Entity\Term */
     $link = $this->entityManager->getStorage('taxonomy_term')
       ->load($this->pluginDefinition['metadata']['taxonomy_term_id']);
-    if (!empty($link)) {
-      return $link->getDescription();
+
+    // Get the description field name.
+    $taxonomy_menu = $this->entityManager->getStorage('taxonomy_menu')->load($this->pluginDefinition['metadata']['taxonomy_menu_id']);
+    $description_field_name = $taxonomy_menu->getDescriptionFieldName();
+
+    if (!empty($link) && $link->hasField($description_field_name)) {
+      return $link->{$description_field_name}->value;
     }
     return NULL;
   }
diff --git a/src/TaxonomyMenuInterface.php b/src/TaxonomyMenuInterface.php
index a8b7876..fd02d4f 100644
--- a/src/TaxonomyMenuInterface.php
+++ b/src/TaxonomyMenuInterface.php
@@ -32,6 +32,12 @@ interface TaxonomyMenuInterface extends ConfigEntityInterface {
    */
   public function getMenuParent();
 
+  /**
+   * @return string
+   *   The machine name of the field to be used as the description.
+   */
+  public function getDescriptionFieldName();
+
   /**
    * Get menu link plugin definitions
    *
