diff --git a/client/src/components/ConversationList.tsx b/client/src/components/ConversationList.tsx
index 6d19a37c69187ec3a818aca7bed03f1b9e88063d..a6322cb38d81bcf6a811a43a379f00030e32bb4f 100644
--- a/client/src/components/ConversationList.tsx
+++ b/client/src/components/ConversationList.tsx
@@ -16,10 +16,16 @@
  * <https://www.gnu.org/licenses/>.
  */
 import { Box, Stack, Typography, useTheme } from '@mui/material'
+import { WebSocketMessageType } from 'jami-web-common'
 import { ChangeEvent, useCallback, useEffect, useState } from 'react'
 import { useTranslation } from 'react-i18next'
 
-import { useConversationRequestsQuery, useConversationsSummariesQuery } from '../services/conversationQueries'
+import { useWebSocketContext } from '../contexts/WebSocketProvider'
+import {
+  useConversationRequestsQuery,
+  useConversationsSummariesQuery,
+  useRefreshConversationsSummaries,
+} from '../services/conversationQueries'
 import ContactSearchBar from './ContactSearchBar'
 import ContactSearchResultList from './ContactSearchResultList'
 import { ConversationRequestList } from './ConversationRequestList'
@@ -106,6 +112,20 @@ const ConversationTabs = () => {
 const SummariesTabPanel = (props: TabPanelProps) => {
   const conversationsSummariesQuery = useConversationsSummariesQuery()
   const conversationsSummaries = conversationsSummariesQuery.data || []
+  const websocket = useWebSocketContext()
+  const refreshConversationsSummaries = useRefreshConversationsSummaries()
+
+  useEffect(() => {
+    function conversationMessageListener() {
+      refreshConversationsSummaries()
+    }
+
+    websocket.bind(WebSocketMessageType.ConversationMessage, conversationMessageListener)
+
+    return () => {
+      websocket.unbind(WebSocketMessageType.ConversationMessage, conversationMessageListener)
+    }
+  }, [websocket, refreshConversationsSummaries])
 
   return (
     <TabPanel sx={{ overflowY: 'auto', height: '100%' }} {...props}>