diff --git a/indexedDb/implementation.go b/indexedDb/implementation.go
index 1bc736784b07726e163c75976b96a0797d513d21..25da30995e66be5c2a240cb1ff6daea52a490069 100644
--- a/indexedDb/implementation.go
+++ b/indexedDb/implementation.go
@@ -11,7 +11,6 @@ package indexedDb
 
 import (
 	"context"
-	"encoding/base64"
 	"encoding/json"
 	"syscall/js"
 	"time"
@@ -152,13 +151,13 @@ func (w *wasmModel) ReceiveMessage(channelID *id.ID,
 	status channels.SentStatus) uint64 {
 	parentErr := errors.New("failed to ReceiveMessage")
 
-	err := w.receiveHelper(buildMessage(channelID.Marshal(),
+	uuid, err := w.receiveHelper(buildMessage(channelID.Marshal(),
 		messageID.Bytes(), nil, nickname, text, identity,
 		timestamp, lease, status))
 	if err != nil {
 		jww.ERROR.Printf("%+v", errors.Wrap(parentErr, err.Error()))
 	}
-	return 0
+	return uuid
 }
 
 // ReceiveReply is called whenever a message is received that is a reply on a
@@ -174,13 +173,13 @@ func (w *wasmModel) ReceiveReply(channelID *id.ID,
 	lease time.Duration, round rounds.Round, status channels.SentStatus) uint64 {
 	parentErr := errors.New("failed to ReceiveReply")
 
-	err := w.receiveHelper(buildMessage(channelID.Marshal(),
+	uuid, err := w.receiveHelper(buildMessage(channelID.Marshal(),
 		messageID.Bytes(), replyTo.Bytes(), nickname, text, identity,
 		timestamp, lease, status))
 	if err != nil {
 		jww.ERROR.Printf("%+v", errors.Wrap(parentErr, err.Error()))
 	}
-	return 0
+	return uuid
 }
 
 // ReceiveReaction is called whenever a reaction to a message is received on a
@@ -195,13 +194,13 @@ func (w *wasmModel) ReceiveReaction(channelID *id.ID, messageID cryptoChannel.Me
 	lease time.Duration, round rounds.Round, status channels.SentStatus) uint64 {
 	parentErr := errors.New("failed to ReceiveReaction")
 
-	err := w.receiveHelper(buildMessage(channelID.Marshal(),
+	uuid, err := w.receiveHelper(buildMessage(channelID.Marshal(),
 		messageID.Bytes(), reactionTo.Bytes(), nickname, reaction,
 		identity, timestamp, lease, status))
 	if err != nil {
 		jww.ERROR.Printf("%+v", errors.Wrap(parentErr, err.Error()))
 	}
-	return 0
+	return uuid
 }
 
 // UpdateSentStatus is called whenever the [channels.SentStatus] of a message
@@ -212,7 +211,7 @@ func (w *wasmModel) UpdateSentStatus(uuid uint64, messageID cryptoChannel.Messag
 	parentErr := errors.New("failed to UpdateSentStatus")
 
 	// Convert messageID to the key generated by json.Marshal
-	key := js.ValueOf(base64.StdEncoding.EncodeToString(messageID[:]))
+	key := js.ValueOf(uuid)
 
 	// Use the key to get the existing Message
 	currentMsg, err := w.get(messageStoreName, key)
@@ -229,7 +228,7 @@ func (w *wasmModel) UpdateSentStatus(uuid uint64, messageID cryptoChannel.Messag
 	newMessage.Status = uint8(status)
 
 	// Store the updated Message
-	err = w.receiveHelper(newMessage)
+	_, err = w.receiveHelper(newMessage)
 	if err != nil {
 		jww.ERROR.Printf("%+v", errors.Wrap(parentErr, err.Error()))
 	}
@@ -262,31 +261,32 @@ func buildMessage(channelID, messageID, parentID []byte, nickname,
 }
 
 // receiveHelper is a private helper for receiving any sort of message.
-func (w *wasmModel) receiveHelper(newMessage *Message) error {
+func (w *wasmModel) receiveHelper(newMessage *Message) (uint64, error) {
 	// Convert to jsObject
 	newMessageJson, err := json.Marshal(newMessage)
 	if err != nil {
-		return errors.Errorf("Unable to marshal Message: %+v", err)
+		return 0, errors.Errorf("Unable to marshal Message: %+v", err)
 	}
 	messageObj, err := utils.JsonToJS(newMessageJson)
 	if err != nil {
-		return errors.Errorf("Unable to marshal Message: %+v", err)
+		return 0, errors.Errorf("Unable to marshal Message: %+v", err)
 	}
 
 	// Prepare the Transaction
 	txn, err := w.db.Transaction(idb.TransactionReadWrite, messageStoreName)
 	if err != nil {
-		return errors.Errorf("Unable to create Transaction: %+v", err)
+		return 0, errors.Errorf("Unable to create Transaction: %+v",
+			err)
 	}
 	store, err := txn.ObjectStore(messageStoreName)
 	if err != nil {
-		return errors.Errorf("Unable to get ObjectStore: %+v", err)
+		return 0, errors.Errorf("Unable to get ObjectStore: %+v", err)
 	}
 
 	// Perform the upsert (put) operation
-	_, err = store.Put(messageObj)
+	putReq, err := store.Put(messageObj)
 	if err != nil {
-		return errors.Errorf("Unable to upsert Message: %+v", err)
+		return 0, errors.Errorf("Unable to upsert Message: %+v", err)
 	}
 
 	// Wait for the operation to return
@@ -294,12 +294,14 @@ func (w *wasmModel) receiveHelper(newMessage *Message) error {
 	err = txn.Await(ctx)
 	cancel()
 	if err != nil {
-		return errors.Errorf("Upserting Message failed: %+v", err)
+		return 0, errors.Errorf("Upserting Message failed: %+v", err)
 	}
+	res, _ := putReq.Result()
+	uuid := uint64(res.Int())
 	jww.DEBUG.Printf(
-		"Successfully stored message from %s",
-		newMessage.Codename)
-	return nil
+		"Successfully stored message from %s, id %d",
+		newMessage.Codename, uuid)
+	return uuid, nil
 }
 
 // get is a generic private helper for getting values from the given
diff --git a/indexedDb/implementation_test.go b/indexedDb/implementation_test.go
index f29e645a2db07e06598e157548e63a71e617195d..0a9549621a2af8e168e5adfd910e7dbae21b0750 100644
--- a/indexedDb/implementation_test.go
+++ b/indexedDb/implementation_test.go
@@ -11,14 +11,16 @@ package indexedDb
 
 import (
 	"encoding/json"
+	"os"
+	"testing"
+	"time"
+
 	jww "github.com/spf13/jwalterweatherman"
 	"gitlab.com/elixxir/client/channels"
+	"gitlab.com/elixxir/client/cmix/rounds"
 	cryptoBroadcast "gitlab.com/elixxir/crypto/broadcast"
 	"gitlab.com/elixxir/crypto/channel"
 	"gitlab.com/xx_network/primitives/id"
-	"os"
-	"testing"
-	"time"
 )
 
 func TestMain(m *testing.M) {
@@ -35,11 +37,13 @@ func TestWasmModel_UpdateSentStatus(t *testing.T) {
 		t.Fatalf("%+v", err)
 	}
 
+	cid := channel.Identity{}
+
 	// Store a test message
 	testMsg := buildMessage([]byte(testString), testMsgId.Bytes(),
-		nil, testString, testString, nil, time.Now(),
+		nil, testString, testString, cid, time.Now(),
 		time.Second, channels.Sent)
-	err = eventModel.receiveHelper(testMsg)
+	uuid, err := eventModel.receiveHelper(testMsg)
 	if err != nil {
 		t.Fatalf("%+v", err)
 	}
@@ -55,7 +59,8 @@ func TestWasmModel_UpdateSentStatus(t *testing.T) {
 
 	// Update the sentStatus
 	expectedStatus := channels.Failed
-	eventModel.UpdateSentStatus(testMsgId, expectedStatus)
+	eventModel.UpdateSentStatus(uuid, testMsgId, time.Now(),
+		rounds.Round{ID: 8675309}, expectedStatus)
 
 	// Check the resulting status
 	results, err = eventModel.dump(messageStoreName)
@@ -75,8 +80,8 @@ func TestWasmModel_UpdateSentStatus(t *testing.T) {
 	}
 
 	// Make sure other fields didn't change
-	if resultMsg.SenderUsername != testString {
-		t.Fatalf("Unexpected SenderUsername: %v", resultMsg.SenderUsername)
+	if resultMsg.Nickname != testString {
+		t.Fatalf("Unexpected Nickname: %v", resultMsg.Nickname)
 	}
 }
 
diff --git a/indexedDb/model.go b/indexedDb/model.go
index 7f83e16efa2bfe4216df579683418f37c64b94cb..b276557ed0c8a58a4f0dbc27fcdeba8273ad924a 100644
--- a/indexedDb/model.go
+++ b/indexedDb/model.go
@@ -46,7 +46,7 @@ const (
 // The user's nickname can change each message, but the rest does not. We
 // still duplicate all of it for each entry to simplify code for now.
 type Message struct {
-	ID              []byte        `json:"id"` // Matches pkeyName
+	ID              uint64        `json:"id"` // Matches pkeyName
 	Nickname        string        `json:"nickname"`
 	MessageID       []byte        `json:"message_id"`        // Index
 	ChannelID       []byte        `json:"channel_id"`        // Index