Social Feed App Overview
A unified company feed with a clear hierarchy — Must-Read, Operational, and Social — designed so compliance content can never get lost in the noise.
What is the Social Feed App?
Social Feed is the company timeline rebuilt as a governed communications channel rather than a free-for-all. Three content tiers are enforced by design: Must-Read (acknowledgement-tracked, expiry-bound, reserved for operational content), Operational (work-related), and Social (culture, recognition, milestones). Every post can be audience-targeted (everyone, segments, “my direct reports”), and read tracking is computed from real in-viewport dwell, not just a click. Mobile-first with a bottom-tab layout designed for frontline staff.
Core Value Proposition:
- 📌 Must-Read with Acknowledgement — Compliance-grade posts with persistent Acknowledge CTA, mandatory expiry, and immutable acknowledgement records.
- 🎯 Audience-Targeted — Send to everyone, a segment, or virtual audiences like “My Direct Reports” — never spray-and-pray.
- 📱 Frontline-First — Bottom-tab mobile layout with large touch targets; the same governance UX desktop admins get.
- 🛡️ Governed by Default — ~50 admin toggles control who can post to Everyone, who can mark Must-Read, notification frequencies, comments, media uploads, and more.
At a Glance
| ⏱️ Setup Time | 📑 Content Tiers | 🎯 Audience Modes | 📱 Mobile Ready |
|---|---|---|---|
| ~10 minutes | 3 (Must-Read / Operational / Social) | Everyone + Segments + Virtual | ✅ Yes (bottom-tab) |
Perfect For:
- 🏢 Frontline-heavy organizations — Mobile-first feed designed around 30-second reads on a phone, not a 30-minute browse on a laptop.
- 📢 Comms / HR teams — Must-Read with acknowledgement gives compliance content the weight it needs without spamming everyone.
- 👥 Department managers — Segment-targeted posts so updates don’t leak across teams that don’t need them.
How It Works
┌─────────────────────────────────────────────────────────────────────────┐
│ SOCIAL FEED — CONTENT HIERARCHY │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ MUST-READ │ │ OPERATIONAL │ │ SOCIAL │ │
│ │ │ │ │ │ │ │
│ │ • Ack req'd │ │ • Work │ │ • Culture │ │
│ │ • Expiry │ │ • Updates │ │ • Milestones │ │
│ │ • Persistent │ │ • Routine │ │ • Recognition│ │
│ └──────┬───────┘ └──────┬───────┘ └──────────────┘ │
│ │ │ │
│ │ on expiry │ │
│ └────────────────────▶│ falls back to Operational │
│ │
└─────────────────────────────────────────────────────────────────────────┘
Composer & Lifecycle
┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐
│ DRAFT │───▶│ SCHEDULED │───▶│ PUBLISHED │───▶│ EXPIRED │
│(autosave) │ │ │ │ │ │ │
└───────────┘ └───────────┘ └─────┬─────┘ └─────┬─────┘
│ │
15-min │ ▼
edit ◀───┘ ┌───────────┐
window │ ARCHIVED │
└───────────┘
Key Features
📌 Must-Read Posts
Operational posts escalated to require an explicit Acknowledge from every recipient. Reserved for operational content — Social posts can never be made Must-Read by design.
| Feature | Description |
|---|---|
| Persistent Acknowledge CTA | Sits on the card until the recipient acknowledges |
| Mandatory expiry | Configurable default (7 / 14 / 30 / 60 / 90 days) |
| Auto-fall-back to Operational | After expiry, the post becomes a regular Operational post |
| Immutable acknowledgement records | AcknowledgementRecord rows can be reported on, can’t be revoked |
| Automated reminders | Optional — reminder notifications for unacknowledged Must-Reads |
| Permission-gated | Configurable who can mark Must-Read (admins-only / +leadership / +managers) |
Use Case: Safety team publishes a Must-Read operational post about a new lockout-tagout procedure with a 30-day expiry. Acknowledgements are tracked per location; reminders go out automatically until each recipient acks.
💡 Pro Tip: The reminder threshold is governed by
must_read_auto_reminders— leave it on for compliance content; turn it off for time-bound but lower-stakes posts where the persistent CTA is enough.
✏️ Composer
Three composer types behind feature flags — disable any of them per business.
| Composer | Description |
|---|---|
| Update | Long-form post with priority pills, audience picker, expiry |
| Question | Q&A post with optional “mark correct answer” |
| Quick Poll | Single-select polls, 2–5 options |
Authoring features:
- Draft auto-save — One persistent draft per user, survives accidental tab close
- Scheduled publishing — Set a future publish time; the post stays in
scheduledstate until then - Audience picker — Everyone, segments, or virtual audiences (e.g. “My Direct Reports”)
- Priority selector — Control the prominence of the post in the feed
- Topic autocomplete — Tag with topics for filtering and analytics
- Char counter — Real-time char count
- 15-minute post-publish edit window — Fix typos without leaving an “edited” history scar
💡 Pro Tip: The 15-minute edit window is gated by the
content_editingadmin toggle. If your compliance posture needs zero post-publish edits, turn it off — every post becomes immutable on publish.
🎯 Audience Targeting
| Mode | Description |
|---|---|
| Everyone | All users in the business (gated by audience_post_to_everyone policy) |
| Segments | One or more segments / groups |
| Virtual segments | “My Direct Reports” and similar dynamic audiences resolved by AudienceResolver |
The “Who can post to Everyone” policy is configurable: admins_only, admins_and_leadership (default), or anyone.
📊 Engagement & Read Tracking
| Feature | Description |
|---|---|
| In-viewport dwell read tracking | Read recorded when a card stays in the viewport for a short dwell period (idempotent per user/post) |
| Per-post mute | Mute notifications for a specific post; the post still appears in the feed |
| Per-post acknowledgement | Immutable record per (user, post) for Must-Read |
| Topics | Tag posts with topics for filtering and analytics |
Use Case: A safety alert is posted across the company. The leadership team can see exactly which locations have read percentages below threshold, and reminders fire automatically for unacknowledged Must-Reads.
🔔 Notifications
Per-user, per-segment notification frequencies — global default plus per-segment overrides.
| Setting | Options |
|---|---|
| Default frequency | realtime, hourly (default), daily |
| Must-Read | Always real-time (cannot be batched) |
| Per-post mute | User-controlled, no admin override |
PublishNotificationsService handles dispatch on publish + per-cadence batching.
📱 Mobile Experience
A dedicated mobile controller (Mobile::Apps::SocialFeedController) and view stack with a bottom-tab layout — the desktop and mobile share business logic but not chrome.
| Surface | Mobile equivalent |
|---|---|
| Feed index | mobile/apps/social_feed/index.html.erb |
| My Feeds | mobile/apps/social_feed/my_feeds.html.erb |
| Feed card | mobile/apps/social_feed/shared/_feed_card.html.erb |
| Analytics | mobile/apps/social_feed/analytics.html.erb |
| Signals + SMEs | Mobile-equivalent views shipped |
🛡️ Admin Settings
The settings page exposes ~50 toggles — composer types, audience policy, Must-Read permission and default expiry, media uploads, comments, AI features, signals thresholds, voice / video options, and notification defaults.
Key settings groups:
- Content Hierarchy — enforce / disable, custom labels for Operational and Social tiers
- Composer — enable / disable Update / Question / Poll types
- Audience & Permissions — who can post to Everyone, who can mark Must-Read, edit window
- Notifications — default frequency, automated Must-Read reminders
- Media — image / GIF uploads, link previews
- Discussions — comments on/off, auto-close discussions after N days
- AI Features — toggles persisted now; behavior ships in follow-up releases
🤖 AI Features (toggles in place; behavior ships in follow-ups)
Settings persisted today, behavior ships in subsequent releases:
- Enhanced authoring — AI rewrite suggestions in the composer
- Auto-topic assignment — AI tags posts with topics on publish
- Auto-answer suggestions — AI drafts replies for Question posts
- SME auto-routing — Route questions to subject-matter experts
- Discussion summarization — Summarize threads above a comment threshold
- Poll summarization — Summarize poll results
The Social Feed AI Agent ships in a future release; settings keys are present for forward compatibility.
📈 Signals (preview surface)
Settings exist for signal extraction with confidence thresholds per signal type — risk, issue, question, idea, decision, action item, sentiment. The Signals tab is role-gated to managers / leadership / admins.
Default confidence thresholds:
- Risk: 0.90 · Issue: 0.80 · Question: 0.70 · Idea: 0.70
- Decision: 0.75 · Action Item: 0.75 · Sentiment: 0.70
📊 Analytics
The Analytics tab is role-gated to leadership and admins. Surfaces:
- Read percentages per post / segment
- Acknowledgement rates on Must-Read posts
- Engagement trends per topic / category
- Sentiment / culture-issue / policy-resistance thresholds (configurable per business)
Social::AnalyticsEvents service emits the event stream that powers the surface.
🛠️ Sample Data
Social::SampleDataGenerator seeds a fresh business with example posts so admins can see the hierarchy and engagement features without authoring content from scratch.
Content Tiers Compared
| Tier | Acknowledgement | Expiry | Comments | Use For |
|---|---|---|---|---|
| Must-Read | ✅ Required | ✅ Mandatory | ✅ | Safety alerts, policy updates, compliance |
| Operational | ❌ | Optional | ✅ | Work updates, team announcements |
| Social | ❌ | Optional | ✅ | Culture, milestones, celebrations |
User Roles & Permissions
| Role | Capabilities |
|---|---|
| Member | Read feed, react / comment, ack Must-Reads, post (per audience_post_to_everyone policy) |
| Manager | All Member capabilities + post to segments + access Signals and SMEs tabs |
| Leadership | All Manager capabilities + Analytics tab + (per policy) post to Everyone + mark Must-Read |
| Admin / Super Admin | Everything Leadership can do + Settings tab (the ~50 toggles), feature flags, audience configuration |
Permissions are governed by SocialFeedAuthorization concern + admin policy settings (audience_post_to_everyone, must_read_permission).
How We Compare
Social Feed sits in the enterprise communications / employee feed category, alongside Workplace by Meta (sunset), Workvivo, Staffbase, and the basic posts feature in Microsoft Viva Engage.
| Feature | MangoApps Workforce | Workvivo | Staffbase | Viva Engage |
|---|---|---|---|---|
| Must-Read with acknowledgement tracking | ✅ | ✅ | ✅ | ⚡ |
| Three-tier content hierarchy enforced | ✅ | ⚡ | ⚡ | ❌ |
| Audience targeting (segments + virtual) | ✅ | ✅ | ✅ | ✅ |
| In-viewport dwell read tracking | ✅ | ⚡ | ⚡ | ⚡ |
| Frontline-first mobile bottom-tab | ✅ | ✅ | ✅ | ⚡ |
| Per-post mute | ✅ | ⚡ | ✅ | ⚡ |
| Polls (single-select) | ✅ | ✅ | ✅ | ✅ |
| Configurable Must-Read permission policy | ✅ | ⚡ | ⚡ | ❌ |
| Native unified platform (no separate intranet stack) | ✅ | ❌ | ❌ | ❌ |
| Legend: ✅ Included | ❌ Not Available | ⚡ Limited / partial |
Why MangoApps Workforce?
- 🔗 Unified Platform — Social Feed shares user identity, segments, notifications, and analytics with the rest of MangoApps — no separate intranet stack to maintain.
- 🛡️ Governed by Default — Three-tier hierarchy is enforced, not optional. Must-Read is reserved for operational content so the channel can’t be weaponized for forced reads of social posts.
- 📱 Frontline-First — Mobile bottom-tab layout designed around 30-second reads on a phone, not a desktop afterthought.
Getting Started
For Employees
- Open Social Feed — From the rail or the bottom tab on mobile.
- Acknowledge Must-Reads — Tap the persistent Acknowledge CTA on any Must-Read post.
- Compose a post — Tap New post. Pick Update, Question, or Poll. Choose your audience.
- Mute distractions — Per-post mute stops notifications without hiding the post itself.
For Managers
- Browse Signals + SMEs — Role-gated tabs that surface trends in your team’s posts.
- Post to your segment — Composer audience picker → your segment(s).
- Schedule — Use scheduled publishing for time-zone-sensitive announcements.
For Administrators
- Enable the app — Admin → Apps Marketplace → Social Feed. Toggle
app_enabled. - Set the audience policy —
audience_post_to_everyone: admins-only / +leadership / anyone. - Set Must-Read defaults — Default expiry (7–90 days) and
must_read_auto_reminders. - Customize content tier labels —
operational_category_label,social_category_labelif you want different naming. - Decide on edit window —
content_editing(15-minute post-publish edit) on or off. - Tune notifications — Default frequency: real-time, hourly (default), or daily. Must-Reads are always real-time.
- Roll out — Members can post immediately; mobile bottom-tab is live without extra setup.
Best Practices
- ✅ Reserve Must-Read for operational content only — The platform enforces this by design, but discipline matters in practice. Save it for compliance, safety, and policy.
- ✅ Set a sensible Must-Read expiry default — 30 days fits most cases; tighten for time-bound alerts, loosen for compliance.
- ✅ Use segments, not Everyone, for departmental updates — Most posts don’t need the whole company.
- ✅ Don’t disable comments globally — Limit by post type or segment, not platform-wide; conversation drives engagement.
- ✅ Leave automated Must-Read reminders on for compliance — The persistent CTA alone isn’t enough on a busy mobile screen.
- ✅ Schedule rather than post late — A scheduled 8am post lands in inboxes when people start the day; an evening post gets buried.
Frequently Asked Questions
Q: What is the difference between Must-Read and Operational?
A: Must-Read is an escalated Operational post that requires a persistent Acknowledge from recipients and has a mandatory expiry date. After expiry, Must-Read posts automatically appear as standard Operational posts.
Q: Can Social posts be made Must-Read?
A: No. Must-Read is reserved for Operational content so that social content cannot be used to force acknowledgement.
Q: How does audience targeting work?
A: Posts are either sent to Everyone in the business or scoped to one or more segments. Segment resolution supports groups and virtual segments like “My Direct Reports”.
Q: What happens when a user mutes a post?
A: The post still appears in their feed if they navigate to it, but the user no longer receives notifications for comments, reactions, or reminders.
Q: How is read tracking computed?
A: Read is recorded when a feed card remains in the viewport for a short dwell period. Read records are idempotent per (user, post) — refreshing the page doesn’t double-count.
Q: Who can see Signals, SMEs, and Analytics?
A: Signals and SMEs are visible to managers, leadership, and admins. Analytics is additionally visible to leadership. Settings is admin-only.
Related Resources
- Apps Overview — Browse the full marketplace catalog
- Broadcast — Mass-distribution announcements (different audience model)
- Direct Messages — One-to-one and small-group chat
- Recognition — Often paired with Social posts for celebrations
Must-Read, Operational, Social — three tiers, one feed, governed by design.