diff --git a/src/Plugin/Field/FieldWidget/ConditionsWidget.php b/src/Plugin/Field/FieldWidget/ConditionsWidget.php
index e040bc7a..565c8156 100644
--- a/src/Plugin/Field/FieldWidget/ConditionsWidget.php
+++ b/src/Plugin/Field/FieldWidget/ConditionsWidget.php
@@ -145,11 +145,33 @@ class ConditionsWidget extends WidgetBase implements ContainerFactoryPluginInter
    */
   public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {
     $values = [];
-    foreach ($items->getValue() as $value) {
-      $values[] = [
-        'plugin' => $value['target_plugin_id'],
-        'configuration' => $value['target_plugin_configuration'],
-      ];
+
+    $input = $form_state->getUserInput();
+    if (!empty($input) && !empty($input[$items->getName()]['form'])) {
+      $input_conditions = $input[$items->getName()]['form'];
+      $entity = $items->getEntity();
+      /** @var \Drupal\commerce\ConditionManagerInterface $plugin_manager */
+      $plugin_manager = \Drupal::service('plugin.manager.commerce_condition');
+
+      $definitions = $plugin_manager->getFilteredDefinitions($entity->getEntityTypeId(), $this->getSetting('entity_types'));
+      foreach ($items->getValue() as $value) {
+        $category = (string) $definitions[$value['target_plugin_id']]['category'];
+        $category_id = preg_replace('/[^a-zA-Z\-]/', '_', strtolower($category));
+        if (!empty($input_conditions[$category_id][$value['target_plugin_id']]['configuration']['form'])) {
+          $values[] = [
+            'plugin' => $value['target_plugin_id'],
+            'configuration' => $input_conditions[$category_id][$value['target_plugin_id']]['configuration']['form'],
+          ];
+        }
+      }
+    }
+    else {
+      foreach ($items->getValue() as $value) {
+        $values[] = [
+          'plugin' => $value['target_plugin_id'],
+          'configuration' => $value['target_plugin_configuration'],
+        ];
+      }
     }
 
     $element['form'] = [
