diff --git a/indexedDb/impl/dm/implementation.go b/indexedDb/impl/dm/implementation.go
index e4c314a09b5c639a0012355c3acb1f3fc59ab6b7..d43df179e70100a85b34645b95921ed3b1c7b85e 100644
--- a/indexedDb/impl/dm/implementation.go
+++ b/indexedDb/impl/dm/implementation.go
@@ -238,6 +238,7 @@ func (w *wasmModel) receiveWrapper(messageID message.ID, parentID *message.ID, n
 		jww.DEBUG.Printf(
 			"[DM indexedDB] Conversation with %s already joined", nickname)
 
+		updateConversation := false
 		// Update Conversation if nickname was altered
 		isFromPartner := bytes.Equal(result.Pubkey, senderKey)
 		nicknameChanged := result.Nickname != nickname
@@ -245,13 +246,28 @@ func (w *wasmModel) receiveWrapper(messageID message.ID, parentID *message.ID, n
 			jww.DEBUG.Printf(
 				"[DM indexedDB] Updating from nickname %s to %s",
 				result.Nickname, nickname)
-			err = w.upsertConversation(nickname, result.Pubkey, result.Token,
-				result.CodesetVersion, result.Blocked)
+			updateConversation = true
+		}
+
+		// Fix conversation if dmToken is altered
+		dmTokenChanged := result.Token != dmToken
+		if isFromPartner && dmTokenChanged {
+			jww.WARN.Printf(
+				"[DM indexedDB] Updating from dmToken %s to %s",
+				result.Token, dmToken)
+			updateConversation = true
+		}
+
+		if updateConversation {
+			err = w.upsertConversation(nickname, result.Pubkey,
+				result.Token, result.CodesetVersion,
+				result.Blocked)
 			if err != nil {
 				return 0, err
 			}
 			conversationUpdated = true
 		}
+
 	}
 
 	// Handle encryption, if it is present