Panic
Part of the IP4CMS portal. β All module guides
What it's for β The Panic module is the operator side of an emergency panic-button system. Members raise a panic alert from the member portal or app by choosing one of your configured emergency types; the system immediately notifies the people that type is set up to alert (the member's own emergency contacts, a responder group, and/or external responders) and opens a tracked incident. As an operator you monitor those incidents on a live dashboard and work each one through its lifecycle β acknowledge, mark in progress, escalate, resolve or cancel β adding notes and watching the member's reported location along the way. Everything a member triggers and everything an operator does is recorded as a timeline on the incident.
Where to find it β Main navigation: Panic (route /app/panic). The breadcrumb shows Panic. The landing screen is the Panic Dashboard (the Logs view). Two configuration screens live under Settings: Emergency Types (/app/settings/panic-emergency-types) and Responder Groups (/app/settings/panic-responder-groups). The in-module links to those two screens redirect into Settings.
Before you start
- The panic licence module must be enabled for your tenant. If it isn't, every Panic route is blocked and the nav item does not appear.
- You need Panic permissions on your role (see Permissions & access). Monitoring the dashboard needs a read permission; changing incident status or adding notes needs the lifecycle-manage permission; configuring emergency types and responder groups each need their own manage permissions.
- Set up message templates first. An emergency type cannot be saved without a notification template. Before you configure types, go to Settings β Communication β Message Templates and create at least one template with the Panic Emergency category (and, optionally, a Panic Member Acknowledgement template). Without a Panic Emergency template the emergency-type form blocks you with a warning.
- If you plan to notify a responder group or external responders, create the responder group before (or while) creating the emergency type that links to it.
Key tasks
Configure emergency types
Emergency types are the options members see when they raise an alert (for example "Medical", "Security", "Fire"). Only 4 types can be active at a time β the active ones are the ones shown in the member portal/app. A counter on the page shows n/4 active.
- Go to Settings β Emergency Types (or open it from the Panic module link).
- Click New Emergency Type. The Create Emergency Type dialog opens.
- Complete the fields:
- Name (required) β the member-facing label. Max 255 characters.
- Template (required) β the notification message sent when this emergency is raised. The list shows only templates with the Panic Emergency category. If none exist, the form shows a warning and a Set up templates link.
- Member acknowledgement template (optional) β a message sent back to the member who raised the alert when a guard/operator acknowledges it. The list shows templates with the Panic Member Acknowledgement category. Leave on "None" to send nothing on acknowledgement.
- Notify (at least one required) β who is alerted when this emergency is raised. Tick one or more:
- Individual β the member's own saved emergency contacts.
- Responder group β the members/contacts of the linked responder group.
- External β external / national responders (treated as a responder-group dispatch).
- Responder Group β shown only when Responder group or External is ticked; required in that case. Pick the group to alert. A Set up responder groups link is provided.
- Background Color β the colour shown against this type (defaults to red
#DC2626). - Sort Order β the position of this type in lists (lower first).
- Active (checkbox) β when ticked the type is live in the member portal/app. You cannot have more than 4 active; if you already have 4, the dialog tells you to deactivate one first.
- Click Create Type (or Update Type when editing). A success message confirms.
To edit a type, click Edit on its row; to remove one, click Delete and confirm.
Configure responder groups
A responder group is a reusable response team that any emergency type can link to.
- Go to Settings β Responder Groups (or open it from the Panic module link).
- Click New Responder Group. The Create Responder Group dialog opens.
- Complete the fields:
- Group Name (required) β max 255 characters.
- Description (optional).
- Active (checkbox, on by default) β only active groups are offered when linking from an emergency type.
- Group Members / Contacts β add one row per contact with Name (required), Phone and Email. Use Add Contact to add rows and Remove to delete them.
- Click Create Group (or Update Group when editing). A success message confirms.
Each group is shown as a card listing its members. Use Edit / Delete on the card.
Monitor incoming panic alerts
The Panic Dashboard (the Logs view) is your live monitoring queue.
- Go to Panic. The dashboard lists incidents, newest first.
- The list auto-refreshes every 10 seconds while no incident detail is open. You can also click Refresh at any time.
- Use the view tabs above the list to filter by lifecycle bucket: Active, Resolved, Cancelled, or All. "Active" covers triggered, dispatched, acknowledged, in-progress and escalated incidents.
- Narrow further with the Search box (member name or type β press Enter), the Status filter (Triggered, Dispatched, Acknowledged, In progress, Escalated, Resolved, Cancelled), and the Emergency Type filter. Columns can be sorted and column-filtered.
Each row shows Created, Age (how long the incident has been open), Member, Emergency Type (with its notify level), Status, Dispatch (delivery health), and Last Event.
Work an incident through its lifecycle
- On the dashboard, click View on an incident. The View Emergency detail opens.
- The header summarises type, member name, notify level, Status, and Dispatch health. Two tabs are available: Lifecycle (default) and Details.
- On the Lifecycle tab, Lifecycle Timeline lists every status change, event, location sample and dispatch outcome in order. The Dispatch Attempts sub-tab lists each recipient with the channel used, the target (phone/email), and whether it was Sent or Failed.
- To change status, use Update Status (shown for incidents that aren't already resolved or cancelled):
- Pick an action: Acknowledge, In progress, Escalate, Resolve, or Cancel. The dialog pre-selects the sensible next step for the current status.
- Escalate, Resolve and Cancel require a note β the Note box is mandatory for those; for Acknowledge and In progress it is optional.
- Click Save. The timeline updates and the dashboard refreshes. Acknowledging sends the member-acknowledgement message if the emergency type has one configured.
- To record an operator comment without changing status, use Operator Note: type the note and click Add note. It is added to the timeline.
Status meanings: Triggered (just raised) β Dispatched (notifications attempted) β Acknowledged β In progress β optionally Escalated β Resolved or Cancelled. Once an incident is resolved or cancelled the status-update panel is hidden.
Review location and incident details
- In the incident detail, open the Details tab.
- The left side shows read-only Type, Person, Last Status and the latest Note.
- The right side shows Last Location on an embedded map (OpenStreetMap) with the captured coordinates and capture time, plus Created At. If no coordinates were captured it shows "Location not captured".
- Expand Incident details for the last-location coordinates, any System metadata (e.g. source, run ID), and Timing (open duration, acknowledged time, closed time).
Location comes from the member's device at trigger time (and any later location samples the app reports); it is shown, not editable, in the portal.
Member panic contacts
Each member maintains their own list of personal emergency contacts ("member panic contacts"). These are created and managed by the member in the member portal/app, not by the operator in this module. A contact has a name, optional phone/email, per-channel notification toggles (SMS, email, push), an active flag and a sort order; contacts can be free-typed or linked to another platform user (push delivery is available when the contact is a same-community user). When an emergency type is set to notify Individual, these are the people alerted. The portal operator does not edit a member's contacts here β the operator side is the dashboard and configuration screens.
How the data connects
- Configuration (operator). You define emergency types and link each to a notification template and, where needed, a responder group. Each type declares its notify targets (individual / responder group / external). Up to four active types appear to members.
- Trigger (member). From the member portal/app a member picks an active emergency type and raises an alert. This creates a panic log (the incident), captured with the member, the type, and the device location if available.
- Dispatch (automatic). On trigger the system reads the type's notify targets and sends notifications: Individual β the member's own panic contacts (over their enabled SMS/email/push channels); Responder group / External β the linked group's members/contacts. Each send is recorded as a dispatch attempt (recipient, channel, target, sent/failed), and a dispatch summary drives the incident's Dispatch health (sent / partial failure / failed / skipped). If a type has no usable targets, dispatch is marked skipped with a reason.
- Monitoring queue (operator). All incidents surface on the Panic Dashboard, refreshing live. You open one and drive its lifecycle (acknowledge β in progress β escalate β resolve/cancel), adding notes. Acknowledging can trigger a member-acknowledgement message back to the resident.
- History. Every incident keeps a full record: status history, events, location samples, and dispatch attempts, woven into a single lifecycle timeline on the detail view. The member can also see and cancel their own open alerts from their app.
Permissions & access
The Panic module uses these role permissions (all gated behind the panic licence module):
panic:type:read/panic:type:manageβ view / create-edit-delete emergency types.panic:group:read/panic:group:manageβ view / create-edit-delete responder groups.panic:log:readβ view the dashboard, incident lists and detail.panic:lifecycle:manageβ change incident status, add notes, add location (operator NOC actions).panic:triggerβ raise an alert and manage one's own panic logs/contacts (the member-facing permission, used by the member portal/app).
A holder of the global settings:update:all permission can also reach the read and manage endpoints. The split is important: members trigger alerts (panic:trigger), while operators monitor and manage them (panic:log:read + panic:lifecycle:manage). The dashboard/operator endpoints accept either a JWT session or an X-API-Key, so an external guard/NOC integration can be granted a role with panic:log:read and panic:lifecycle:manage.
Tips & gotchas
- Templates are a hard prerequisite. You cannot save an emergency type without a Panic Emergency template. Set up Message Templates first.
- Four active types maximum. Only active types show to members, and you can't activate a fifth β deactivate one first.
- New types default to inactive. When you create a type the Active box is off by default; remember to tick it (within the 4-active limit) for it to appear to members.
- Notes are forced on the serious transitions. Escalate, Resolve and Cancel will not save without a note β this keeps an audit trail of why an incident was escalated or closed.
- The dashboard auto-refreshes only when no incident is open. While you have an incident detail open the 10-second refresh pauses so it doesn't disrupt your work; close the detail (or click Refresh) to update the list.
- External = responder-group dispatch. Ticking External still requires a responder group and is dispatched the same way as a responder-group notification; it is labelled "National" in some places.
- Location is best-effort. If the member's device didn't share coordinates, the map shows "Location not captured" β don't assume a missing location means the member is safe.
- Resolved/cancelled incidents are read-only. Once closed, the status-update panel disappears; reopen by acknowledging only if the status still allows it.
- Members own their personal contacts. Operators configure responder groups and emergency types; the member's individual emergency contacts are managed by the member, not from this portal module.