Chat App Overview
Connect your workforce in real time with the Chat App — a full-featured messaging platform for direct messages, group chats, channels, threaded replies, @mentions, emoji reactions, presence indicators, and AI-powered search.
What is the Chat App?
The Chat App is a Pusher-powered real-time messaging platform built into MangoApps Workforce. It provides one-to-one direct messages, multi-person group chats, and channels — all tenant-isolated, searchable, and auditable. Every message, reaction, and mention stays within your organization’s security boundary while giving employees the speed and familiarity of consumer-grade chat.
Core Value Proposition:
- 💬 Instant Communication — Real-time direct messages, group chats, and channels with typing indicators and read receipts
- 🔍 Searchable History — Full-text and AI-powered semantic search across every conversation you have access to
- 👥 Team Collaboration — @mentions, threaded replies, emoji reactions, and file attachments in every room
- 🛡️ Enterprise Control — Admin-configurable feature toggles, analytics dashboard, and CSV export — all business-scoped
At a Glance
| ⏱️ Setup Time | 🔗 Integrations | 📱 Mobile Ready | 🖥️ Desktop Client |
|---|---|---|---|
| 5 minutes | Pusher (real-time) | ✅ Yes | ✅ Mac & Windows |
Perfect For:
- 🏢 All employees — Quick 1:1 messages and team conversations without leaving the platform
- 📱 Frontline & mobile workers — Lightweight mobile views for room list, messaging, and mentions
- 📈 Admins — Company-wide adoption analytics, engagement metrics, and feature control
How It Works
Messaging Flow
┌───────────────────────────────────────────────────────────────────────────────┐
│ CHAT MESSAGING FLOW │
├───────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ START CHAT │───▶ │ PICK PEOPLE │───▶ │ ROOM OPENS │ │
│ │ (1 or 2+) │ │ (modal) │ │ (real-time) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │ │
│ ┌─────────────────────────────────────┤ │
│ │ │ │
│ ▼ ▼ │
│ ┌──────────────────────────────────┐ ┌──────────────────────────────────┐ │
│ │ 1 PERSON = DM │ │ 2+ PEOPLE = GROUP │ │
│ │ • Single-column layout │ │ • Two-column with members panel │ │
│ │ • No members panel │ │ • Room admin manages members │ │
│ │ • Cannot leave │ │ • Add / remove / leave │ │
│ │ • Reuses existing room │ │ • Auto-named from member names │ │
│ └──────────────────────────────────┘ └──────────────────────────────────┘ │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Messages │ │ Threads │ │Reactions │ │ Files │ │
│ │ & @Mention│ │ (flat) │ │ (emoji) │ │ (attach) │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ │
└───────────────────────────────────────────────────────────────────────────────┘
Real-Time Architecture
┌─────────────────┐
│ CHAT APP │
└────────┬────────┘
│
┌─────────────┬───────────────┼───────────────┬─────────────┐
▼ ▼ ▼ ▼ ▼
┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐
│ Pusher │ │ PostgreSQL│ │ Active │ │ pgvector │ │ Desktop │
│ (realtime)│ │ (FTS) │ │ Storage │ │ (semantic)│ │ Client │
└─────┬─────┘ └─────┬─────┘ └─────┬─────┘ └─────┬─────┘ └─────┬─────┘
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐
│ Typing │ │ Full-text │ │ File │ │ "Find a │ │ Mac & │
│ indicators│ │ search │ │ uploads & │ │ message │ │ Windows │
│ presence │ │ keyword │ │ drag-drop │ │ about…" │ │ apps │
│ receipts │ │ matching │ │ │ │ search │ │ │
└───────────┘ └───────────┘ └───────────┘ └───────────┘ └───────────┘
Key Features
💬 Direct Messages & Group Chats
Start conversations instantly with anyone in your organization.
| Feature | Description |
|---|---|
| Direct Messages (1:1) | Private conversations between two people — room is reused if one already exists |
| Group Chats | Multi-person rooms with auto-generated names (comma-joined first names) |
| Channels | Named rooms with a bullhorn icon for broader team communication |
| Start a Chat Modal | Unified modal with people picker — select 1 person for DM, 2+ for group |
| Room Reuse | Starting a chat with someone you already have a DM with opens the existing room |
| Self-Chat Prevention | You cannot create a conversation with only yourself |
Use Case: A project lead starts a group chat with three teammates to coordinate a product launch. The room auto-names itself from member names, and the lead becomes room admin.
📝 Messaging & Composer
Rich messaging with threaded replies, reactions, and attachments.
| Feature | Description |
|---|---|
| Text Messages | Compose with Shift+Enter for newlines; send with the paper-plane button |
| Threaded Replies | Click “Reply” on any message to open an offcanvas thread panel — flat, one-level threads |
| Emoji Reactions | Hover to reveal the reaction picker with 10 supported emojis; click again to remove |
| File Attachments | Paperclip button opens drag-and-drop upload panel with configurable size limits |
| @Mention Autocomplete | Type @ to see matching room members (up to 10 suggestions, excludes yourself) |
| Message Pagination | “Load older” link at the top for cursor-based history loading |
| Empty Room Prompt | New rooms show “No messages yet — say hi.” |
Use Case: An engineer replies in a thread to keep the main conversation clean, while a manager reacts with a thumbs-up to acknowledge a status update.
💡 Pro Tip: Use @mentions to ensure teammates get notified — mentioned messages appear in their dedicated Mentions inbox.
⚡ Real-Time Features (Pusher-Powered)
See who’s online, who’s typing, and when messages are read — all in real time.
| Feature | Description |
|---|---|
| Online Presence | Green dot on avatars in room list and header; presence avatar strip shows who is viewing |
| Typing Indicators | “Alice is typing…” appears below messages when a teammate is composing |
| Read Receipts | “Seen by [name]” on sent messages in DMs and group chats (channels excluded) |
| Live Message Delivery | Messages appear instantly via Pusher broadcast — initially queued (202), then rendered |
| Heartbeat | Keeps presence status up to date as long as the tab is open |
Behind the Scenes: Seven background jobs power the real-time pipeline — CreateMessageJob persists and broadcasts via Pusher, UpdateUnreadCountsJob manages badge counts, NotifyMentionedUsersJob creates platform notifications for @mentions, BroadcastReadReceiptJob and BroadcastReactionJob push receipts and reactions to all room members, and EmbedMessageJob / BackfillEmbeddingsJob generate pgvector embeddings for semantic search.
Note: Real-time features require Pusher configuration. Without Pusher, the app still works for all CRUD operations — only typing indicators, read receipts, and presence are degraded.
📋 Mentions Inbox
A dedicated feed of every @mention directed at you across all chat rooms.
| Feature | Description |
|---|---|
| Mention Feed | Shows sender avatar, name, room context (“in #Engineering”), timestamp, and truncated body |
| Jump to Message | Click any mention to navigate directly to the message in its room (anchor link) |
| Cursor Pagination | “Load older mentions” link when more exist |
| Empty State | “No mentions yet. When someone @mentions you in a chat room, it’ll show up here.” |
🔍 Search
Find any message across every room you have access to with keyword or AI-powered semantic search.
| Feature | Description |
|---|---|
| Keyword Search | PostgreSQL full-text search with highlighted <mark> tags on matching terms |
| Semantic Search | AI-powered “find a message about…” mode using pgvector embeddings (admin-enabled) |
| Filter by Room | Dropdown to narrow results to a specific room (default: “All rooms”) |
| Filter by Sender | Autocomplete “From” field to search messages from a specific person |
| Filter by Date | Date range picker scoped to the last 90 days |
| Thread Badge | Thread replies show a blue “reply” badge in results |
| Jump to Message | Each result includes a link to navigate directly to the message in its room |
| Reset Filters | One-click button clears all filters and returns to the clean search page |
Use Case: An employee searches for “quarterly budget” filtered to the #Finance channel and last 30 days, instantly finding the relevant discussion thread.
💡 Pro Tip: When Semantic Search is enabled by your admin, switch to “Semantic” mode to find messages by meaning — ask “messages about project deadline changes” instead of guessing exact keywords.
👥 Group Member Management
Room admins control membership; regular members can leave at any time.
| Feature | Description |
|---|---|
| Room Admin Role | The creator of a group/channel becomes its admin (blue “Admin” badge) |
| Add Members | Room admins click “+” to open the “Add members to group” modal with people picker |
| Remove Members | Room admins click the red user-minus icon to remove a member |
| Leave Group | Any member clicks “Leave group” to exit voluntarily |
| Sole Admin Guard | The last admin cannot leave without promoting another member first |
| Re-Join | Re-adding someone who previously left re-joins them to the room |
| DM Restriction | DMs have no members panel, no add/remove, and no leave button |
📊 Analytics & Insights (Admin Only)
Company-wide adoption and engagement metrics with CSV export.
Analytics Dashboard (4 Metric Cards):
| Metric | Description |
|---|---|
| Adoption | Percentage of employees actively using chat, with 12-week trend chart |
| DAU/MAU Stickiness | Daily active / monthly active ratio with 30-day trend |
| Cross-Department Communication | Percentage of messages crossing department boundaries, with department-pair breakdown |
| Mention Response Rate | Response percentages at 1h, 4h, and 24h thresholds, plus median response time |
Export: CSV download with filename chat_analytics_[business_id]_[date].csv containing summary metrics, daily DAU (30 days), adoption trend (12 weeks), and top department-pair message volume.
📈 Personal Dashboard
Every user sees a personal activity dashboard with five widgets.
| Widget | Description |
|---|---|
| Active Conversations | Count of rooms with both inbound + outbound messages in the past 7 days, with 4-week sparkline |
| Mention Response Time | Your median vs. team median response time to @mentions, with answered mention counts |
| Download Desktop Client | Platform-appropriate button (“Get it on Mac” or “Get it on Windows”) for Messenger |
| Messaging Hours | Heatmap of your messaging activity patterns |
| Top Conversations | List of your most active rooms with trend indicators |
Empty State: New users with no activity see “0” for active conversations, “—” for response times, and a helpful info alert explaining that response time will appear once teammates start looping them in.
⚙️ Admin Settings
Admins configure chat features and behaviors for the entire organization. Changes take effect immediately.
| Section | Toggle/Field | Default | Description |
|---|---|---|---|
| Messaging features | Direct messages | ✅ ON | Allow users to start 1-on-1 chats |
| Messaging features | Group chats | ✅ ON | Allow users to create multi-person group chats and channels |
| Messaging features | File uploads | ✅ ON | Allow users to attach files to chat messages |
| Attachments | Max attachment size (MB) | 25 | Per-file size limit (range 1–500 MB) |
| Realtime | Typing indicators | ✅ ON | Show “name is typing…” in rooms |
| Realtime | Read receipts | ✅ ON | Show “Seen by name” on sent messages |
| Search | Semantic search | ❌ OFF | Enable AI-powered vector search (requires embeddings backfill) |
Runtime Effects:
- Disabling both DMs and Group chats hides the “Start a Chat” button entirely
- Disabling File uploads hides the paperclip attachment button in the composer
- Toggling Typing indicators and Read receipts controls real-time feedback per room
📱 Mobile Access
Chat is available on mobile devices with a streamlined interface optimized for on-the-go messaging.
| Feature | Description |
|---|---|
| Room List | Browse all conversations with unread indicators |
| Room View | Read and send messages from any room |
| Mentions | View your @mentions feed on mobile |
| Create Messages | Post messages using the same background job pipeline as desktop |
Mobile URL: /m/apps/chat — served by dedicated mobile controllers and views with no Stimulus overhead.
🔌 REST API
A full JSON API mirrors every web feature, enabling integrations and custom clients.
| Endpoint Group | Capabilities |
|---|---|
| Rooms | List, create, show, pin/unpin, mark read, list files |
| Messages | Create, edit (author only), soft-delete (author or room admin) |
| Members | List, add, update role, remove/leave |
| Threads | Fetch parent + replies |
| Reactions | Add/remove emoji reactions |
| Search | Keyword + semantic search with sender autocomplete |
| Mentions | Cursor-paginated mentions feed |
| Presence | Heartbeat + online status (per user or per room) |
| Settings | Read config (any user) + update (admin only) |
| Pusher | Bearer-token channel auth + public config (key/cluster) |
Base URL: /api/v1/chat/ — authenticated via Bearer token or session.
🔔 Notifications
| Type | Description |
|---|---|
| @Mention Notification | Instant notification when someone @mentions you in a chat room |
| Mentions Inbox | Dedicated feed aggregating all your mentions across rooms |
| Unread Badge | Blue pill badge on rooms with unread messages in the room list |
User Roles & Permissions
| Role | Capabilities |
|---|---|
| Employee | View Dashboard, Chats, Search, Mentions; start DMs and groups; send messages, react, reply in threads; search chat history; manage members if room admin |
| Room Admin | All employee capabilities + add/remove members from their group/channel |
| Admin | All employee capabilities + Analytics dashboard, CSV export, Settings configuration |
Key Access Boundaries:
- Employees cannot access Analytics (
/apps/chat/analytics→ 403 Forbidden) - Employees cannot access Settings (
/apps/chat/settings→ redirect with “Admin access required”) - Analytics and Settings tabs are hidden from the sidebar for non-admins
- All room data is scoped to user membership — direct URL access to non-member rooms returns 403
How We Compare
See how MangoApps Workforce Chat stacks up against leading enterprise messaging solutions:
| Feature | MangoApps Workforce | Slack | Microsoft Teams | Google Chat |
|---|---|---|---|---|
| Direct Messages | ✅ | ✅ | ✅ | ✅ |
| Group Chats & Channels | ✅ | ✅ | ✅ | ✅ |
| Threaded Replies | ✅ | ✅ | ✅ | ✅ |
| Emoji Reactions | ✅ | ✅ | ✅ | ✅ |
| Typing Indicators | ✅ | ✅ | ✅ | ✅ |
| Read Receipts | ✅ | ❌ | ✅ | ✅ |
| AI-Powered Semantic Search | ✅ | 💰 | ❌ | ❌ |
| Built-in Analytics Dashboard | ✅ | 💰 | 💰 | ❌ |
| Unified HR Platform | ✅ | ❌ | ❌ | ❌ |
| Admin Feature Toggles | ✅ | ✅ | ✅ | ⚡ |
| Legend: ✅ Included | ❌ Not Available | 💰 Paid Add-on | ⚡ Limited |
Why MangoApps Workforce?
- 🔗 Unified Platform — Chat works seamlessly alongside Recognition, Performance, Tasks, Workspaces, and 70+ other apps in one system — no switching between tools
- 💰 No Hidden Costs — Analytics dashboard and semantic search included, not sold as enterprise add-ons
- 🏢 Multi-Tenant by Design — Every message, room, and search result is automatically tenant-isolated — no configuration needed
Getting Started
For Employees
- Navigate to Apps → Chat in the left sidebar
- Click “Start a Chat” to begin a DM (select 1 person) or group (select 2+)
- Send messages, react with emoji, and reply in threads
- Use Search to find past messages by keyword, sender, room, or date
- Check the Mentions feed for messages where you were @mentioned
For Administrators
- Go to Apps → Chat → Settings to configure feature toggles
- Enable or disable Direct Messages, Group Chats, and File Uploads as needed
- Set the Max attachment size appropriate for your organization
- Toggle Typing indicators and Read receipts based on user preferences
- Review Analytics regularly to track adoption and cross-department communication
- Export CSV data for executive reporting or external analysis
Best Practices
- ✅ Use @mentions to direct messages to specific people — they get a dedicated notification
- ✅ Keep conversations organized by starting group chats for project teams rather than long DM chains
- ✅ Use threaded replies to keep side discussions out of the main conversation flow
- ✅ Check the Search page when looking for past decisions or shared links — filter by room and date range for faster results
- ✅ Admins should review Analytics monthly to identify departments with low adoption and encourage usage
- ✅ Set reasonable file size limits to prevent storage issues while allowing practical document sharing
Frequently Asked Questions
Q: What happens if I start a chat with someone I already have a DM with?
A: The app automatically opens your existing DM room instead of creating a duplicate — you’ll never have two conversations with the same person.
Q: Can I leave a direct message conversation?
A: No. DMs are permanent 1:1 conversations. You can leave group chats and channels, but not DMs.
Q: Who can add or remove members from a group chat?
A: Only the room admin (the person who created the group). Room admins see a “+” button and remove icons in the members panel. Regular members only see a “Leave group” option.
Q: What does the semantic search toggle do?
A: When enabled by your admin, it adds an AI-powered “Semantic” search mode alongside keyword search. Instead of matching exact words, semantic search understands meaning — so “messages about project deadline changes” finds relevant discussions even if those exact words weren’t used.
Related Resources
- Direct Messages App — Platform-wide private messaging via the unified Inbox
- Apps & Extensions Overview — Browse the full MangoApps marketplace
- Workspace App — AI-native project collaboration with message boards, to-dos, and files
The Chat App brings your team’s conversations together in one secure, searchable, real-time platform. Start chatting today.