diff --git a/modules/product/src/Entity/ProductAttribute.php b/modules/product/src/Entity/ProductAttribute.php
index aad9adf..05a329f 100644
--- a/modules/product/src/Entity/ProductAttribute.php
+++ b/modules/product/src/Entity/ProductAttribute.php
@@ -36,11 +36,13 @@ use Drupal\Core\Entity\EntityStorageInterface;
  *   entity_keys = {
  *     "id" = "id",
  *     "label" = "label",
+ *     "elementLabel" = "elementLabel",
  *     "uuid" = "uuid"
  *   },
  *   config_export = {
  *     "id",
  *     "label",
+ *     "elementLabel",
  *     "elementType"
  *   },
  *   links = {
@@ -68,6 +70,13 @@ class ProductAttribute extends ConfigEntityBundleBase implements ProductAttribut
   protected $label;
 
   /**
+   * The customer facing attribute label.
+   *
+   * @var string
+   */
+  protected $elementLabel;
+
+  /**
    * The attribute element type.
    *
    * @var string
@@ -108,4 +117,11 @@ class ProductAttribute extends ConfigEntityBundleBase implements ProductAttribut
     $value_storage->delete($values);
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function getElementLabel() {
+    return $this->elementLabel;
+  }
+
 }
diff --git a/modules/product/src/Entity/ProductAttributeInterface.php b/modules/product/src/Entity/ProductAttributeInterface.php
index 28b8f04..7488f71 100644
--- a/modules/product/src/Entity/ProductAttributeInterface.php
+++ b/modules/product/src/Entity/ProductAttributeInterface.php
@@ -25,4 +25,12 @@ interface ProductAttributeInterface extends ConfigEntityInterface {
    */
   public function getElementType();
 
+  /**
+   * Gets the attribute customer facing label.
+   *
+   * @return string
+   *   The attribute element label.
+   */
+  public function getElementLabel();
+
 }
diff --git a/modules/product/src/Form/ProductAttributeForm.php b/modules/product/src/Form/ProductAttributeForm.php
index a76f316..9e12271 100644
--- a/modules/product/src/Form/ProductAttributeForm.php
+++ b/modules/product/src/Form/ProductAttributeForm.php
@@ -51,6 +51,14 @@ class ProductAttributeForm extends BundleEntityFormBase {
       '#maxlength' => 255,
       '#default_value' => $attribute->label(),
       '#required' => TRUE,
+      '#description' => $this->t('The admin facing attribute name which appears on administrative pages (e.g.- My T-shirt Colors).'),
+    ];
+    $form['elementLabel'] = [
+      '#type' => 'textfield',
+      '#title' => $this->t('Label'),
+      '#maxlength' => 255,
+      '#default_value' => $attribute->getElementLabel(),
+      '#description' => $this->t('The customer facing label which appears on any Add to Cart form (e.g.- Color). Leave empty to use admin facing name for this purpose. Note that this label can be overridden for each attribute reference field saved on a variation type.'),
     ];
     $form['id'] = [
       '#type' => 'machine_name',
diff --git a/modules/product/src/Form/ProductVariationTypeForm.php b/modules/product/src/Form/ProductVariationTypeForm.php
index b6d952f..e58ec3e 100644
--- a/modules/product/src/Form/ProductVariationTypeForm.php
+++ b/modules/product/src/Form/ProductVariationTypeForm.php
@@ -94,16 +94,31 @@ class ProductVariationTypeForm extends CommerceBundleEntityFormBase {
       ];
     }
 
-    $used_attributes = [];
+    $used_attributes = $attribute_field = [];
+    $path = '';
     if (!$variation_type->isNew()) {
       $attribute_map = $this->attributeFieldManager->getFieldMap($variation_type->id());
       $used_attributes = array_column($attribute_map, 'attribute_id');
+      if (!empty($used_attributes)) {
+        $attribute_field = array_combine($used_attributes, array_column($attribute_map, 'field_name'));
+        $bundle = $variation_type->getEntityType()->getBundleOf();
+        $path = $this->getDestinationArray()['destination'] . "/fields/{$bundle}.{$variation_type->id()}.";
+      }
     }
     /** @var \Drupal\commerce_product\Entity\ProductAttributeInterface[] $attributes */
     $attributes = $this->entityTypeManager->getStorage('commerce_product_attribute')->loadMultiple();
-    $attribute_options = array_map(function ($attribute) {
+    $attribute_options = array_map(function ($attribute) use ($path, $attribute_field) {
       /** @var \Drupal\commerce_product\Entity\ProductAttributeInterface $attribute */
-      return $attribute->label();
+      $id = $attribute->id();
+      $url = $attribute->url();
+      $label = $attribute->label();
+      if (isset($attribute_field[$id])) {
+        $element_label = $attribute->getElementLabel();
+        $label = empty($element_label) ? $label : $element_label;
+        $label = $this->t('<a href=":href" target="_blank">%label</a>', ['%label' => $label, ':href' => $path . $attribute_field[$id]]);
+        return $label . ' => ' . $this->t('<a href=":href" target="_blank">@id</a>', [':href' => $url, '@id' => $id]);
+      }
+      return $this->t('%label => <a href=":href" target="_blank">@id</a>', ['%label' => $label, ':href' => $url, '@id' => $id]);
     }, $attributes);
 
     $form['original_attributes'] = [
diff --git a/modules/product/src/ProductAttributeFieldManager.php b/modules/product/src/ProductAttributeFieldManager.php
index 694d27c..54664ad 100644
--- a/modules/product/src/ProductAttributeFieldManager.php
+++ b/modules/product/src/ProductAttributeFieldManager.php
@@ -183,10 +183,11 @@ class ProductAttributeFieldManager implements ProductAttributeFieldManagerInterf
       $field_storage->save();
     }
     if (empty($field)) {
+      $label = $attribute->getElementLabel();
       $field = FieldConfig::create([
         'field_storage' => $field_storage,
         'bundle' => $variation_type_id,
-        'label' => $attribute->label(),
+        'label' => empty($label) ? $attribute->label() : $label,
         'required' => TRUE,
         'settings' => [
           'handler' => 'default',
diff --git a/modules/product/src/ProductAttributeListBuilder.php b/modules/product/src/ProductAttributeListBuilder.php
index 327afa3..9702373 100644
--- a/modules/product/src/ProductAttributeListBuilder.php
+++ b/modules/product/src/ProductAttributeListBuilder.php
@@ -4,6 +4,7 @@ namespace Drupal\commerce_product;
 
 use Drupal\Core\Config\Entity\ConfigEntityListBuilder;
 use Drupal\Core\Entity\EntityInterface;
+use Drupal\Core\Render\Markup;
 
 /**
  * Defines the list builder for product attributes.
@@ -14,7 +15,8 @@ class ProductAttributeListBuilder extends ConfigEntityListBuilder {
    * {@inheritdoc}
    */
   public function buildHeader() {
-    $header['label'] = $this->t('Attribute name');
+    $header['label_id'] = $this->t('Attribute name => ID');
+    $header['values'] = $this->t('Values');
     return $header + parent::buildHeader();
   }
 
@@ -22,7 +24,27 @@ class ProductAttributeListBuilder extends ConfigEntityListBuilder {
    * {@inheritdoc}
    */
   public function buildRow(EntityInterface $entity) {
-    $row['label'] = $entity->label();
+    $values = [];
+    $i = 0;
+    foreach ($entity->getValues() as $attribute_value) {
+      if ($i < 100) {
+        $value = $attribute_value->getName();
+        $values[] = strlen($value) > 10 ? substr_replace($value, '...', 7) : $value;
+      }
+      $i++;
+    }
+    if (($count = count($values)) && $i > $count) {
+      $more = Markup::create('<strong> (' . ($i - $count) . ' ' . $this->t('more values') . ' ...)</strong>');
+      $values = $this->t('@values @more', ['@values' => implode(', ', $values), '@more' => $more]);
+    }
+    else {
+      $values = implode(', ', $values);
+    }
+    $element_label = $entity->getElementLabel();
+    $label = empty($element_label) ? '' : "({$element_label})<br />";
+    $row['label_id'] = Markup::create('<em>' . $entity->label() . '</em><br />' . $label . '=> ' . $entity->id());
+    $row['values'] = $values;
+
     return $row + parent::buildRow($entity);
   }
 
