diff --git a/channels/adminListener.go b/channels/adminListener.go
index 421b4ac9f70f91f9c3294a2838e684fb01527b65..d9e203f1c0c4bab8be5fa14220130c773fd74ee5 100644
--- a/channels/adminListener.go
+++ b/channels/adminListener.go
@@ -40,7 +40,7 @@ func (al *adminListener) Listen(payload []byte,
 	}
 
 	//check if we sent the message, ignore triggering if we sent
-	if al.checkSent(msgID) {
+	if al.checkSent(msgID, round) {
 		return
 	}
 
diff --git a/channels/adminListener_test.go b/channels/adminListener_test.go
index 1b6f06e8a0bf6e9d70d39ee8129185a8e75c89a2..cb571d5724dcd7318d7ab4dec78bd2c0fe14866c 100644
--- a/channels/adminListener_test.go
+++ b/channels/adminListener_test.go
@@ -77,7 +77,7 @@ func TestAdminListener_Listen(t *testing.T) {
 	al := adminListener{
 		chID:      chID,
 		trigger:   dummy.triggerAdminEvent,
-		checkSent: func(messageID cryptoChannel.MessageID) bool { return false },
+		checkSent: func(messageID cryptoChannel.MessageID, r rounds.Round) bool { return false },
 	}
 
 	// Call the listener
@@ -138,7 +138,7 @@ func TestAdminListener_Listen_BadRound(t *testing.T) {
 	al := adminListener{
 		chID:      chID,
 		trigger:   dummy.triggerAdminEvent,
-		checkSent: func(messageID cryptoChannel.MessageID) bool { return false },
+		checkSent: func(messageID cryptoChannel.MessageID, r rounds.Round) bool { return false },
 	}
 
 	// Call the listener
@@ -170,7 +170,7 @@ func TestAdminListener_Listen_BadChannelMessage(t *testing.T) {
 	al := adminListener{
 		chID:      chID,
 		trigger:   dummy.triggerAdminEvent,
-		checkSent: func(messageID cryptoChannel.MessageID) bool { return false },
+		checkSent: func(messageID cryptoChannel.MessageID, r rounds.Round) bool { return false },
 	}
 
 	// Call the listener
@@ -217,7 +217,7 @@ func TestAdminListener_Listen_BadSizedBroadcast(t *testing.T) {
 	al := adminListener{
 		chID:      chID,
 		trigger:   dummy.triggerAdminEvent,
-		checkSent: func(messageID cryptoChannel.MessageID) bool { return false },
+		checkSent: func(messageID cryptoChannel.MessageID, r rounds.Round) bool { return false },
 	}
 
 	// Call the listener
diff --git a/channels/joinedChannel_test.go b/channels/joinedChannel_test.go
index a8a21f666ebd959ebb2d0d082edb414680221450..e3bee24de606711cc0a0cffcd24e6a6c9b42001d 100644
--- a/channels/joinedChannel_test.go
+++ b/channels/joinedChannel_test.go
@@ -490,7 +490,7 @@ func Test_loadJoinedChannel(t *testing.T) {
 	}
 
 	loadedJc, err := loadJoinedChannel(ch.ReceptionID, m.kv, m.net, m.rng,
-		m.events, m.broadcastMaker, func(messageID cryptoChannel.MessageID) bool {
+		m.events, m.broadcastMaker, func(messageID cryptoChannel.MessageID, r rounds.Round) bool {
 			return false
 		})
 	if err != nil {
diff --git a/channels/sendTracker.go b/channels/sendTracker.go
index ec366b1e66450aa75557170ca79117d20a655e91..0678993a754739b49ac3d7e0b56c6d2eff8d622b 100644
--- a/channels/sendTracker.go
+++ b/channels/sendTracker.go
@@ -70,7 +70,7 @@ type sendTracker struct {
 
 // messageReceiveFunc is a function type for sendTracker.MessageReceive so it
 // can be mocked for testing where used
-type messageReceiveFunc func(messageID cryptoChannel.MessageID) bool
+type messageReceiveFunc func(messageID cryptoChannel.MessageID, r rounds.Round) bool
 
 // loadSendTracker loads a sent tracker, restoring from disk. It will register a
 // function with the cmix client, delayed on when the network goes healthy,
@@ -342,7 +342,7 @@ func (st *sendTracker) handleSend(uuid uint64,
 // was sent by this user. If it was, the correct signal is sent to the event
 // model and the function returns true, notifying the caller to not process
 // the message
-func (st *sendTracker) MessageReceive(messageID cryptoChannel.MessageID) bool {
+func (st *sendTracker) MessageReceive(messageID cryptoChannel.MessageID, round rounds.Round) bool {
 	st.mux.RLock()
 
 	//skip if already added
@@ -374,6 +374,10 @@ func (st *sendTracker) MessageReceive(messageID cryptoChannel.MessageID) bool {
 		st.byRound[msgData.RoundID] = newRoundList
 	}
 
+	ts := mutateTimestamp(round.Timestamps[states.QUEUED], messageID)
+	go st.updateStatus(msgData.UUID, messageID, ts,
+		round, Delivered)
+
 	if err := st.storeSent(); err != nil {
 		jww.FATAL.Panicf("failed to store the updated sent list: %+v", err)
 	}
diff --git a/channels/sendTracker_test.go b/channels/sendTracker_test.go
index 305e9084f2637ce54d5345bda861a3213c52f735..a90926f33ea427a4f26d5b132c90cf6df7e0bc7e 100644
--- a/channels/sendTracker_test.go
+++ b/channels/sendTracker_test.go
@@ -8,6 +8,7 @@ import (
 	"gitlab.com/elixxir/client/storage/versioned"
 	cryptoChannel "gitlab.com/elixxir/crypto/channel"
 	"gitlab.com/elixxir/ekv"
+	"gitlab.com/elixxir/primitives/states"
 	"gitlab.com/xx_network/primitives/id"
 	"gitlab.com/xx_network/primitives/id/ephemeral"
 	"gitlab.com/xx_network/primitives/netTime"
@@ -45,6 +46,13 @@ func (mc *mockClient) RemoveHealthCallback(uint64) {}
 func TestSendTracker_MessageReceive(t *testing.T) {
 	kv := versioned.NewKV(ekv.MakeMemstore())
 	uuidNum := uint64(0)
+	rid := id.Round(2)
+
+	r := rounds.Round{
+		ID:         rid,
+		Timestamps: make(map[states.Round]time.Time),
+	}
+	r.Timestamps[states.QUEUED] = time.Now()
 	trigger := func(chID *id.ID, umi *userMessageInternal, ts time.Time,
 		receptionID receptionID.EphemeralIdentity, round rounds.Round,
 		status SentStatus) (uint64, error) {
@@ -62,12 +70,11 @@ func TestSendTracker_MessageReceive(t *testing.T) {
 	st := loadSendTracker(&mockClient{}, kv, trigger, nil, updateStatus)
 
 	mid := cryptoChannel.MakeMessageID([]byte("hello"), cid)
-	process := st.MessageReceive(mid)
+	process := st.MessageReceive(mid, r)
 	if process {
 		t.Fatalf("Did not receive expected result from MessageReceive")
 	}
 
-	rid := id.Round(2)
 	uuid, err := st.denotePendingSend(cid, &userMessageInternal{
 		userMessage: &UserMessage{},
 		channelMessage: &ChannelMessage{
@@ -87,7 +94,7 @@ func TestSendTracker_MessageReceive(t *testing.T) {
 	if err != nil {
 		t.Fatalf(err.Error())
 	}
-	process = st.MessageReceive(mid)
+	process = st.MessageReceive(mid, r)
 	if !process {
 		t.Fatalf("Did not receive expected result from MessageReceive")
 	}
@@ -109,7 +116,7 @@ func TestSendTracker_MessageReceive(t *testing.T) {
 		ID:    rid,
 		State: 1,
 	})
-	process = st.MessageReceive(mid)
+	process = st.MessageReceive(mid, r)
 	if !process {
 		t.Fatalf("Did not receive expected result from MessageReceive")
 	}
diff --git a/channels/userListener.go b/channels/userListener.go
index 98bcffd47fb736e3b3059f28b9bdc0c1e6552049..dad5075fd08daf0a46f2a221108df2b90dc45a91 100644
--- a/channels/userListener.go
+++ b/channels/userListener.go
@@ -42,7 +42,7 @@ func (ul *userListener) Listen(payload []byte,
 	msgID := umi.GetMessageID()
 
 	//check if we sent the message, ignore triggering if we sent
-	if ul.checkSent(msgID) {
+	if ul.checkSent(msgID, round) {
 		return
 	}
 
diff --git a/channels/userListener_test.go b/channels/userListener_test.go
index fa0c5369207e145490446c58248178c781112f99..23d8ae8c1188ef7c717680f4b6a980dace81e0cc 100644
--- a/channels/userListener_test.go
+++ b/channels/userListener_test.go
@@ -99,7 +99,7 @@ func TestUserListener_Listen(t *testing.T) {
 		chID:      chID,
 		name:      ns,
 		trigger:   dummy.triggerEvent,
-		checkSent: func(messageID cryptoChannel.MessageID) bool { return false },
+		checkSent: func(messageID cryptoChannel.MessageID, r rounds.Round) bool { return false },
 	}
 
 	//call the listener
@@ -184,7 +184,7 @@ func TestUserListener_Listen_BadUserSig(t *testing.T) {
 		chID:      chID,
 		name:      ns,
 		trigger:   dummy.triggerEvent,
-		checkSent: func(messageID cryptoChannel.MessageID) bool { return false },
+		checkSent: func(messageID cryptoChannel.MessageID, r rounds.Round) bool { return false },
 	}
 
 	//call the listener
@@ -247,7 +247,7 @@ func TestUserListener_Listen_BadRound(t *testing.T) {
 		chID:      chID,
 		name:      ns,
 		trigger:   dummy.triggerEvent,
-		checkSent: func(messageID cryptoChannel.MessageID) bool { return false },
+		checkSent: func(messageID cryptoChannel.MessageID, r rounds.Round) bool { return false },
 	}
 
 	//call the listener
@@ -280,7 +280,7 @@ func TestUserListener_Listen_BadMessage(t *testing.T) {
 		chID:      chID,
 		name:      ns,
 		trigger:   dummy.triggerEvent,
-		checkSent: func(messageID cryptoChannel.MessageID) bool { return false },
+		checkSent: func(messageID cryptoChannel.MessageID, r rounds.Round) bool { return false },
 	}
 
 	//call the listener
@@ -345,7 +345,7 @@ func TestUserListener_Listen_BadSizedBroadcast(t *testing.T) {
 		chID:      chID,
 		name:      ns,
 		trigger:   dummy.triggerEvent,
-		checkSent: func(messageID cryptoChannel.MessageID) bool { return false },
+		checkSent: func(messageID cryptoChannel.MessageID, r rounds.Round) bool { return false },
 	}
 
 	//call the listener