Messages App Overview
Private one-to-one and small-group messages that land in the recipient’s Inbox — asynchronous like email, governed on their own track, independently of your channels.
What is the Messages App?
Messages is the platform’s asynchronous, inbox-resident person-to-person channel. You send a coworker, manager, or small group a private note; it lands in their Inbox and waits; they read and reply on their own time; it stays as a record. It is deliberately distinct from Chat, the synchronous real-time messenger — the two coexist the way email and instant messaging do.
Because Messages is a first-class app rather than a hidden toggle, admins govern it on its own track: whether private messaging is allowed at all, who can start a conversation, whether files can be attached, and how long history is retained — all independently of channels, broadcasts, and announcements.
Core Value Proposition:
- ✉️ Asynchronous by design — Send-and-forget; the message waits in the Inbox until the recipient reads it, like email
- 📥 One Inbox — Private messages live in the same unified Inbox as notifications and broadcasts, not a separate app
- 🛡️ Governed on its own track — Turn private messaging on, off, or restrict who can start it — separately from your channels
- 🗂️ Compliance-ready retention — Set a per-organization retention window for message history, independent of channel retention
Key Concepts (How It Works)
If you only read one section, read this — it explains the model behind the screens, and the distinctions people get wrong.
Messages (async) vs Chat (sync) — they are two different apps
This is the single most important thing to understand. MangoApps has two person-to-person channels, and they are intentionally kept separate:
| Messages (this app) | Chat | |
|---|---|---|
| Modality | Asynchronous — inbox-resident, like email | Synchronous — real-time messenger |
| Feel | Send now, read/reply later; it’s a record | Live back-and-forth |
| Presence / typing / “who’s online” | ❌ No — by design | ✅ Yes |
| Home | The unified Inbox (Messages folder) | The Chat messenger |
| Governed by | The Messages app (messages) |
The Chat app |
So “DM” belongs to Chat. The async surface is Messages. If you want to see whether someone is online and have a live conversation, that’s Chat. If you want to leave someone a private note they’ll pick up later, that’s Messages. Under the hood a message you have open updates without a manual refresh (delivery rides Action Cable), but Messages deliberately has no presence indicators, no typing indicators, and no live “seen-while-you-watch” receipts — those are Chat’s job.
Where you actually read and send messages: the Inbox, not the app page
Employees do not read or send messages at /apps/messages. That page is an admin-only management surface (usage analytics + governance settings). Everyone reads and sends in the unified Inbox’s “Messages” folder (/inbox?folder=messages), where each conversation opens in a side panel with a scrollable history and a compose box at the bottom.
Two things enforce this split:
- The Messages app tile is hidden from non-admins (they don’t manage the app, so it isn’t shown to them).
- If a non-admin navigates directly to
/apps/messages, they are redirected to the Inbox Messages folder — their actual messages — rather than a dead-end.
So “open the Messages app” means two different things depending on who you are: for an employee it’s the Inbox folder; for an admin it’s the dashboard.
What makes someone an admin here (who sees the app page)
The Messages app page (dashboard + settings) is surfaced only to people who manage the app: a business admin (or above), or a user who has been made the per-app Messages administrator. Everyone else uses messaging entirely through the Inbox.
Note this is separate from who can use messaging. Any member with the app enabled can send and receive messages in the Inbox — messaging itself is not role-gated by default. Admin status only governs who can see the analytics and change the settings.
What determines who can start a message
Starting a new conversation is governed by the “Who can start a message” setting:
- Anyone (default) — every member can open a new thread.
- Admins & managers only — only managers (anyone with at least one direct report) and admins can open a new thread.
Crucially, this gate applies only to starting a new conversation. Replying to an existing thread is always allowed, regardless of the setting — so restricting who can initiate never traps someone mid-conversation.
The app’s on/off is the master switch; the four settings refine it
Don’t confuse the two levels of control:
- App enabled/disabled is the master on/off. When Messages is disabled for a business, the Inbox Messages folder disappears and new messages/replies are blocked platform-wide.
- The four governance settings only refine behavior when the app is on: Group messages (allow small-group threads, not just 1:1), Attachments (allow files and voice notes), Who can start a message, and Retention (days).
1:1 threads are unique; group threads cap at 10
- A one-on-one thread is idempotent — opening a message with the same person reuses your existing thread instead of creating a duplicate. You’ll never have two parallel 1:1 threads with the same coworker.
- A group thread holds up to 10 participants (including you). For anything bigger or longer-running, use a Workspace or a Chat channel.
Archive and read state are per-participant, not global
- Archiving a conversation hides it from your list only — it does not archive it for the other people. A new message resurfaces the conversation for everyone who had archived it, matching standard messenger behavior. (There is no way for one person to hide a thread from everyone else.)
- Read state is tracked per participant: opening a thread marks it read for you and updates your unread badge. Because Messages is async, a read receipt renders when you next open the thread — it is not broadcast live while you watch.
Retention is governed separately from channels
The Retention (days) setting auto-removes messages older than N days (0 = keep forever). This runs daily and is governed independently of channel retention — you can keep message history for a different length of time than your channels, which is exactly the control regulated and frontline organizations need. In v1 the purge is a reversible soft-delete: purged messages drop out of every view and unread count while thread structure stays intact.
At a Glance
| 📊 Active Users | 🎛️ Governance Controls | 🔗 Surfaces | 📱 Mobile Ready |
|---|---|---|---|
| [X]+ organizations | 4 admin settings | Inbox · Composer · Directory · API | ✅ Yes |
Perfect For:
- 🏢 Any employee — quietly message a coworker, manager, or small group from anywhere in the platform, and pick it up in one Inbox
- 🛡️ Tenant & app admins — decide whether private messaging is allowed at all, and if so, who can start a conversation and how long history is kept
- 📋 Compliance / HR (regulated & frontline) — disable ungoverned private back-channels, or retain message history on its own track for recordkeeping and investigations
How It Works
Message Flow
┌───────────────────────────────────────────────────────────────────────────────┐
│ MESSAGE FLOW (ASYNC) │
├───────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ PICK 1+ │ ──▶ │ THREAD │ ──▶ │ MESSAGE │ │
│ │ RECIPIENTS │ │ CREATED │ │ POSTED │ │
│ │ (typeahead) │ │ (1:1 reused │ │ (body + @ │ │
│ │ │ │ if it exists│ │ mentions + │ │
│ │ │ │ · group ≤10)│ │ attachments)│ │
│ └──────────────┘ └──────────────┘ └──────┬───────┘ │
│ │ │
│ ┌───────────────────────────────────────┼───────────────┐ │
│ ▼ ▼ ▼ ▼ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌───────────┐ │
│ │ LANDS IN │ │ @MENTION │ │ UNREAD │ │ LIVE PUSH │ │
│ │ RECIPIENT'S │ │ NOTIFICATION │ │ BADGE ON │ │ TO OPEN │ │
│ │ INBOX │ │ (platform_dm │ │ THEIR INBOX │ │ THREADS │ │
│ │ (Messages) │ │ _mention) │ │ │ │(ActionCable)│ │
│ └──────────────┘ └──────────────┘ └──────────────┘ └───────────┘ │
│ │
└───────────────────────────────────────────────────────────────────────────────┘
Where Conversations Live
┌─────────────────────┐
│ UNIFIED INBOX │
│ /inbox │
└──────────┬──────────┘
│
┌────────────────────────┼────────────────────────┐
▼ ▼ ▼
┌────────────────┐ ┌────────────────┐ ┌────────────────┐
│ Notifications │ │ MESSAGES │ │ Broadcasts │
│ & Actions │ │ (this app) │ │ & Digests │
└────────────────┘ └───────┬────────┘ └────────────────┘
│
▼
┌────────────────────────┐
│ Side Panel (offcanvas)│
│ • Thread header │
│ • Scrollable history │
│ • Compose at the bottom│
└────────────────────────┘
ADMIN ONLY: /apps/messages → Dashboard (analytics) + Settings (governance)
Key Features
✉️ 1:1 and Small-Group Messages
Private correspondence with one person or a small group.
| Feature | Description |
|---|---|
| One-on-one threads | Idempotent — opening a message with the same person reuses your existing thread, never a duplicate |
| Group threads | Start a group with 2+ recipients; capped at 10 participants per thread |
| Multi-recipient picker | Typeahead search of people in your organization — pick one for 1:1, two or more for a group |
| Optional group title | Group threads can carry a title; otherwise the name is derived from the participants |
| Thread context | Threads can be tagged with their origin (e.g. a workspace) so a message keeps its context |
Use Case: From a coworker’s profile, click Send a message. A drawer opens with them pre-filled; type your note and send. If you already have a 1:1 with that person, the existing thread is reused so the whole history stays in one place.
💡 Pro Tip: Keep group threads under the 10-person cap for quick huddles. For a larger group or longer-running work, move to a Workspace or a Chat channel instead.
💬 Rich Messaging
| Feature | Description |
|---|---|
| @mentions | Mention a participant in your message; they get an Inbox notification with a preview of what you said |
| File attachments | Attach files to a message (Drive-backed), when Attachments are enabled for your organization |
| Voice notes | Record and attach a voice note that plays inline in the thread (also gated by the Attachments setting) |
| Edit your own | Authors can edit their own messages; an “(edited)” marker records the change |
| Delete your own | Authors can delete their own messages; deletions are soft (history is preserved for audit) |
| Date dividers | “Today” / “Yesterday” / dated markers group the conversation over time |
Use Case: Drop a photo into a message with @manager, add a quick voice note, and post it. Your manager gets an Inbox notification plus — if they have the thread open — a live push, and picks it up whenever they’re ready.
📥 Unified Inbox Experience
Messages live inside the unified Inbox — there is no separate messaging app for end users.
| Behavior | Description |
|---|---|
| Messages folder | Lists all your conversations, sorted by most recent activity, with pagination |
| Side-panel reader | Clicking a conversation opens a sticky-bottom chat layout in an offcanvas side panel |
| Auto-open a thread | A link to a specific conversation opens it directly in the side panel |
| Unread pills + badge | Per-conversation unread counts and a global unread badge in the Inbox header |
| Read on open | Opening a conversation marks it read and updates your unread count |
| Search | Inbox search matches conversations by participant name/email or message text |
| Archive | Archive a conversation to clear it from your list; a new message brings it back |
🎯 Message From Anywhere
Conversations can be started from multiple places in the product, so you don’t have to hunt for the Inbox first:
- New Message button — at the top of the Inbox Messages folder
- Composer drawer — a Turbo offcanvas drawer with the recipient typeahead and an optional first message, so the conversation opens already started
- Profile / directory / org-chart — a Send a message action on people surfaces (distinct from Chat’s live “Chat” action)
- In-context — a message can be tagged with the workspace or record it was started from
🛡️ Governance & Admin Controls
Messages is governed on its own track — four settings, each with a real runtime effect (no “dead toggles”).
| Setting | What it does |
|---|---|
| App enabled/disabled | Master on/off. When off, the Inbox Messages folder disappears and messaging is blocked org-wide |
| Group messages | Allow small-group (up to 10) threads, not just one-to-one |
| Attachments | Allow files and voice notes in messages (when off, attachments are rejected, not silently dropped) |
| Who can start a message | Anyone or Admins & managers only — replying to an existing thread is always allowed |
| Retention (days) | Auto-remove messages older than N days; 0 = keep forever; runs daily; separate from channel retention |
Use Case: During a compliance review, an admin sets Messages to Admins & managers only and a 90-day retention window — without touching channels or broadcasts. Existing conversations keep working; only starting new threads is restricted, and history rolls off on its own schedule.
💡 Pro Tip: Reach the governance settings from Apps → Messages → Settings, or from Admin → General Settings → Messages. The app’s enabled state is the master switch; the four settings only refine behavior while it’s on.
📊 Admin Dashboard & Analytics
The /apps/messages dashboard (admin-only) gives leaders an at-a-glance view of private-messaging usage.
Usage metrics:
- Messages sent (all time, excluding deleted)
- Last 30 days message volume
- Conversations (1:1 and group threads)
- Active (30d) — threads with activity in the last 30 days
- Participants — unique senders
- Reactions — emoji reactions on messages
Trend: a 30-day activity chart of daily message volume, plus a governance summary card showing the current state of all four settings at a glance.
🔒 Security & Tenant Isolation
| Layer | Enforcement |
|---|---|
| Business scoping | Threads, messages, and participants are all tenant-scoped — data never crosses organizations |
| Recipient validation | The composer filters recipients to people in your organization; cross-organization messages aren’t possible |
| Partial-match guard | If any picked recipient can’t be resolved, the whole send is stopped rather than quietly dropping people |
| Participant gate | You can only post to a conversation you’re a participant in |
| Author-only edit/delete | You can only edit or delete your own messages |
| Soft delete + audit | Deleted messages keep a tombstone for audit; retention purges are reversible in v1 |
🔗 REST API
Messages exposes a token-authenticated REST API for programmatic access, backed by the same service layer as the UI (so governance, mentions, and delivery all apply):
| Endpoint | Capability |
|---|---|
| List messages | Paginated conversation history (newest first), with attachments and voice notes preloaded |
| Compose | Post a message with text and file attachments (multipart) |
| Edit | Update your own message |
| Delete | Soft-delete your own message |
User Roles & Permissions
| Role | Capabilities |
|---|---|
| Employee | Read/send messages in the Inbox; start 1:1 or group threads (subject to Who can start); @mention, attach files/voice notes; edit/delete own messages; archive conversations |
| Manager | Same as Employee. When Who can start is restricted to “Admins & managers only,” managers retain the ability to start new threads |
| HR / Admin | Everything above, plus the Messages app page: usage analytics dashboard and the four governance settings |
| Per-app Messages admin | A non-admin explicitly granted app-admin for Messages — can see the dashboard and manage settings |
Access notes:
- The Messages app tile and dashboard are shown only to business admins (or above) and per-app Messages admins.
- Using messaging (Inbox) is open to any member while the app is enabled — it is not role-gated by default.
- Who can start a new thread is the one behavior an admin can restrict by role (Anyone vs Admins & managers).
How We Compare
Modeling private messaging as its own governed surface — separable from channels — is where Messages differentiates. Governance facts for competitors below were verified against their official documentation (July 2026).
| Capability | MangoApps Workforce | Microsoft Teams | Slack | Google Chat |
|---|---|---|---|---|
| 1:1 + small-group private messages | ✅ | ✅ | ✅ | ✅ |
| Private messages in a unified Inbox (with notifications & broadcasts) | ✅ | ❌ | ❌ | ❌ |
| Org-wide switch to disable private messaging while keeping channels | ✅ | ✅ | ❌ | ❌ |
| Restrict who can start a private conversation | ✅ | ⚡ | ⚡ | ❌ |
| Retention for private messages set separately from channels | ✅ | ✅ | ⚡ | ❌ |
| Built into an HR / Workforce platform (not a standalone tool) | ✅ | ❌ | ❌ | ❌ |
Legend: ✅ Included · ❌ Not natively available · ⚡ Limited / Enterprise-tier / group-scoped only
How to read this:
- Microsoft Teams is the proof point that a dedicated private-chat off-switch is a real, supported pattern: an org-wide messaging policy can disable private chat while channel messaging keeps working.
- Slack has no single org-wide switch to disable all internal DMs; it offers group-scoped Information Barriers (Enterprise) and controls for external (Slack Connect) DMs, but not a blanket internal off-switch.
- Google Chat treats DMs, group messages, and spaces as largely all-or-nothing — the tradeoff Messages explicitly avoids.
Why MangoApps Workforce?
- 📥 One Inbox — private messages sit alongside notifications and broadcasts, not in a separate app
- 🛡️ Governed on its own track — turn messaging on, off, restrict who starts it, and retain it — all independently of your channels
- 🤖 AI-native platform — Messages is one app in a unified Workforce platform, not a bolt-on messenger
Getting Started
For Employees
- Open Inbox from the rail
- Switch to the Messages folder
- Click New Message, search a name or email, pick one or more recipients, and send
- Click any conversation to open it in the side panel; reply from the compose box at the bottom
For Managers
- Same flow as employees — messaging isn’t role-gated
- Use group messages (up to 10 people) for quick huddles outside a workspace
- If Who can start is restricted, you retain the ability to open new threads
For Administrators
- Confirm Messages is enabled for your organization (Apps Marketplace, or Admin → General Settings → Messages)
- Open Apps → Messages to see the usage dashboard
- Click Settings to configure Group messages, Attachments, Who can start a message, and Retention (days)
- Review the 30-day activity trend and governance summary periodically
Best Practices
- ✅ Use Messages for private, person-to-person notes you don’t need answered instantly — reach for Chat when you want a live, synchronous conversation
- ✅ @mention people so they get an Inbox notification, not just a passive thread update
- ✅ Keep groups under the 10-participant cap — move bigger or longer-running work to a Workspace or Chat channel
- ✅ Admins: set Who can start a message to match your culture — “Anyone” for open orgs, “Admins & managers only” to prevent ungoverned back-channels
- ✅ Admins in regulated/frontline settings: set a Retention window appropriate to your recordkeeping obligations — it’s governed separately from channels
Frequently Asked Questions
Q: What’s the difference between Messages and Chat?
A: Messages is asynchronous — like email, it lands in the recipient’s Inbox and waits for them to read and reply on their own time, with no presence or typing indicators. Chat is the synchronous real-time messenger (live back-and-forth, “who’s online”). They’re two separate apps, and both are kept. “DM” belongs to Chat.
Q: Where do I actually read and send my messages?
A: In the unified Inbox, in the Messages folder. The /apps/messages page is an admin-only dashboard for analytics and settings — if you’re not an admin and go there, you’re redirected to your Inbox.
Q: How many people can I add to a group message?
A: Up to 10 participants, including yourself. For a larger group, use a Workspace or a Chat channel.
Q: Can I message someone in another organization?
A: No. The recipient picker is scoped to people in your own organization, and any unresolved recipient stops the send — cross-organization messages aren’t possible.
Q: If an admin restricts who can start messages, can I still reply?
A: Yes. The “Who can start a message” setting only limits starting a new conversation. Replying to an existing thread is always allowed.
Q: Can I edit or delete a message after sending?
A: Yes — but only your own. Edits show an “(edited)” marker; deletes are soft (a tombstone is kept for audit).
Q: What happens to old messages under a retention window?
A: If an admin sets Retention to N days, messages older than N days are automatically removed daily (0 = keep forever). It’s governed separately from channel retention.
Related Resources
- Apps & Extensions Overview — All apps in MangoApps Workforce
- Chat App Overview — The synchronous, real-time messenger (the other half of the pair)
- Workspace App Overview — For longer-running team collaboration
- Ask AI Overview — The conversational AI assistant across MangoApps Workforce
Messages keeps private one-to-one and small-group conversations in the same Inbox as everything else that needs your attention — asynchronous, private, and governed on their own track.
</content>
</invoke>