diff --git a/keyserver/src/creators/message-creator.js b/keyserver/src/creators/message-creator.js
--- a/keyserver/src/creators/message-creator.js
+++ b/keyserver/src/creators/message-creator.js
@@ -56,6 +56,7 @@
 
 type LatestMessageInfo = {
   +latestMessage: string,
+  +latestMessageForUnreadCheck: ?string,
   +latestReadMessage: ?string,
 };
 
@@ -571,6 +572,7 @@
 
       latestMessagesPerThread.set(threadID, {
         latestMessage,
+        latestMessageForUnreadCheck: latestMessage,
         latestReadMessage,
       });
     }
@@ -588,6 +590,7 @@
         userID,
         threadID,
         latestMessage: latestMessages.latestMessage,
+        latestMessageForUnreadCheck: latestMessages.latestMessageForUnreadCheck,
         latestReadMessage: latestMessages.latestReadMessage,
       });
     }
@@ -598,7 +601,10 @@
 async function createReadStatusUpdates(latestMessages: LatestMessages) {
   const now = Date.now();
   const readStatusUpdates = latestMessages
-    .filter(message => !message.latestReadMessage)
+    .filter(
+      message =>
+        !message.latestReadMessage && message.latestMessageForUnreadCheck,
+    )
     .map(({ userID, threadID }) => ({
       type: updateTypes.UPDATE_THREAD_READ_STATUS,
       userID,
@@ -635,18 +641,24 @@
     , last_read_message = GREATEST(last_read_message, CASE 
   `;
   let shouldUpdateLastReadMessage = false;
+  let shouldUpdateLastMessageForUnreadCheck = false;
   for (const {
     userID,
     threadID,
     latestMessage,
+    latestMessageForUnreadCheck,
     latestReadMessage,
   } of latestMessages) {
     lastMessageExpression.append(SQL`
       WHEN user = ${userID} AND thread = ${threadID} THEN ${latestMessage}
     `);
-    lastMessageForUnreadCheckExpression.append(SQL`
-      WHEN user = ${userID} AND thread = ${threadID} THEN ${latestMessage}
-    `);
+    if (latestMessageForUnreadCheck) {
+      shouldUpdateLastMessageForUnreadCheck = true;
+      lastMessageForUnreadCheckExpression.append(SQL`
+        WHEN user = ${userID} AND thread = ${threadID}
+        THEN ${latestMessageForUnreadCheck}
+      `);
+    }
     if (latestReadMessage) {
       shouldUpdateLastReadMessage = true;
       lastReadMessageExpression.append(SQL`
@@ -672,7 +684,9 @@
   );
 
   query.append(lastMessageExpression);
-  query.append(lastMessageForUnreadCheckExpression);
+  if (shouldUpdateLastMessageForUnreadCheck) {
+    query.append(lastMessageForUnreadCheckExpression);
+  }
   if (shouldUpdateLastReadMessage) {
     query.append(lastReadMessageExpression);
   }