diff --git a/modules/message_recipient_entity/src/Plugin/MessageRecipient/CollectorExtender/ExcludeOwner.php b/modules/message_recipient_entity/src/Plugin/MessageRecipient/CollectorExtender/ExcludeOwner.php
index 0dbc365758280278ecd56e00fc20d58ca895ba4c..861254e42c6c87c91e8fdb7aeb3b99dbdd9f126a 100644
--- a/modules/message_recipient_entity/src/Plugin/MessageRecipient/CollectorExtender/ExcludeOwner.php
+++ b/modules/message_recipient_entity/src/Plugin/MessageRecipient/CollectorExtender/ExcludeOwner.php
@@ -23,6 +23,7 @@ use Drupal\user\EntityOwnerInterface;
   id: 'exclude_owner',
   stage: CollectorExtenderType::QUERY_ALTER,
   types: ['user'],
+  config_enforced: TRUE,
   label: new TranslatableMarkup('Exclude owner'),
   description: new TranslatableMarkup("Exclude message's associated entity owner if collected by this recipients collector."),
 )]
diff --git a/modules/message_recipient_ui/src/Form/RecipientsCollectorFormBase.php b/modules/message_recipient_ui/src/Form/RecipientsCollectorFormBase.php
index bdd0c749769da0e2ae7d7403196a75b2536d538f..12ef32cecc2254949c71d8a0c4b726b68917c335 100644
--- a/modules/message_recipient_ui/src/Form/RecipientsCollectorFormBase.php
+++ b/modules/message_recipient_ui/src/Form/RecipientsCollectorFormBase.php
@@ -135,7 +135,14 @@ abstract class RecipientsCollectorFormBase extends FormBase {
 
     // Store extenders settings.
     $extenders = $this->getAllExtenders();
+    /** @var \Drupal\message_recipient\CollectorExtenderInterface $extender */
     foreach ($extenders as $extender_id => $extender) {
+      // Do not submit the extender in case it is not enforced unless it is
+      // enabled. And remove it in case it has been added before.
+      if (!$extender->isConfigEnforced() && empty($form_state->getValue(['extenders', 'status', $extender_id]))) {
+        $this->recipientsCollector->removeExtender($extender_id);
+        continue;
+      }
       $extender_form_state = SubformState::createForSubform($form['extenders']['settings'][$extender_id], $form, $form_state);
       $extender->submitConfigurationForm($form['extenders']['settings'][$extender_id], $extender_form_state, $this->recipientsCollector);
     }
@@ -173,15 +180,25 @@ abstract class RecipientsCollectorFormBase extends FormBase {
     $form['extenders'] = [
       '#type' => 'container',
       '#tree' => TRUE,
-      '#states' => [
-        'visible' => [
-          ':input[name="extenders_description"]' => [
-            'checked' => TRUE,
-          ],
-        ],
-      ],
     ];
 
+    $form['extenders']['status']['title'] = [
+      '#type' => 'item',
+      '#title' => $this->t('Enabled optional extenders:')
+    ];
+
+    /** @var \Drupal\message_recipient\CollectorExtenderInterface $extender */
+    foreach ($extenders as $extender_id => $extender) {
+      if ($extender->isConfigEnforced()) {
+        continue;
+      }
+      $form['extenders']['status'][$extender_id] = [
+        '#type' => 'checkbox',
+        '#title' => $extender->label(),
+        '#default_value' => in_array($extender_id, array_keys($this->recipientsCollector->getExtenders()->getInstanceIds())),
+      ];
+    }
+
     // Add vertical tabs containing the settings for the extenders.
     $form['extenders']['extender_settings'] = [
       '#title' => $this->t('Collector extender settings'),
@@ -190,6 +207,7 @@ abstract class RecipientsCollectorFormBase extends FormBase {
       '#description_display' => 'before',
     ];
 
+    // Configs for each extender.
     foreach ($extenders as $extender_id => $extender) {
       $form['extenders']['settings'][$extender_id] = [
         '#type' => 'details',
@@ -198,6 +216,16 @@ abstract class RecipientsCollectorFormBase extends FormBase {
         '#parents' => ['extenders', $extender_id, 'settings'],
       ];
 
+      if (!$extender->isConfigEnforced()) {
+        $form['extenders']['settings'][$extender_id]['#states'] = [
+          'visible' => [
+            ':input[name="extenders[status][' . $extender_id . ']"]' => [
+              'checked' => TRUE,
+            ],
+          ],
+        ];
+      }
+
       $extender_form_state = SubformState::createForSubform($form['extenders']['settings'][$extender_id], $form, $form_state);
       $form['extenders']['settings'][$extender_id] += $extender->buildConfigurationForm($form['extenders']['settings'][$extender_id], $extender_form_state, $this->recipientsCollector);
     }
diff --git a/src/Attribute/CollectorExtender.php b/src/Attribute/CollectorExtender.php
index 4ad60948dd53ac07f82c9e3a79544f87d39e353e..d1dadb740a2674247f3a3ee155798be4bf1302f4 100644
--- a/src/Attribute/CollectorExtender.php
+++ b/src/Attribute/CollectorExtender.php
@@ -21,6 +21,8 @@ class CollectorExtender extends Plugin {
    *   The plugin ID.
    * @param \Drupal\message_recipient\CollectorExtenderType $stage
    *   The stage the extender is acting in, e.g. 'query_alter', 'post_collect'.
+   * @param bool $config_enforced
+   *   Whether the config for the plugin is enforced or not.
    * @param array $types
    *   (optional) The applicable recipients collector types, e.g. 'user',
    *   'email'.
@@ -33,6 +35,7 @@ class CollectorExtender extends Plugin {
     public readonly string $id,
     public readonly CollectorExtenderType $stage,
     public readonly array $types = [],
+    public readonly bool $config_enforced = FALSE,
     public readonly ?TranslatableMarkup $label = NULL,
     public readonly ?TranslatableMarkup $description = NULL,
   ) {}
diff --git a/src/CollectorExtenderBase.php b/src/CollectorExtenderBase.php
index 4b133b3f4cc3c6b8f7d99e4ade9ac23d0b063e5a..f43b948c3417894be08eb2cca0ed9b90bad2694f 100644
--- a/src/CollectorExtenderBase.php
+++ b/src/CollectorExtenderBase.php
@@ -78,6 +78,13 @@ abstract class CollectorExtenderBase extends PluginBase implements CollectorExte
     return $this->pluginDefinition['types'];
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function isConfigEnforced(): bool {
+    return $this->pluginDefinition['config_enforced'];
+  }
+
   /**
    * {@inheritdoc}
    */
diff --git a/src/CollectorExtenderInterface.php b/src/CollectorExtenderInterface.php
index e11fc7999e813c3e897ff6af3a2c85bf92e080f5..9b2d395b3dd1b04e047b2d520e949950a8da60e6 100644
--- a/src/CollectorExtenderInterface.php
+++ b/src/CollectorExtenderInterface.php
@@ -59,6 +59,14 @@ interface CollectorExtenderInterface extends PluginInspectionInterface, Configur
    */
   public function getTypes(): array;
 
+  /**
+   * Check if whether the collector extender config is enforced.
+   *
+   * @return bool
+   *   True if the collector extender config is enforced, false otherwise.
+   */
+  public function isConfigEnforced(): bool;
+
   /**
    * Check if whether the collector extender is applicable.
    *
diff --git a/src/Plugin/MessageRecipient/CollectorExtender/IncludeActor.php b/src/Plugin/MessageRecipient/CollectorExtender/IncludeActor.php
index 4a29c4ccee6ce3026a9e9ce7f2eb0e807ea0605f..951d47f59dca058c101b91605e1e175964f50839 100644
--- a/src/Plugin/MessageRecipient/CollectorExtender/IncludeActor.php
+++ b/src/Plugin/MessageRecipient/CollectorExtender/IncludeActor.php
@@ -23,6 +23,7 @@ use Symfony\Component\DependencyInjection\ContainerInterface;
   id: 'include_actor',
   stage: CollectorExtenderType::QUERY_ALTER,
   types: ['user'],
+  config_enforced: TRUE,
   label: new TranslatableMarkup('Include actor'),
   description: new TranslatableMarkup('Includes actor if collected by this recipients collector.'),
 )]
diff --git a/src/Plugin/MessageRecipient/CollectorExtender/IncludeBlocked.php b/src/Plugin/MessageRecipient/CollectorExtender/IncludeBlocked.php
index 50a3beb369a5436374022740a5ec790f8917d9a8..76fe67401292a710ba43b6fefaecd67327197a69 100644
--- a/src/Plugin/MessageRecipient/CollectorExtender/IncludeBlocked.php
+++ b/src/Plugin/MessageRecipient/CollectorExtender/IncludeBlocked.php
@@ -21,6 +21,7 @@ use Drupal\message_recipient\RecipientsCollectorInterface;
   id: 'include_blocked_users',
   stage: CollectorExtenderType::QUERY_ALTER,
   types: ['user'],
+  config_enforced: TRUE,
   label: new TranslatableMarkup('Include blocked users'),
   description: new TranslatableMarkup('Includes any blocked user collected by this recipients collector.'),
 )]