diff --git a/packages/auth/src/vpu-auth.js b/packages/auth/src/vpu-auth.js
index aa1e549a8997ac4656838a4ab5f01c26a4c67e17..5078d71411638bd1112552192709e08a683e04e9 100644
--- a/packages/auth/src/vpu-auth.js
+++ b/packages/auth/src/vpu-auth.js
@@ -85,6 +85,9 @@ class VPUAuth extends VPULitElement {
             this.personId = personId;
             this._setLoginStatus(LoginStatus.LOGGED_IN, tokenChanged);
         } else {
+            if (this._loginStatus === LoginStatus.LOGGED_IN) {
+                this._setLoginStatus(LoginStatus.LOGGING_OUT);
+            }
             this.name = "";
             this.token = "";
             this.subject = "";
@@ -217,7 +220,11 @@ class VPUAuth extends VPULitElement {
     }
 
     onLogoutClicked(e) {
-        this._setLoginStatus(LoginStatus.LOGGING_OUT);
+        // Keycloak will redirect right away without emitting events, so we have
+        // to do this manually here
+        if (this._loginStatus === LoginStatus.LOGGED_IN) {
+            this._setLoginStatus(LoginStatus.LOGGING_OUT);
+        }
         this._kcwrapper.logout();
     }