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 actively on the site, browsing or chatting |
| Away | 🟡 Yellow | User inactive for ~5 minutes (configurable) |
| Do Not Disturb | 🔴 Red | User manually set themselves as unavailable |
| (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. As they interact, their status stays Online. After a few minutes of inactivity, the plugin marks them as Away. They can manually set Do Not Disturb to override.
| Action | Outcome |
|---|---|
| User loads page with messenger | Online dot appears on their avatar everywhere |
| User stops moving / typing / clicking for 5 minutes | Status changes to Away |
| User resumes activity | Status returns to Online |
| User selects "Do Not Disturb" from settings | Red dot shown to others |
| 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?#
Based on browser activity — mouse movement, key presses, scrolling. After ~5 minutes of no activity, the plugin marks the user Away.
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