diff --git a/indexedDb/impl/channels/implementation.go b/indexedDb/impl/channels/implementation.go
index 91dd1cbfb8dc67a09afea17a7591c47adf59ef7f..0cb483e38f0b24b1375f5fbc2675430f3dd2b76d 100644
--- a/indexedDb/impl/channels/implementation.go
+++ b/indexedDb/impl/channels/implementation.go
@@ -436,19 +436,20 @@ func (w *wasmModel) upsertMessage(msg *Message) (uint64, error) {
 	msgIdObj, err := impl.Put(w.db, messageStoreName, messageObj)
 	if err != nil {
 		// Do not error out when this message already exists inside
-		// the DB. Instead, set the ID and re-attempt as an upsert.
+		// the DB. Instead, set the ID and re-attempt as an update.
 		if msg.ID == 0 { // always error out when not an insert attempt
 			msgID, inErr := message.UnmarshalID(msg.MessageID)
 			if inErr == nil {
 				jww.WARN.Printf("upsertMessage duplicate: %+v",
 					err)
-				existingMsg, inErr := w.GetMessage(msgID)
-				if inErr == nil && existingMsg.UUID != 0 {
-					msg.ID = existingMsg.UUID
-					return w.upsertMessage(msg)
-				}
-				jww.ERROR.Printf("upsertMessage no UUID: %+v",
-					inErr)
+				rnd := &rounds.Round{ID: id.Round(msg.Round)}
+				status := (*channels.SentStatus)(&msg.Status)
+				return w.UpdateFromMessageID(msgID,
+					&msg.Timestamp,
+					rnd,
+					&msg.Pinned,
+					&msg.Hidden,
+					status)
 			}
 		}
 		return 0, errors.Errorf("Unable to put Message: %+v\n%s",