diff --git a/Changes b/Changes
index 6bcc53d..8f3d0cb 100755
--- a/Changes
+++ b/Changes
@@ -42,6 +42,7 @@
         - Support for inactive buttongroup items.
         - Support default values for state.
         - Introduce state manager (#119).
+        - Support default value for plugin toggle embeddings.
 
 0.42 2021-06-18
         - Added GitHub based CI for perl.
diff --git a/dev/js/spec/pluginSpec.js b/dev/js/spec/pluginSpec.js
index edffa59..973ad16 100644
--- a/dev/js/spec/pluginSpec.js
+++ b/dev/js/spec/pluginSpec.js
@@ -243,6 +243,72 @@
       KorAP.Panel["result"] = undefined;
     });
 
+    it('should accept valid registrations for toggle', function () {
+      let p = KorAP.Panel["result"] = panelClass.create();
+      
+      let manager = pluginServerClass.create();
+
+      manager.register({
+        name : 'Check',
+        embed : [{
+          panel : 'result',
+          title : 'Glemm',
+          onClick : {
+            template : 'about:blank',
+            action : 'toggle',
+            'default' : false
+          }
+        }]
+      });
+
+      let b = p.actions().element().firstChild;
+      expect(b.hasAttribute("data-icon")).toBeFalsy();
+      expect(b.hasAttribute("cls")).toBeFalsy();
+      expect(b.getAttribute("title")).toEqual("Glemm");
+      expect(b.firstChild.classList.contains('button-icon')).toBeTruthy();
+      expect(b.firstChild.classList.contains('check')).toBeTruthy();
+      expect(b.firstChild.classList.contains('checked')).toBeFalsy();
+
+      expect(p.element().querySelectorAll("iframe").length).toEqual(0);
+
+      b.click();
+
+      expect(b.getAttribute("title")).toEqual("Glemm");
+      expect(b.firstChild.classList.contains('button-icon')).toBeTruthy();
+      expect(b.firstChild.classList.contains('check')).toBeTruthy();
+      expect(b.firstChild.classList.contains('checked')).toBeTruthy();
+
+      // Check with true default
+      p = KorAP.Panel["result"] = panelClass.create();
+      
+      manager = pluginServerClass.create();
+
+      manager.register({
+        name : 'Check',
+        embed : [{
+          panel : 'result',
+          title : 'Glemm',
+          onClick : {
+            template : 'about:blank',
+            action : 'toggle',
+            'default' : true
+          }
+        }]
+      });
+
+      b = p.actions().element().firstChild;
+      expect(b.hasAttribute("data-icon")).toBeFalsy();
+      expect(b.hasAttribute("cls")).toBeFalsy();
+      expect(b.getAttribute("title")).toEqual("Glemm");
+      expect(b.firstChild.classList.contains('button-icon')).toBeTruthy();
+      expect(b.firstChild.classList.contains('check')).toBeTruthy();
+      expect(b.firstChild.classList.contains('checked')).toBeTruthy();
+
+      manager.destroy();
+      KorAP.Panel["result"] = undefined;
+    });
+
+    
     it('should alert on plugin info (1)', function () {
 
       let alertMsg;
diff --git a/dev/js/src/plugin/server.js b/dev/js/src/plugin/server.js
index 669708c..1fa0002 100644
--- a/dev/js/src/plugin/server.js
+++ b/dev/js/src/plugin/server.js
@@ -233,6 +233,10 @@
 
           let state = stateClass.create([true, false]);
 
+          if (onClick["default"] !== undefined) {
+            state.setIfNotYet(onClick["default"]);
+          };
+
           // TODO:
           //   Lazy registration (see above!)
           KorAP.Panel[panel].actions().addToggle(title, {'cls':["title"]}, state);
