diff --git a/Changes b/Changes
index 0175b4f..aa474ca 100755
--- a/Changes
+++ b/Changes
@@ -28,6 +28,7 @@
         - Introduce legacy redirects for tutorial links.
         - Improve QueryParam response.
         - Fold all top-level navigation items.
+        - Add plugin service to redirect to a certain location.
 
 0.42 2021-06-18
         - Added GitHub based CI for perl.
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:
