diff --git a/flag.module b/flag.module
index f0cb498..af12bab 100644
--- a/flag.module
+++ b/flag.module
@@ -632,3 +632,19 @@ function flag_flag_delete(FlagInterface $flag) {
     $action->delete();
   }
 }
+
+/**
+ * Implements hook_ENTITY_TYPE_load().
+ *
+ * @param $entities
+ */
+function flag_flag_load($entities) {
+  foreach ($entities as $flag) {
+    /** @var \Drupal\flag\FlagType\FlagTypeBase $flag_type */
+    /** @var \Drupal\flag\Entity\Flag $flag */
+    $flag_type = $flag->getFlagTypePlugin();
+    $configuration = $flag_type->getConfiguration();
+    \Drupal::moduleHandler()->alter('flag_options', $configuration, $flag);
+    $flag_type->setConfiguration($configuration);
+  }
+}
diff --git a/src/FlagType/FlagTypeBase.php b/src/FlagType/FlagTypeBase.php
index f6d6369..cb676e7 100644
--- a/src/FlagType/FlagTypeBase.php
+++ b/src/FlagType/FlagTypeBase.php
@@ -105,7 +105,17 @@ abstract class FlagTypeBase extends PluginBase implements FlagTypePluginInterfac
    *   The form state.
    */
   public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {
-    // Override this.
+    $configuration = $this->getConfiguration();
+
+    foreach (array_keys($configuration) as $key) {
+      $value = $form_state->getValue($key);
+
+      if (is_array($value)) {
+        $value = array_filter($value);
+      }
+
+      $this->configuration[$key] = $value;
+    }
   }
 
   /**
