Presence Indicators & User Statuses
The WebSocket version shows real-time online presence indicators — colored dots next to user avatars throughout the messenger. Users see at a glance who's online, away, or busy. Each user can set their own availability status. Presence updates push instantly through WebSocket — no polling, no stale state.
Presence indicators require the persistent WebSocket connection. The free version cannot show real-time presence.
What it adds#
- Colored dot next to every user avatar showing their current status
- Three states: Online (green), Away (yellow), Do Not Disturb (red)
- Instant status updates across all connected clients via WebSocket
- User-selectable availability — set your own status
- Visible in conversations, user lists, mini widgets, member directories
- No configuration needed — automatic with WebSocket
Status meanings#
| Status | Color | Trigger |
|---|---|---|
| Online | 🟢 Green | User is connected — a page with the messenger is open |
| Away | 🟡 Yellow | User selected Away from their own status menu |
| Do Not Disturb | 🔴 Red | User selected Do Not Disturb — this also mutes their sound notifications |
| (no dot) | — | User is offline / not connected |
How it works#
When a user opens a page with the messenger, their WebSocket connection registers them as Online. Away and Do Not Disturb are chosen by the user from their own status menu — there is no automatic idle detection, so a connected user stays Online until they change it themselves or disconnect.
| Action | Outcome |
|---|---|
| User loads page with messenger | Online dot appears on their avatar everywhere |
| User selects "Away" from settings | Yellow dot shown to others |
| User selects "Do Not Disturb" from settings | Red dot shown to others, and their own sound notifications are muted |
| User closes browser entirely | Dot disappears after a short timeout |
Status changes propagate to ALL connected users in real-time — no polling lag.
Where presence is shown#
- Conversation headers (next to participant avatars)
- Inbox conversation list (next to each thread's other participant)
- Mini widgets — Friends, Users, Groups
- Member directories (BuddyPress / BuddyBoss / PeepSo / Ultimate Member)
- Mentions autocomplete dropdown
- Recipient picker when starting a new conversation
When presence matters most#
| Use case | Why presence is useful |
|---|---|
| Customer support | See if a rep is available before starting a chat |
| Coaching / consulting | Clients see when the coach is online |
| Dating community | Find users who are actively online for real-time conversation |
| Marketplace | Buyer sees if vendor is reachable now or later |
| Community manager dashboard | See team activity at a glance |
Frequently asked questions#
Can users hide their presence entirely?#
Not in the default UI. To add a "Invisible" mode, hook the presence-status filter and don't broadcast the user's connection events. They'd appear offline to others while still using the chat.
How is "Away" determined?#
The user sets it themselves, from the status menu that also offers Online and Do Not Disturb. There is no automatic idle detection — the plugin does not watch mouse or keyboard activity, so someone with the messenger open stays Online until they change their status or disconnect. The menu can be hidden entirely with Allow users to set their status under WP Admin → Better Messages → Settings → Appearance.
Does presence respect privacy / multiple sites?#
Presence is per-site. A user's presence on Site A doesn't leak to Site B. Same user logged into multiple browsers shows Online if any of those is active.
Does the mobile app show presence?#
Yes — the native mobile app participates in the same presence system. Active mobile-app users appear Online. When the app is backgrounded, they show Away.
Can administrators see invisible mode bypassed?#
No — presence is symmetric. If a user is shown as Online, they ARE online. Admin viewing doesn't reveal a different state.
See also#
- Typing indicator — additional real-time activity feedback
- Message status (sent/delivered/seen) — message-level state
- Instant delivery — same WebSocket connection that powers presence
- Mini widgets — where presence shows in friends / users lists