Skip to main content
Loading...
Messages
Messages
Messages

Messages

Private one-to-one and small-group mail that lands in the recipient's Notifications — asynchronous, like email, governed on their own track.

MangoApps

Category
Productivity & Utility
Version
1.0.0
Published
Jun 2026
Type
App

Overview

Messages is the async, on-the-record counterpart to MangoApps Chat: private one-to-one and small-group messages that behave like email rather than real-time chat, surfaced in the same Notifications inbox as every other notification, task, and approval — not a separate app to remember to check. Start a private thread with a teammate, manager, or a group of up to ten people directly from the user directory, the org chart, a profile, or a performance self-assessment.

Because it's governed separately from MangoApps Chat's real-time channels, an admin can turn Messages off, restrict who's allowed to start a thread, or set its own retention window without touching Chat at all. Voice notes are transcribed automatically, so a reply can be skimmed as text instead of played back.

Private one-to-one and small-group messaging governed on its own track — rich text, @mentions, attachments, and auto-transcribed voice notes delivered live into Notifications.

Highlights

Message a teammate, manager, or small group privately from the Inbox, user directory, org chart, or a performance review.
Send rich text with @mentions, Drive-backed file attachments, voice notes (auto-transcribed), and emoji reactions in every thread.
Receive messages live over Action Cable, with per-participant read state driving accurate unread badges.
Run group threads — rename them, add people, leave one you no longer need, mute noisy conversations, or archive to hide from your list.
Govern private messaging on its own track — disable it, restrict who can start a thread, or set a retention window, all without touching channels.
Give admins a usage dashboard — message volume, active conversations, reactions, and a 30-day activity trend.

Capabilities

Conversations & Threads
  • One-to-one messages Auto-deduped per pair — messaging someone you already have a thread with reopens it (ThreadService#find_or_create_one_on_one).
  • Small-group messages Up to 10 participants per thread (GROUP_PARTICIPANT_LIMIT); admin-toggleable via group_dms_enabled.
  • Archive a conversation Per-participant hide (participant.archived_at) — a new message from anyone resurfaces it for everyone; the thread is never destroyed.
Messaging & Content
  • Rich text with @mentions MentionParser resolves @[Name](mention:id) against thread participants; mentioned users get a platform_dm_mention notification.
  • File attachments Per-message Drive-backed attachments (Drives::OwnerAttachable); admin-toggleable via file_uploads_enabled.
  • Voice notes with transcription Record-and-send voice messages; audio + Whisper transcript stored on VoiceTranscript, rendered under the message body.
  • Emoji reactions Fixed 5-emoji reaction set (👍 ❤️ 😂 🎉 ✅) toggled per message (Platform::Reactable / InboxReactionsController#toggle).
  • Edit and delete your messages Author-only; delete is soft (deleted_at) so read/unread accounting and thread structure survive. Edits re-broadcast live.
  • Per-thread saved drafts Unsent text is saved per thread (inbox_drafts#save) and restored when you reopen the conversation.
Inbox, Delivery & Discovery
  • Live delivery via Action Cable Platform::DirectMessageChannel broadcasts message_created / _updated / _deleted to every participant in real time.
  • Per-participant read state last_read_at per participant drives accurate unread badges — independent of the Notification read flag.
  • Unified Inbox 'Messages' folder The end-user surface: the Inbox 'Messages' folder lists active threads for the signed-in user.
  • Search across threads Inbox search matches DM threads by participant name/email or message body (capped at 50 results).
  • New-message + mention notifications Offline in-app Notifications per message, throttled to one unread per thread per recipient; body text is never included (lock-screen safe).
  • Cross-platform entry points 'Message' button on the user directory, org chart, profile side panel, and an EPMS self-assessment — all gated by can_start_new_message?.
  • Mobile runtime Dedicated phone surface at /m/apps/messages (list, new, thread); desktop admins auto-redirect there on mobile.
Group Management
  • Rename a group conversation Group-only (ThreadService#rename, 120-char cap); 1:1 titles are always the other person's name and can't be renamed.
  • Add people to a group Strict business-scoped resolution; re-adding an existing member is a no-op; enforces the 10-participant cap (ThreadService#add_participants).
  • Leave a group Removes your own participant row; remaining members keep full history. 1:1 threads can't be left — archive instead.
  • Mute / unmute a conversation Per-participant muted_until; muted threads are excluded from the unread badge and skip new-message notifications.
Admin & Governance
  • Enable / disable messages org-wide The Messages app's enabled state is the master switch — turn off private messaging while keeping Chat channels (Teams 'No Private Chats' parity).
  • Restrict who can start a message Everyone, managers and above, app admins only, or named groups — enforced in ThreadService#can_initiate? and mirrored in the entry-point buttons.
  • Toggle group messages group_dms_enabled gates 3+-participant threads; 1:1 messaging stays available when off.
  • Toggle attachments & voice notes file_uploads_enabled gates files/voice notes; the composer hides the controls and the service fails loudly on stale posts.
  • Retention window retention_days soft-deletes messages older than N days via the daily Messages::RetentionPurgeJob, and the nightly platform purge destroys them permanently 30 days after that (0 = keep forever). Governed separately from channels.
  • Usage analytics dashboard The Messages app home is an admin surface: message volume, conversation counts, active-30d threads, senders, reactions, and a 30-day trend chart.
  • Hard purge for compliance Two automatic stages: the daily job soft-deletes messages past the retention window (their author can restore one from Trash for 30 days), then the nightly platform purge destroys the row and its voice notes for good — effective lifetime is retention_days + 30. Files a message carried stay in Drive under Drive's own retention; on-demand purge and legal hold are post-v1.
Limits & Specs
  • Conversation types: One-to-one and small-group
  • Group size cap: 10 participants per thread
  • Real-time transport: Action Cable (Platform::DirectMessageChannel)
  • Message storage: PostgreSQL (platform_direct_message* tables, tenant-isolated)
  • Reaction set: Fixed 5 emoji (👍 ❤️ 😂 🎉 ✅)
  • Default retention: Forever; per-tenant retention window configurable
  • Surfaces: End users: unified Inbox → Messages folder + /m/apps/messages. Admins: the Messages app dashboard.
  • Pricing: Included with MangoApps Workforce

Use cases

Quick coordination
Employees message a teammate privately without leaving the platform — one click from the Inbox, user directory, org chart, or a profile card.
Small-group huddle
Spin up a private group thread (up to 10 people) for a specific task, name it, add members as the work grows, and keep searchable history.
Manager ↔ frontline check-in
Reach a frontline employee directly, on web or phone; voice notes and read receipts keep async check-ins fast for deskless staff.
Compliance-controlled messaging
Admins disable ungoverned back-channels, restrict who can start a thread, or set a retention window on messages alone — independently of channels.
Admin usage oversight
IT and comms leads watch message volume, active conversations, senders, and a 30-day trend on the Messages app dashboard.

FAQ

Messages owns private one-to-one and small-group conversations that land in your unified Inbox. The Chat app owns real-time channels and group rooms. Splitting them lets an admin govern private messaging independently of public channels — disable messages while keeping channels, or vice-versa.

Yes. Disabling Messages turns off private messaging everywhere without affecting channels. Admins can also restrict who may start a thread, disable group threads or attachments, and set a retention window.

No. Messages is included with MangoApps Workforce as a platform-included capability — it is not metered and not sold as a standalone line.