diff --git a/dev/demo/plugin-client.html b/dev/demo/plugin-client.html
index 44333f8..08e6034 100644
--- a/dev/demo/plugin-client.html
+++ b/dev/demo/plugin-client.html
@@ -51,11 +51,31 @@
           }
         };
       };
+
+      function redirect() {
+
+        KorAPlugin.requestMsg({
+          "action":"get",
+          "key": 'QueryParam'
+        }, function (d) {
+
+          const par = d.value.param;
+          par.set("q",56);
+          
+          KorAPlugin.sendMsg({
+            'action':'redirect',
+            'queryParam' : par.toString()
+          })
+        });
+        
+      }
+      
       </script>
     <ul>
       <li><a onclick="KorAPlugin.log(333, 'Huhu!')">Send log!</a></li>
       <li><a onclick="KorAPlugin.resize()">Resize</a></li>
       <li><a onclick="KorAPlugin.sendMsg({'action':'pipe','service':'Glemm'})">Add Glemm</a></li>
+      <li><a onclick="redirect()">Redirect</a></li>
       <li><a onclick="flood()">Flood!</a></li>
       <li><a onclick="KorAPlugin.requestMsg({'action':'get', 'key':'KQ'}, function (d) { document.write(JSON.stringify(d.value))})">Get KQ</a></li>
     </ul>
diff --git a/dev/js/src/plugin/server.js b/dev/js/src/plugin/server.js
index 4027f8d..817c0c9 100644
--- a/dev/js/src/plugin/server.js
+++ b/dev/js/src/plugin/server.js
@@ -223,7 +223,7 @@
           }
         }
 
-        // TODO There is no possibility to add icons to an plugin toggle button right now. 
+        // TODO There is no possibility to add icons to a plugin toggle button right now. 
         else if (onClick["action"] == "toggle") {
 
           // TODO:
@@ -502,12 +502,26 @@
           v["q"] = p.get('q');
           v["ql"] = p.get('ql');
           v["cq"] = p.get('cq');
-        }
-      };
+        };
 
-      // data needs to be mirrored
-      if (d._id) {
-        service.sendMsg(d);
+        // data needs to be mirrored
+        if (d._id) {
+          service.sendMsg(d);
+        };
+
+        break;
+
+        // Redirect to a different page relative to the current
+      case 'redirect':
+        const url = new URL(window.location);
+
+        // Currently this only accepts search parameters
+        if (d["queryParam"]) {
+          url.search = new URLSearchParams(d["queryParam"]);
+        };
+
+        window.location = url.toString();
+        break;
       };
 
       // TODO:
