diff --git a/src/Form/FacetForm.php b/src/Form/FacetForm.php
index 9cc55a2..a6188ba 100644
--- a/src/Form/FacetForm.php
+++ b/src/Form/FacetForm.php
@@ -129,6 +129,11 @@ public function form(array $form, FormStateInterface $form_state) {
     foreach ($this->widgetPluginManager->getDefinitions() as $widget_id => $definition) {
       $widget_options[$widget_id] = !empty($definition['label']) ? $definition['label'] : $widget_id;
     }
+    $widget_options = array_filter($widget_options, function ($widget_id) use ($facet) {
+      $widget = $this->widgetPluginManager->createInstance($widget_id);
+      return $widget->supportsFacet($facet);
+    }, ARRAY_FILTER_USE_KEY);
+
     $form['widget'] = [
       '#type' => 'radios',
       '#title' => $this->t('Widget'),
@@ -177,6 +182,10 @@ public function form(array $form, FormStateInterface $form_state) {
       $all_processors = $form_state->get('processors');
     }
     $enabled_processors = $facet->getProcessors(TRUE);
+    $all_processors = array_filter($all_processors, function ($id) use ($facet) {
+      $processor = $this->processorPluginManager->createInstance($id);
+      return $processor->supportsFacet($facet);
+    }, ARRAY_FILTER_USE_KEY);
 
     $stages = $this->processorPluginManager->getProcessingStages();
     $processors_by_stage = [];
diff --git a/src/Processor/ProcessorInterface.php b/src/Processor/ProcessorInterface.php
index 778fb80..d5bef84 100644
--- a/src/Processor/ProcessorInterface.php
+++ b/src/Processor/ProcessorInterface.php
@@ -111,4 +111,6 @@ public function isHidden();
    */
   public function getDescription();
 
+  public function supportsFacet(FacetInterface $facet);
+
 }
diff --git a/src/Processor/ProcessorPluginBase.php b/src/Processor/ProcessorPluginBase.php
index 7f832c3..8ed6de4 100644
--- a/src/Processor/ProcessorPluginBase.php
+++ b/src/Processor/ProcessorPluginBase.php
@@ -107,4 +107,11 @@ public function calculateDependencies() {
     return $this->dependencies;
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function supportsFacet(FacetInterface $facet) {
+    return TRUE;
+  }
+
 }
diff --git a/src/Widget/WidgetPluginBase.php b/src/Widget/WidgetPluginBase.php
index bc5fbc6..b035750 100644
--- a/src/Widget/WidgetPluginBase.php
+++ b/src/Widget/WidgetPluginBase.php
@@ -245,4 +245,11 @@ public function isPropertyRequired($name, $type) {
     return FALSE;
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function supportsFacet(FacetInterface $facet) {
+    return TRUE;
+  }
+
 }
diff --git a/src/Widget/WidgetPluginInterface.php b/src/Widget/WidgetPluginInterface.php
index 68dd9a1..c5028e5 100644
--- a/src/Widget/WidgetPluginInterface.php
+++ b/src/Widget/WidgetPluginInterface.php
@@ -51,6 +51,8 @@ public function getQueryType(array $query_types);
    */
   public function isPropertyRequired($name, $type);
 
+  public function supportsFacet(FacetInterface $facet);
+
   /**
    * Provides a configuration form for this widget.
    *
