Skip to main content

System Messages

System messages are the small inline notes you sometimes see in a group conversation, like "Alice joined the conversation" or "Bob changed the subject to Project Sync". They keep everyone in the loop about what's changed, without anyone having to type a normal message.

Three system-message pills below a normal message — a subject change, two people joining in one line, and a promotion to moderator — each with its own icon and the participants as avatar chips

System messages are styled differently from regular chat — italic, centered, and without the usual avatar or message bubble — so they're easy to skim past.

What can trigger a system message#

EventExample text
Someone joins on their ownAlice joined the conversation
Someone is added by another participantAlice was added to the conversation by Bob
Someone leavesAlice left the conversation
The subject is changedBob changed the subject to "Project Sync"
A chat-room cover image is changedConversation image was changed
Someone is promoted to moderatorAlice was promoted to moderator
Someone is removed as moderatorAlice was removed as moderator
A moderator removes someoneAlice was removed from the conversation, or with Show who did it Alice was removed from the conversation by John
A moderator mutes someoneAlice was muted, or Alice was muted by John
A moderator bans someoneAlice was banned, or Alice was banned by John
Someone starts a group callAlice started a group video call
A moderator starts or stops recording a group callAlice started recording, Alice stopped recording

Each event has its own admin toggle, so you can keep the ones you care about and silence the rest. The recording lines are the exception: they are written whenever a group call is recorded, unless the site tells only moderators about recordings (see Call recording).

System messages never make sounds, send push notifications or raise browser pop-ups, and never send an email of their own. They update what you see inside the conversation. When an email notification lists the new messages of a conversation, the system messages among them are written in it as they read in the conversation.

Guest visitors are treated exactly like logged-in users — when a guest joins or leaves, the message uses their display name (e.g. Graceful Gecko). AI chat-bots are skipped so bot threads stay clean.

Smart grouping — fewer "joined / left" walls#

Better Messages is smart about how it stacks system messages so the conversation never fills up with a wall of identical lines. While no one is actively chatting, the plugin keeps merging and trimming related events:

  • Same person joins twice in a row — the second one is silently ignored (they're already announced).
  • Several people join one after another — they're combined into one line: "Alice joined" becomes "Alice and Bob joined", and so on. Up to three names are shown by name. Beyond that you see "Alice, Bob and 5 others joined the conversation".
  • Someone joins and immediately leaves before the chat picks up — both events disappear. They leave no trace.
  • Someone is promoted then demoted — both lines are removed.
  • The subject is changed three times in a row — only one line stays, showing the change from the original subject to the final one.
  • The cover image is changed twice — only one "Conversation image was changed" line stays.
  • Someone says something — as soon as a real message arrives, everything above it is locked in as historical record. Any new join, leave, or change after that starts a fresh group below the message.
  • Someone is kicked or banned right after joining — the join announcement is dropped (they're not really joining), and the kick/ban line is shown instead.

The end result: in a busy room you see one tidy "Alice, Bob and 3 others joined the conversation" instead of five separate "joined" lines, and a quick join-and-leave never spams the history.

The same goes for someone who leaves and comes back before anyone writes: the "left" line is taken away again and no "joined" line is added, as if they never left. A site that wants every join and leave on record can switch off Tidy up joins and leaves (below). Joins and leaves then each get a line of its own, while subject, image and moderator changes keep their grouping.

Enabling system messages#

Go to WP Admin → Better Messages → Settings → Messaging → System Messages.

System Messages settings panel in WP Admin showing the System Messages master toggle, Allow per-conversation override, the new Ignore in conversations list sort toggle, the System Messages Types checkbox group with all ten event types, and the Repeat suppression window number input
  • System Messages — turn the whole feature on or off site-wide.
  • Allow per-conversation override — when on, conversation moderators can flip system messages on or off for their own thread.
  • Ignore in conversations list sort — when on, a system message will not move a conversation to the top of the list. See Keep the conversations list calm below.
  • Show who did it — off by default. When on, the notices that someone was removed, muted or banned name the moderator who did it. See Show who did it below.
  • System Messages Types — pick exactly which events should produce a notice. All are on by default.
  • Tidy up joins and leaves — on by default, it applies the smart grouping to joins and leaves. Switch it off to give every join and leave a line of its own, so someone who leaves and comes back shows both lines. Requires Better Messages 3.0.12 or newer.
  • Repeat suppression window — an extra safety net (advanced, optional). If you set it to a number of seconds, a repeat event for the same person within that window is dropped completely. Most sites can leave this at 0 — the smart grouping above already handles repetition cleanly.
info

The Group call started event needs the WebSocket version of Better Messages. On the free / AJAX build it's disabled with a Get WebSocket License link beside it.

Keep the conversations list calm#

By default a system message — someone joining, the subject changing, a quick promotion — bumps the conversation to the top of the inbox just like a real chat message. In a busy chat-room that means quiet "joined" notices keep pushing your actual conversations down.

Turn on Ignore in conversations list sort to make the inbox sort by the last real chat message instead. The system messages still appear inside the conversation and in the preview line, but they no longer reorder the list.

Conversations list with the toggle off — a chat room whose only recent activity is a subject change has jumped to the top
Toggle off — a fresh "changed the subject to 'Y'" pushes the chat-room to the top.
Same conversations list with the toggle ON: the chat-room with the system message stays in its original position, sorted by the last real chat message. The system message still shows in the preview line
Toggle on — same chat-room sits where its last real message left it.

This is purely a sort-order setting — it doesn't suppress system messages, doesn't change the preview text, and doesn't affect unread counters. A real chat message sent later still bumps the conversation to the top. Conversations whose only activity is system messages sink to the bottom of the list (they stay visible).

The toggle works independently of the master System Messages switch, so you can leave it on as a permanent preference even on sites where system messages are otherwise disabled.

Show who did it#

Compatibility
This feature compatible with Better Messages 3.2.0 or higher

By default the moderation notices say only who was acted on: Alice was muted. Turn on WP Admin → Better Messages → Settings → Messaging → System Messages → Show who did it to name the moderator as well:

  • Alice was removed from the conversation by John
  • Alice was muted by John
  • Alice was banned by John
  • Alice and Bob were muted by John, for a line that holds several people
A chat room with Show who did it turned on: under the Today divider, ringed in red, the lines "Tom Weber and Marcus Hale were muted by Alex Novak" and "Lena Fischer was banned by Alex Novak", each name a chip with its picture

How it works:

  • Older lines too. Every removal, mute and ban has kept the moderator who did it since system messages came in, so turning the switch on names the moderator on lines written before it, and turning it off takes the name away again.
  • One moderator per line. A line names a moderator when everyone on it was acted on by the same person. While the switch is on, another moderator's action starts a line of its own instead of joining the line before it. A line of several moderators, a moderator whose account no longer exists, or an action taken with nobody signed in (an automatic removal, for example) reads as it did before, without a name.
  • Everywhere the line shows. The conversation, the on-site notification, the mini chat preview, the mobile app, the Administration page and email notifications all write the same sentence. Guest moderators are named by their guest display name.
  • Who sees the lines is unchanged. Only the wording changes. Unmuting and unbanning write no line, and neither do bans from group calls, so there is nothing to name there. Promotions and removals as moderator read as before.

Use it where members should know which moderator acted, for example in a community with several volunteer moderators. Leave it off where moderators would rather stay anonymous.

Per-conversation override#

When Allow per-conversation override is on, moderators of a group conversation can toggle system messages just for that thread:

  1. Open the conversation.
  2. Click the conversation header to open the Conversation Information sidebar.
  3. Find Show system messages, toggle it, and click Save.

Once a moderator changes it, that conversation keeps the override no matter what the site default is. Conversations without an explicit override fall back to the site setting.

The override toggle is not shown:

  • in one-on-one conversations (those always use the site default)
  • inside chat rooms (chat rooms have their own admin-side picker — see below)
  • to anyone if Allow per-conversation override is turned off

A group conversation can use its toggle to silence system messages, but it cannot force them on when the site setting is off — only chat rooms can do that.

Chat-room defaults#

Chat Rooms admin editor showing the System messages master toggle on and the System Messages Types picker with all ten event types checked

Each chat room has its own system-message settings, configured from WP Admin → Better Messages → Chat Rooms → select chat room → Chat Room Settings → System messages:

  • System messages — when on, this chat room shows system messages even if the global setting is off. Useful when you want clean inboxes for private conversations but full visibility inside chat rooms.
  • System Messages Types — same per-event picker as the global setting, but applied just to this chat room. Untick a type to silence it here only.

Changes take effect immediately for everyone in the room.

A chat room showing the “Conversation image was changed” system message after its cover was replaced
info

Chat rooms are the only place where you can force-enable system messages past a site-wide off setting. Group and private conversations always respect the global toggle.

Good to know#

  • Removed vs. left — when a moderator removes someone, the conversation shows "Alice was removed from the conversation", not "Alice left the conversation". The "left" line is reserved for voluntary leaves.
  • Banned vs. left — a ban also removes the participant under the hood, but only the "was banned" line is shown — there's no extra "left" line cluttering the history.
  • Group calls aren't repeated — once "Alice started a group audio call" appears, the same call type stays silent for the next five minutes. Audio and video are tracked separately, so a video call right after an audio one still gets its own line.
  • Inviter attribution — when someone is added by another participant, the line shows "Alice was added to the conversation by Bob". If multiple people are added at once by the same person, you get "Alice and Bob were added to the conversation by Carol".
  • History is preserved — turning a setting off later doesn't remove past system messages. It only stops new ones from being created.