diff --git a/src/Element/WebformEmailConfirm.php b/src/Element/WebformEmailConfirm.php
index 5c2654d3..7d476bc5 100644
--- a/src/Element/WebformEmailConfirm.php
+++ b/src/Element/WebformEmailConfirm.php
@@ -33,6 +33,7 @@ class WebformEmailConfirm extends FormElement {
       '#pre_render' => [
         [$class, 'preRenderCompositeFormElement'],
       ],
+      '#element_validate' => [[$class, 'validateWebformEmailConfirm']],
       '#theme_wrappers' => ['container'],
       '#required' => FALSE,
     ];
@@ -95,21 +96,15 @@ class WebformEmailConfirm extends FormElement {
     $element['mail_2']['#attributes']['class'][] = 'webform-email-confirm';
     $element['mail_2']['#value'] = empty($element['#value']) ? NULL : $element['#value']['mail_2'];
 
-    // Remove properties that are being applied to the sub elements.
+    // Don't require the main element.
     $element['#required'] = FALSE;
-    unset($element['#title']);
+    // Set #title to be invisible so that it is still available
+    $element['#title_display'] = 'invisible';
+
+    // Remove properties that are being applied to the sub elements.
     unset($element['#description']);
     unset($element['#maxlength']);
-    unset($element['#atributes']);
-
-    // Set validation.
-    if (isset($element['#element_validate'])) {
-      $element['#element_validate'] = array_merge([[get_called_class(), 'validateWebformEmailConfirm']], $element['#element_validate']);
-    }
-    else {
-      $element['#element_validate'] = [[get_called_class(), 'validateWebformEmailConfirm']];
-    }
-
+    unset($element['#attributes']);
     return $element;
   }
 
diff --git a/src/WebformElementBase.php b/src/WebformElementBase.php
index c6fd223a..d3383aea 100644
--- a/src/WebformElementBase.php
+++ b/src/WebformElementBase.php
@@ -1229,10 +1229,10 @@ class WebformElementBase extends PluginBase implements WebformElementInterface {
     $webform_id = $element['#webform'];
     $sid = $element['#webform_submission'];
     $name = $element['#name'];
-    $value = $element['#value'];
+    $value = NestedArray::getValue($form_state->getValues(), $element['#parents']);
 
     // Skip empty unique fields or arrays (aka #multiple).
-    if ($value === '' || is_array($element['#value'])) {
+    if ($value === '' || is_array($value)) {
       return;
     }
 
@@ -1254,7 +1254,7 @@ class WebformElementBase extends PluginBase implements WebformElementInterface {
       elseif (isset($element['#title'])) {
         $t_args = [
           '%name' => empty($element['#title']) ? $element['#parents'][0] : $element['#title'],
-          '%value' => $element['#value'],
+          '%value' => $value,
         ];
         $form_state->setError($element, t('The value %value has already been submitted once for the %name element. You may have already submitted this webform, or you need to use a different value.', $t_args));
       }
