Lone Worker App Overview
Safety check-ins and one-tap SOS for frontline workers, built on a guaranteed escalation engine — wired into the shift app your team already carries.
What is the Lone Worker App?
Lone Worker makes safety a property of the app workers already use, instead of a separate panic-button app they have to remember to carry. A worker on a covered shift gets timed “I’m safe” check-ins and a one-tap SOS; a missed check-in or an SOS opens an alert that climbs a configured responder roster via push, SMS, and voice until a human acknowledges it — with a guaranteed dead-man’s switch if nobody does. Every step is written to an immutable audit trail.
Core Value Proposition:
- 🛡️ Guaranteed escalation — Every alert is owned by a human or surfaced as a loud, broadcast dead-man’s event. Never a silent drop.
- 📍 Right responders, right place — Alerts route to a site/team-scoped responder roster, not up an org chart that has nothing to do with who’s nearby.
- 🔗 Integrated, not bolted-on — Shifts knows who’s on, when, and where; Safety Hub receives incidents; the Inbox surfaces actionable alerts.
- 🧾 Compliance-grade trail — Every notification, acknowledgement, and resolution is recorded and exportable for EHS / regulator review.
At a Glance
| 🔗 Integrations | 📱 Mobile Ready | 🤖 AI Agent | 🧾 Audit Trail |
|---|---|---|---|
| Shifts · Safety Hub · Inbox · Notifications | ✅ Yes (/m/ worker surface) |
✅ Read-only via Ask AI | ✅ Per-alert, exportable |
Perfect For:
- 🏭 Frontline & field workers who work alone or at risk — gas stations, field service, utilities, late-shift retail, security, home-health visits.
- 🦺 Safety / EHS admins who configure responder rosters, check-in cadence, and escalation policy, and review the audit trail.
- 👤 On-site responders who acknowledge and resolve alerts.
How It Works
Escalation flow
┌──────────────────────────────────────────────────────────────────────────┐
│ LONE WORKER ESCALATION │
├──────────────────────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ TRIGGER │──▶ │ ALERT RAISED│──▶ │ NOTIFY │ │
│ │ SOS / missed│ │ roster + │ │ Tier 1 │ │
│ │ check-in │ │ location │ │ push + SMS │ │
│ └─────────────┘ └─────────────┘ └──────┬──────┘ │
│ │ no ACK within Tier 1 │
│ ▼ │
│ ┌─────────────┐ │
│ │ Tier 2…N │ push+SMS+voice │
│ └──────┬──────┘ │
│ ┌───────────────────┴─────────────┐ │
│ ▼ ▼ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ ACKNOWLEDGED│──▶ RESOLVED │ EXHAUSTED │ │
│ │ "I've got │ safe / false │ dead-man's │ │
│ │ this" │ alarm / incident │ switch → │ │
│ └─────────────┘ │ safety admin│ │
│ └─────────────┘ │
└──────────────────────────────────────────────────────────────────────────┘
Integration ecosystem
┌─────────────────┐
│ LONE WORKER │
└────────┬────────┘
│
┌─────────────┬───────────────┼───────────────┬─────────────┐
▼ ▼ ▼ ▼ ▼
┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐
│ Shifts │ │ Safety Hub│ │ Inbox │ │ Notif. │ │ Ask AI │
│ who's on, │ │ incident │ │ actionable│ │ push/SMS/ │ │ read-only │
│ when/where│ │ handoff │ │ alerts │ │ voice │ │ agent │
└───────────┘ └───────────┘ └───────────┘ └───────────┘ └───────────┘
Key Features
🚨 One-Tap SOS
A worker can raise an SOS in one tap — on- or off-shift. Location is captured at trigger time only (a single best-available fix), and the worker’s screen shows live delivery state so they know whether to also call emergency services.
| Feature | Description |
|---|---|
| One-tap trigger | SOS button on the worker surface, on or off shift |
| Location at trigger | Single fix + accuracy captured when SOS fires (no continuous tracking) |
| Cancel = false alarm | Cancelling still writes an audit event; resolved as false_alarm, never deleted |
Use Case: A field technician enters a customer’s basement, hits SOS when a panel arcs — responders are notified with the captured location while the worker decides whether to call 911.
💡 Pro Tip: Location capture is configurable per tenant in Settings — leave it on for fastest responder dispatch.
Evidence: app/views/apps/lone_worker/my_safety.html.erb, Apps::LoneWorkerController#trigger_sos, LoneWorker::EscalationEngine#raise_alert.
⏱️ Timed Safety Check-Ins
When a worker is on a covered shift, the system arms timed “I’m safe” prompts on a configured interval. Answering is one tap; a check-in not answered within its grace window becomes missed and raises an alert — detected on a guaranteed cadence, independent of whether the app is in the foreground.
| Feature | Description |
|---|---|
| Configured cadence | Interval + grace per site/team, or per-tenant defaults |
| Covered shifts | A shift is covered when a responder roster resolves for it |
| Guaranteed detection | A dedicated background job sweeps overdue check-ins |
Evidence: LoneWorker::CheckInScheduler, LoneWorker::CheckInSchedulerJob, LoneWorker::MissedDetectorJob, LoneWorker::CheckInSchedule model.
📡 Guaranteed Escalation Engine
The heart of the app. Every trigger is just an input; what happens after is a real state machine. An alert climbs a roster’s tiers — each with its own channels and acknowledgement timeout — until a responder takes ownership.
| Feature | Description |
|---|---|
| Tiered ladder | Climbs Tier 1 → 2 → N, honoring per-tier channels (push/SMS/voice) and timeout |
| Mandatory acknowledgement | An alert is owned, not just sent — first ACK wins and stops the climb |
| Dead-man’s switch | If the ladder is exhausted with no ACK, a loud event broadcasts to safety admins |
| Resolution | Closed as safe, false_alarm, or incident with a required note |
Evidence: LoneWorker::EscalationEngine (raise/acknowledge/resolve/advance), LoneWorker::EscalationDriverJob, LoneWorker::Alert / LoneWorker::AlertEvent models.
🗂️ Site/Team Responder Rosters
Responders are a configured, location-scoped roster — because your boss is rarely your nearest responder. Resolution at trigger time picks the most specific active scope (shift override → team → site); if nothing resolves, the alert routes straight to the org safety-admin break-glass set.
| Feature | Description |
|---|---|
| Scope by site / team / shift | Most-specific scope wins |
| Ordered tiers + members | Each tier has channels, an ACK timeout, and its responders |
| Break-glass fallback | No roster → safety admins are paged |
Evidence: LoneWorker::RosterResolver, LoneWorker::Roster / RosterTier / RosterMember models, Apps::LoneWorker::RostersController.
📊 Analytics & Insights
Admins get a reliability-focused dashboard: total alerts, acknowledgement rate, average ACK latency, unresolved (exhausted) count, a 14-day alert-volume chart, and breakdowns by trigger, outcome, and check-in state — all exportable as CSV.
Evidence: Apps::LoneWorker::AnalyticsController, app/views/apps/lone_worker/analytics/index.html.erb.
🔗 Integrations
| Integration | Capability |
|---|---|
| Shifts & Scheduling | Source of truth for who’s on, when, and where; clock-in/out arms and cancels check-ins |
| Safety Hub | Resolving an alert as incident opens a Safety Hub incident record with the alert’s context |
| Inbox | Each alert is an actionable Inbox item with an inline “I’ve got this” acknowledge action |
| Notifications | Push / SMS / voice fan-out, with SMS/voice as the reliability floor |
Evidence: LoneWorker::EscalationEngine#create_incident, Inbox::Publisher calls + Inbox::ActionHandlers acknowledge handler, SmsService / SendVoiceNotificationJob.
🤖 AI Agent (Ask AI)
A read-only operational assistant in Ask AI. Ask it who’s at risk right now, an alert’s escalation timeline and outcome, your own safety status, or responder-roster coverage. It can acknowledge an alert on your behalf — but only with an explicit confirmation prompt.
- List active alerts — who’s notifying / acknowledged
- Explain an alert — full escalation timeline and outcome
- My safety status — check-in due, active SOS
- Responder coverage — rosters by site/team
- Acknowledge (confirmation-gated write)
Evidence: Agents::LoneWorkerAgent, Agents::ToolRegistry::LoneWorker.
🔔 Notifications
| Type | Description |
|---|---|
| Tier notification | Push / SMS / voice to the current responder tier when an alert climbs |
| Acknowledgement | The alert state updates; climbing stops |
| Dead-man’s broadcast | Safety admins are paged when escalation is exhausted |
User Roles & Permissions
| Role | Capabilities |
|---|---|
| Worker (any member) | Trigger SOS, answer check-ins, view their own safety status and alerts |
| Responder | Open an alert they’re rostered for, acknowledge it, resolve it |
| Manager | Respond to alerts; view the alert list and audit trail |
| Admin / app admin | Configure rosters, check-in schedules, and escalation policy; review analytics; manage settings |
Evidence: LoneWorkerAppConfigurable (who_can_manage gate), LoneWorkerFeatureAccess (role-gated tabs), Apps::LoneWorker::AlertsController#authorize_view!.
How We Compare
Standalone lone-worker apps ship a panic button — but the worker carries them in addition to the shift/comms app they already use, and the responder list is generic. Lone Worker makes safety a property of the platform.
| Feature | MangoApps Workforce | OK Alone | StaySafe | Blackline Safety |
|---|---|---|---|---|
| One-tap SOS / panic | ✅ | ✅ | ✅ | ✅ |
| Timed check-ins + missed-check escalation | ✅ | ✅ | ✅ | ✅ |
| SMS/voice fallback when push fails | ✅ | ✅ | ✅ | ✅ |
| Shift-aware coverage (built-in scheduling) | ✅ | ❌ | ❌ | ❌ |
| Incident handoff to safety/EHS module | ✅ | ⚡ | ⚡ | ✅ |
| Automatic man-down / fall detection | ❌ | ✅ | ✅ | ✅ |
| Dedicated wearable / satellite device | ❌ | ⚡ | ❌ | ✅ |
| Legend: ✅ Included | ❌ Not Available | ⚡ Limited / add-on |
Why MangoApps Workforce?
- 🔗 Unified platform — Lone Worker rides the same Shifts, Notifications, and Safety Hub your team already runs, so safety isn’t a second app to carry.
- 📍 Routing that matches reality — Site/team responder rosters page who’s actually nearby and on-call.
- 🧾 Audit built in — A compliance-grade trail for every alert, exportable for EHS review.
⚠️ Honest note: Sensor-dependent features — automatic man-down and fall detection — are intentionally not included. They require hardware/OS behavior a stock phone can’t reliably deliver; we deferred them rather than over-promise. SOS and missed-check-in escalation cover the core.
Getting Started
For Workers
- Open Lone Worker → My Safety (or the
/m/mobile surface on a phone). - Answer the “I’m safe” check-in when prompted.
- Tap SOS any time you need help — on or off shift.
For Responders
- When an alert reaches you (push / SMS / voice / Inbox), open it.
- Tap “I’ve got this” to acknowledge and stop it climbing.
- Resolve it as Safe, False alarm, or Incident with a note.
For Administrators
- Responder Rosters — create a roster scoped to a site or team, add tiers (channels + ACK timeout), and add responders.
- Check-in Schedules — set the interval and grace window for a site/team (or rely on the per-tenant defaults).
- Settings — tune escalation timeouts, SOS location capture, the dead-man’s switch, and the Safety Hub handoff.
Best Practices
- ✅ Build at least a two-tier roster per covered site, with voice on the final tier.
- ✅ Keep rosters current — a tier whose members are all off-shift can’t respond.
- ✅ Decide your positioning with legal: market it as a “safety check-in tool,” not a replacement for emergency services.
- ✅ Use Load sample data in Settings to see a working roster + alert before you configure your own.
Frequently Asked Questions
Q: Does Lone Worker replace 911 / emergency services?
A: No. It assists escalation to your own responders and shows the worker whether help has been reached. It is not a PSAP and does not dial emergency services on the worker’s behalf.
Q: Does it track workers’ location continuously?
A: No. Location is captured only at trigger time (when SOS is tapped or a check-in is missed). Continuous background GPS tracking is intentionally not done.
Q: What happens if no responder acknowledges an alert?
A: The alert climbs every configured tier; if the ladder is exhausted with no acknowledgement, a loud dead-man’s-switch event is logged and broadcast to the org’s safety admins — it’s never silently dropped.
Q: What does the app depend on?
A: Shifts & Scheduling provides who’s on, when, and where. Notifications use the platform’s push/SMS/voice channels. Resolving an alert as an incident hands off to Safety Hub.
Related Resources
- Safety Hub App Overview — Incident management that receives Lone Worker handoffs
- Shifts & Scheduling App Overview — The coverage source Lone Worker builds on
Lone Worker — because the safest panic button is the one already in your worker’s pocket.