diff --git a/src/Plugin/Field/FieldWidget/OptionsShsWidget.php b/src/Plugin/Field/FieldWidget/OptionsShsWidget.php
index 099ea50..e71cac5 100644
--- a/src/Plugin/Field/FieldWidget/OptionsShsWidget.php
+++ b/src/Plugin/Field/FieldWidget/OptionsShsWidget.php
@@ -324,6 +324,10 @@ class OptionsShsWidget extends OptionsSelectWidget implements ContainerFactoryPl
    * {@inheritDoc}
    */
   public function massageFormValues(array $values, array $form, FormStateInterface $form_state) {
+    if (!isset($values[0]['target_id']) || ($values[0]['target_id'] === '')) {
+      return NULL;
+    }
+
     // Check save lineage setting.
     $save_lineage = $this->getSetting('save_lineage');
     if ($save_lineage) {
@@ -333,13 +337,14 @@ class OptionsShsWidget extends OptionsSelectWidget implements ContainerFactoryPl
       $vid = FALSE;
       // Get tid set.
       if (!empty($values)) {
+        $values = explode(',', $values[0]['target_id']);
         foreach ($values as $delta => $value) {
-          if (isset($value['target_id'])) {
+          if ($value) {
             // Store target tid.
-            $tids[] = $value['target_id'];
+            $tids[] = $value;
             if (empty($vid)) {
               // Load vid once, simpler to get the vocab ref this way.
-              $term = Term::load($value['target_id']);
+              $term = Term::load($value);
               $vid = $term->bundle();
             }
           }
@@ -358,10 +363,6 @@ class OptionsShsWidget extends OptionsSelectWidget implements ContainerFactoryPl
       }
     }
 
-    if (!isset($values[0]['target_id']) || ($values[0]['target_id'] === '')) {
-      return NULL;
-    }
-
     $exploded_values = [];
 
     if (strpos($values[0]['target_id'], ',') !== FALSE) {
