Your Data Is Yours
Better Messages stores all messaging data exclusively in your WordPress database. The WebSocket relay only routes encrypted events to facilitate real-time delivery — no message content, no user data, no conversation history is retained on the relay infrastructure. You maintain full ownership and control of every byte.
Data ownership is preserved even when using the WebSocket-version cloud relay. The cloud is a router, not a database.
What it adds#
- All messages stored in your WordPress database only — no external data store
- No message content ever stored on WebSocket servers
- Only encrypted routing data (user IDs, thread IDs, delivery statuses) temporarily processed
- Zero retention on relay infrastructure — events are forwarded then discarded
- Full data portability — export, backup, migrate via standard WordPress tools
- GDPR data sovereignty compliance built-in
Data location matrix#
| Data type | Location |
|---|---|
| Message content (text, formatting) | Your WordPress database (bm_messages table) |
| Attachments / files | Your WordPress media library (uploads folder) |
| User profiles | Your WordPress wp_users + custom fields |
| Conversation metadata (participants, subjects, timestamps) | Your WordPress database |
| Reactions, mentions, pinned messages | Your WordPress database |
| Read receipts, delivery statuses | Your WordPress database |
| Routing data on relay | Transient memory only — discarded after forwarding |
| AI bot conversation content | Routed through AI provider (OpenAI / Anthropic / Google) per their terms |
How it works#
When a message is sent:
- Browser → your WordPress server: the message text and metadata
- Your server: stores the message in the database, then encrypts a routing payload
- Your server → WebSocket relay: pushes the encrypted payload with routing info (user IDs, thread ID)
- Relay → all participants' browsers: forwards the encrypted payload
- Relay: discards the payload after forwarding — no retention
- Recipient browsers: decrypt and render the message
The relay is stateless for message content — it has no persistent storage of what flows through it.
When data ownership matters most#
| Use case | Why it matters |
|---|---|
| GDPR / DSAR requests | You can export and erase data without involving third parties |
| Site migration | Standard WordPress backup/restore preserves all chat history |
| Compliance audits | Single point of data residence is auditable |
| Self-hosted requirements | Combine with the self-hosted plan for full sovereignty |
| Data residency rules | Data stays in your hosting's region (the relay routes ephemeral packets only) |
Frequently asked questions#
What if the WebSocket relay is breached?#
A breach of the relay would expose only currently-in-transit encrypted packets (which would still need AES-256 to decrypt) and routing metadata (user IDs, thread IDs). Historical messages, profiles, and attachments are not at risk — they're on your server.
Can I migrate away from Better Messages and keep my data?#
Yes — all data is in standard WordPress tables. Export via WordPress's built-in tools or directly from the database. The plugin doesn't lock you in.
What about voice / video calls?#
Call metadata (participants, duration, started time) is stored in your WordPress database. The actual audio/video streams flow peer-to-peer (for 1-on-1) or through the media server (for groups) — never stored anywhere.
Does AI bot content stay in my database?#
The AI conversation itself (user message + bot response) is stored in your database like any conversation. But the user's message is also sent to the AI provider's API (OpenAI / Anthropic / Google) to generate the response — that's a one-time transit, subject to the AI provider's terms.
How does the self-hosted plan differ?#
The self-hosted plan moves the WebSocket relay onto infrastructure you control. The data ownership pattern is the same (data stays in your DB), but the relay infrastructure also stays on your servers — useful for very strict data-sovereignty requirements.
See also#
- Privacy & GDPR — full privacy posture
- Servers location — where the relay servers run
- Self-hosted plan — for strict data-sovereignty needs
- Auto-delete messages — retention policy
- End-to-end encryption — content-level protection