diff --git a/channels/sendTracker.go b/channels/sendTracker.go
index 1742d52ba4e8dae2d46d09b6aa91e6ab57df4654..023785fa7f4063b6dc30e509419cd79f7978fab4 100644
--- a/channels/sendTracker.go
+++ b/channels/sendTracker.go
@@ -205,26 +205,26 @@ func (st *sendTracker) denotePendingSend(channelID *id.ID,
 	// approximate the lag due to round submission
 	ts := netTime.Now().Add(oneSecond)
 
-	// submit the message to the UI
-	uuid, err := st.trigger(channelID, umi, ts, receptionID.EphemeralIdentity{},
-		rounds.Round{}, Unsent)
-	if err != nil {
-		return 0, err
-	}
-
 	// create a random message id so there will not be collisions in a database
 	// that requires a unique message ID
 	stream := st.rngSrc.GetStream()
-	randMid := cryptoChannel.MessageID{}
-	num, err := stream.Read(randMid[:])
-	if num != len(randMid[:]) || err != nil {
+	umi.messageID = cryptoChannel.MessageID{}
+	num, err := stream.Read(umi.messageID[:])
+	if num != len(umi.messageID[:]) || err != nil {
 		jww.FATAL.Panicf("failed to get a random message ID, read "+
 			"len: %d, err: %+v", num, err)
 	}
 	stream.Close()
 
+	// submit the message to the UI
+	uuid, err := st.trigger(channelID, umi, ts, receptionID.EphemeralIdentity{},
+		rounds.Round{}, Unsent)
+	if err != nil {
+		return 0, err
+	}
+
 	// track the message on disk
-	st.handleDenoteSend(uuid, channelID, randMid,
+	st.handleDenoteSend(uuid, channelID, umi.messageID,
 		rounds.Round{})
 	return uuid, nil
 }
@@ -237,15 +237,6 @@ func (st *sendTracker) denotePendingAdminSend(channelID *id.ID,
 	// approximate the lag due to round submission
 	ts := netTime.Now().Add(oneSecond)
 
-	// submit the message to the UI
-	uuid, err := st.adminTrigger(channelID, cm, ts, cryptoChannel.MessageID{},
-		receptionID.EphemeralIdentity{},
-		rounds.Round{}, Unsent)
-
-	if err != nil {
-		return 0, err
-	}
-
 	// create a random message id so there will not be collisions in a database
 	// that requires a unique message ID
 	stream := st.rngSrc.GetStream()
@@ -257,6 +248,15 @@ func (st *sendTracker) denotePendingAdminSend(channelID *id.ID,
 	}
 	stream.Close()
 
+	// submit the message to the UI
+	uuid, err := st.adminTrigger(channelID, cm, ts, randMid,
+		receptionID.EphemeralIdentity{},
+		rounds.Round{}, Unsent)
+
+	if err != nil {
+		return 0, err
+	}
+
 	// track the message on disk
 	st.handleDenoteSend(uuid, channelID, randMid,
 		rounds.Round{})