Mark as Unread
A member who has read a conversation but cannot answer yet can mark it as unread again. The conversation then waits in their list with a dot, as a reminder that something is still to be done there, the way Mark as unread works in WhatsApp and Telegram.
It is in the free and the WebSocket version, and it is on by default.
What a member sees#
- Mark as unread in the menu of a conversation that is read: a right click on the conversation in the list, a long press on a phone, or the ⋯ button of the row or of the open conversation
- A dot where the unread count of the conversation goes, with no number
- The conversation listed by the Unread filter, with the ones that have new messages
- Every unread counter left as it was: the counter of the messenger, the page title, the badge on the mobile app icon, the unread counter shortcode and the BuddyPress messages count do not count a marked conversation
- Nobody else is told: no email, push or site notification is sent, and the other participants keep seeing their messages as seen
Marked from an open conversation, the conversation closes and the messenger goes back to the list, and a mini chat window of it closes too. Left open, it would be read again at once.
What ends the mark#
| What happens | Result |
|---|---|
| The member opens the conversation | The dot goes, on every device |
| A new message arrives in it | The dot becomes the usual unread count, and the conversation notifies as any other |
| The member uses Mark all as read | The dot goes |
| A message in it is deleted | The dot stays |
Opening a marked conversation shows no New messages divider, because no message in it is unread.
Across devices#
The mark follows the member to every browser and app they are signed in to:
- WebSocket version — within a second, through the realtime connection
- Free version — with the next check for new messages
Opening the conversation on any of them clears the dot on all of them.
Where it is not offered#
- A conversation that already has unread messages
- A presence-based chat room, or a chat room the member has not joined, as neither keeps unread messages for them
- A conversation embedded on a page with a shortcode, which stays on screen there
How to turn it off#
WP Admin → Better Messages → Settings → Messaging → Conversation Features → Mark as Unread
It is on by default. Turned off, the menu entry is gone and the REST route refuses. A conversation that is already marked keeps its dot until it is opened.
For developers#
POST /wp-json/better-messages/v1/thread/{id}/markUnreadmarks a conversation unread for the current user and answers{ "unread": -1 }, see Mark conversation as unread.- A marked conversation carries
unread: -1in the conversation object of the REST API, in thebetter_messages_rest_thread_itemfilter and in the realtime events. Code that adds theunreadvalues of conversations together should count only the values above 0.get_user_unread_count()already does. Better_Messages()->functions->mark_thread_unread()marks one from PHP, and thebetter_messages_thread_marked_unreadaction fires after every mark.- The WordPress Abilities API has
better-messages/mark-unread, which marks the read conversations it is given and leaves the ones with unread messages as they are.
Frequently asked questions#
Can a member mark a single message as unread?#
No. The whole conversation is marked, as in WhatsApp. It opens as usual, at the newest messages.
Does a marked conversation send an email later?#
No. Email notifications are only sent for unread messages, and a mark is not one. A new message in a marked conversation is emailed as in any other conversation.
Do other participants see that a conversation was marked?#
No. The mark belongs to the member who set it, and the seen ticks of the others do not change.
Does it work with a self-hosted realtime server?#
It needs the first self-hosted release after 2026.10.30.2. With an older self-hosted server, the dot on a WebSocket site goes away within seconds of the mark. The free version does not use the realtime server, so it is not affected.
See also#
- Unread filter — show only the conversations with something unread
- Notification levels — choose how much each conversation notifies
- Conversation muting — silence a conversation without leaving it