diff --git a/entityqueue.services.yml b/entityqueue.services.yml
index 4d88935..cb5d315 100644
--- a/entityqueue.services.yml
+++ b/entityqueue.services.yml
@@ -2,3 +2,8 @@ services:
   plugin.manager.entityqueue.handler:
     class: Drupal\entityqueue\EntityQueueHandlerManager
     arguments: ['@container.namespaces', '@cache.default', '@module_handler']
+  entityqueue.entity_queue_config_subscriber:
+    class: Drupal\entityqueue\EventSubscriber\EntityQueueConfigSubscriber
+    arguments: ['@plugin.manager.entityqueue.handler']
+    tags:
+      - { name: event_subscriber }
diff --git a/src/EntityQueueHandlerBase.php b/src/EntityQueueHandlerBase.php
index 67f3022..da395f0 100644
--- a/src/EntityQueueHandlerBase.php
+++ b/src/EntityQueueHandlerBase.php
@@ -3,6 +3,7 @@
 namespace Drupal\entityqueue;
 
 use Drupal\Component\Plugin\PluginBase;
+use Drupal\Core\Config\Config;
 use Drupal\Core\Entity\EntityStorageInterface;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\StringTranslation\StringTranslationTrait;
@@ -126,4 +127,14 @@ abstract class EntityQueueHandlerBase extends PluginBase implements EntityQueueH
    */
   public function onQueuePostLoad(EntityQueueInterface $queue, EntityStorageInterface $storage) { }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function onQueueConfigSave(Config $config) { }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function onQueueConfigDelete(Config $config) { }
+
 }
diff --git a/src/EntityQueueHandlerInterface.php b/src/EntityQueueHandlerInterface.php
index 0731c08..10880a0 100644
--- a/src/EntityQueueHandlerInterface.php
+++ b/src/EntityQueueHandlerInterface.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\entityqueue;
 
+use Drupal\Core\Config\Config;
 use Drupal\Core\Entity\EntityStorageInterface;
 use Drupal\Core\Plugin\PluginFormInterface;
 use Drupal\Component\Plugin\ConfigurablePluginInterface;
@@ -104,4 +105,20 @@ interface EntityQueueHandlerInterface extends PluginFormInterface, ConfigurableP
    */
   public function onQueuePostLoad(EntityQueueInterface $queue, EntityStorageInterface $storage);
 
+  /**
+   * Acts when a config object is saved.
+   *
+   * @param \Drupal\Core\Config\Config $config
+   *   A config object representing an entity queue config entity.
+   */
+  public function onQueueConfigSave(Config $config);
+
+  /**
+   * Acts when a config object is deleted.
+   *
+   * @param \Drupal\Core\Config\Config $config
+   *   A config object representing an entity queue config entity.
+   */
+  public function onQueueConfigDelete(Config $config);
+
 }
diff --git a/src/EventSubscriber/EntityQueueConfigSubscriber.php b/src/EventSubscriber/EntityQueueConfigSubscriber.php
new file mode 100644
index 0000000..d96ad8f
--- /dev/null
+++ b/src/EventSubscriber/EntityQueueConfigSubscriber.php
@@ -0,0 +1,71 @@
+<?php
+
+namespace Drupal\entityqueue\EventSubscriber;
+
+use Drupal\Core\Config\ConfigCrudEvent;
+use Drupal\Core\Config\ConfigEvents;
+use Drupal\entityqueue\EntityQueueHandlerManager;
+use Symfony\Component\EventDispatcher\EventSubscriberInterface;
+
+/**
+ * Invokes config-specific methods on entity queue handler plugins.
+ */
+class EntityQueueConfigSubscriber implements EventSubscriberInterface {
+
+  /**
+   * The entity queue handler manager.
+   *
+   * @var \Drupal\entityqueue\EntityQueueHandlerManager
+   */
+  protected $entityQueueHandlerManager;
+
+  /**
+   * Constructs a new class object.
+   *
+   * @param \Drupal\entityqueue\EntityQueueHandlerManager
+   *   The entity queue handler manager.
+   */
+  public function __construct(EntityQueueHandlerManager $handler_manager) {
+    $this->entityQueueHandlerManager = $handler_manager;
+  }
+
+  /**
+   * Calls the onConfigSave() method on the handler plugin.
+   *
+   * @param ConfigCrudEvent $event
+   *   The configuration event.
+   */
+  public function onConfigSave(ConfigCrudEvent $event) {
+    $config = $event->getConfig();
+    if (substr($config->getName(), 0, 25) == 'entityqueue.entity_queue.') {
+      $configuration = $config->get('handler_configuration') ?: [];
+      $handler = $this->entityQueueHandlerManager->createInstance($config->get('handler'), $configuration);
+      $handler->onQueueConfigSave($config);
+    }
+  }
+
+  /**
+   * Calls the onConfigDelete() method on the handler plugin.
+   *
+   * @param ConfigCrudEvent $event
+   *   The configuration event.
+   */
+  public function onConfigDelete(ConfigCrudEvent $event) {
+    $config = $event->getConfig();
+    if (substr($config->getName(), 0, 25) == 'entityqueue.entity_queue.') {
+      $configuration = $config->get('handler_configuration') ?: [];
+      $handler = $this->entityQueueHandlerManager->createInstance($config->get('handler'), $configuration);
+      $handler->onQueueConfigDelete($config);
+    }
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  static function getSubscribedEvents() {
+    $events[ConfigEvents::SAVE][] = array('onConfigSave', 0);
+    $events[ConfigEvents::DELETE][] = array('onConfigDelete', 0);
+    return $events;
+  }
+
+}
diff --git a/src/Plugin/EntityQueueHandler/Simple.php b/src/Plugin/EntityQueueHandler/Simple.php
index 780a6b8..cf1845f 100644
--- a/src/Plugin/EntityQueueHandler/Simple.php
+++ b/src/Plugin/EntityQueueHandler/Simple.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\entityqueue\Plugin\EntityQueueHandler;
 
+use Drupal\Core\Config\Config;
 use Drupal\Core\Entity\EntityStorageInterface;
 use Drupal\entityqueue\Entity\EntitySubqueue;
 use Drupal\entityqueue\EntityQueueHandlerBase;
@@ -49,15 +50,15 @@ class Simple extends EntityQueueHandlerBase {
   /**
    * {@inheritdoc}
    */
-  public function onQueuePostSave(EntityQueueInterface $queue, EntityStorageInterface $storage, $update = TRUE) {
+  public function onQueueConfigSave(Config $config) {
     // Make sure that every simple queue has a subqueue.
-    if (!$update) {
-      $subqueue = EntitySubqueue::create([
-        'queue' => $queue->id(),
-        'name' => $queue->id(),
-        'title' => $queue->label(),
-      ]);
-      $subqueue->save();
+    $queue_id = $config->get('id');
+    if (!$subqueue = EntitySubqueue::load($config->get('id'))) {
+      EntitySubqueue::create([
+        'queue' => $queue_id,
+        'name' => $queue_id,
+        'title' => $config->get('label'),
+      ])->save();
     }
   }
 
