diff --git a/app/controllers/authenticated.js b/app/controllers/authenticated.js
index 4c174d1b87c2d3bd043cf74f2a1e005a9ae60ce3..f7c6959d3038ac58dab8bc23e06d9a8960baf981 100644
--- a/app/controllers/authenticated.js
+++ b/app/controllers/authenticated.js
@@ -1,12 +1,24 @@
 import { action } from '@ember/object';
 import Controller from '@ember/controller';
 import { tracked } from '@glimmer/tracking';
+import { service } from '@ember/service';
 
 
 export default class AuthenticatedController extends Controller {
 
   // sidebar expanded ?
   @tracked expanded = true;
+  @service ws_inbox_refresh;
+  @service router;
+
+  constructor() {
+    super(...arguments);
+    this.ws_inbox_refresh.addHandler(this.wsInboxRefreshHandler, this);
+  }
+
+  wsInboxRefreshHandler() {
+    this.router.refresh();
+  }
 
   @action
   onSidebarToggle() {
diff --git a/app/services/ws_inbox_refresh.js b/app/services/ws_inbox_refresh.js
new file mode 100644
index 0000000000000000000000000000000000000000..707bf5c25b0109e90c8fef3b2c40efcdeab5324a
--- /dev/null
+++ b/app/services/ws_inbox_refresh.js
@@ -0,0 +1,33 @@
+import { ws_base_url } from 'papermerge/utils/host';
+import Service from '@ember/service';
+
+
+export default class WSInboxRefresh extends Service {
+
+
+  constructor(owner, args) {
+    super(owner, args);
+
+    let that = this;
+
+    this._socket = new WebSocket(`${ws_base_url()}/nodes/inbox-refresh/`);
+    this._handlers = [];
+
+    this._socket.onmessage = function(event) {
+      that._handlers.forEach((item) => {
+        let json_data;
+
+        try {
+          json_data = JSON.parse(event.data);
+          item.handler.apply(item.context, [json_data, event]);
+        } catch (err) {
+          console.log(`Error ${err} while parsing incoming data: ${event.data}`);
+        }
+      });
+    }
+  }
+
+  addHandler(handler, context) {
+    this._handlers.push({handler, context});
+  }
+}
\ No newline at end of file