Notifications overview
Alerts tell your team when something needs attention: a forecast is late, sales are pacing behind, labor is overspending, accuracy has drifted.
Admin page: Admin -> Notifications (/admin/notifications) · User page: Settings -> Notifications (/settings/notifications)
The moving parts
| Concept | What it is |
|---|---|
| Rule | The thing being watched, for example ops.pacing_below_forecast. Has a category, severity, thresholds, default channels, and a schedule |
| Org override | The organization-level decision about whether a rule runs at all |
| Role default | The baseline every user in a role starts from, optionally enforced |
| Subscription | An individual user's own preference for a rule |
| Channel | How the alert is delivered, see Notification channels |
| Threshold | The number that has to be crossed before delivery happens |
Categories are Forecast quality, Operational, Workflow, Reviews, Compliance, System, and Custom alerts.
How a delivery is decided
- The rule evaluates on its schedule (or when an application event fires).
- The org override decides whether the rule runs for the organization.
- The role default provides the baseline channels, cadence, and enabled state for each recipient's role.
- The user's own subscription adjusts that baseline, except for anything the admin has enforced.
- Thresholds gate the delivery: the measurement has to cross the recipient's effective threshold.
- Quiet hours, mute, and cooldown suppress anything that survives the steps above.
Every user can see this chain on their own settings page under Show details, which labels each layer as Rule default, Role default, Org override, or Your override.
Admin tabs
| Tab | What you do there |
|---|---|
| Org Overrides | Set each rule to On for everyone, Let users decide, or Off for everyone, and set the org default channels, cadence, and thresholds |
| Role Defaults | Set the baseline channels, thresholds, and enabled state per role, and enforce them |
| Custom Rules | Create clone, metric watcher, and read-only SQL rules, see Custom alert rules |
| Delivery Health | See what happened to recent deliveries, retry the ones that can still be sent, and inspect and replay permanent failures |
| Scheduler | A read-only view of the scheduled jobs that run your alerts and summaries |
| Operator Groups | Group locations under an operator (a franchise organization or management company) so it can be assigned a dedicated Slack or Teams workspace |
| Workspaces | The Slack and Teams workspaces connected for the organization; connect and configure them on the unified Channels page |
Channels themselves are configured on their own page, Admin -> Channels (/admin/channels), rather than on a tab here, see Notification channels.
Every editable tab uses the same save contract: Save changes is disabled while the form matches what is stored, an Unsaved badge appears as soon as something is dirty, and saving resets both indicators.
Org overrides
| Setting | Effect |
|---|---|
| On for everyone | The rule runs and delivers to everyone eligible, even if they turned it off |
| Let users decide | The rule runs while at least one person has it on, and each recipient's own preference applies |
| Off for everyone | Nobody is alerted, even if they turn it on for themselves |
The panel tells you when a rule has a live scheduler job so you can confirm it is actually running.
Role defaults
Role defaults are the baseline for every user in a role, for example every General Manager.
- Go to Admin -> Notifications -> Role defaults.
- Pick the role and the rule.
- Set the channels, thresholds, and enabled state.
- Click Save changes.
- Optionally click Enforce channels so users cannot change the delivery channels for that rule. Enforced rows show a lock in the user's settings page and read "Channels enforced by admin".
- Clear Role Default removes the row and returns the rule to its built-in defaults.
Use Show only customized defaults to see just the rules you have deviated from, and Expand all / Collapse all to work through a long list.
Users inherit the role default at the moment they first receive a rule. Configuring defaults before you invite a wave of GMs saves everyone from tuning their own settings.
Delivery health
Admin -> Notifications -> Delivery Health records what happened to every recent delivery, on every channel, so you can tell the difference between an alert that was sent, one that failed, and one that had nowhere to go.
Each row shows a status:
| Status | Meaning |
|---|---|
| Delivered | The provider accepted the message |
| Failed | The provider rejected it; the reason is shown in plain language, for example an expired Slack webhook |
| Nowhere to send | The recipient had the alert on but no working channel to receive it on, so nothing was attempted |
Filter by status and page through the table. Retry N now re-attempts the failed deliveries that can still be sent; the scheduler also re-attempts due failures on its own.
Dead letters
When a delivery fails repeatedly it is parked in the dead-letter queue at the bottom of the Delivery Health tab, with the rendered message and the last provider error.
- Go to Admin -> Notifications -> Delivery Health.
- Read the error, for example an expired Slack webhook.
- Fix the underlying channel configuration.
- Click Replay all.
Replay is idempotent: rows that succeed are marked replayed, rows that fail again stay queued with a bumped attempt count.
Troubleshooting
| Symptom | Check |
|---|---|
| A rule never fires | Org override is not Off for everyone, and at least one recipient has it enabled |
| One user gets nothing | Their subscription is off, muted, or inside quiet hours |
| Nothing arrives on Slack | Channel provider configured and the bot invited, see Connect Slack |
| Alerts are noisy | Raise the threshold on the role default, or lengthen the cooldown |
| Deliveries silently stop | Look in Delivery Health for the failure reason and the dead-letter queue |
| A new custom rule does not fire | Confirm it is enabled and its org override allows it, see Custom alert rules |