Skip to content

Rules and policies

A policy decides who should know, when, how urgently and with which level of verification. In a workspace, it is a list of rules plus a few settings (time zone, default action, quiet hours and digest).

How policy rules decideAn event is checked against the workspace rules in order; the first rule that matches decides the action: notify now, digest (grouped summary), suppress (stored but not delivered) or escalate (notify with high priority and extra recipients). During quiet hours a notify becomes a digest unless the rule bypasses quiet hours.Eventsource · typeseverity · timeRules, in orderfirst match wins;else the defaultQuiet hours?notify → digestunless bypass_quietnotifydelivered nowdigestgrouped in a summarysuppressstored, not deliveredescalatehigh priority + extra people
Action What happens
notify A notification is delivered now.
digest The event is grouped into a summary sent at the end of the digest window.
suppress The event is stored in the history but nobody is notified.
escalate Notifies with high priority and adds the rule’s extra recipients.

Rules are evaluated in position order; the first match wins. When no rule matches, the workspace default_action applies.

{
"name": "dokploy-info-suppressed",
"enabled": true,
"position": 30,
"match": {
"source": ["dokploy"],
"type": ["deploy.*"],
"severity_max": "info"
},
"action": "suppress",
"params": {}
}
match field Meaning
source List of sources.
type List of event types; deploy.* matches every deploy. type.
severity, severity_min, severity_max Exact list or a range of severities.
hours Time window: { "from": "09:00", "to": "18:00", "tz": "America/Sao_Paulo", "days": ["mon", "tue"] }.
params field Meaning
priority normal or high.
recipients Extra recipients (used by escalate).
channels Delivery channels; today app.
bypass_quiet true to deliver even during quiet hours.

Rule names are lowercase (^[a-z0-9][a-z0-9_.-]*$) and unique in the workspace.

Workspace settings define the time zone, the default action, quiet hours and the digest:

{
"timezone": "America/Sao_Paulo",
"default_action": "notify",
"quiet_hours": { "from": "22:00", "to": "07:00", "days": ["mon", "tue", "wed", "thu", "fri"], "min_severity": "high", "action": "digest" },
"digest": { "window": "30m", "max_events": 20 }
}

During quiet hours, events below min_severity are turned into a digest (or suppressed), unless the rule has bypass_quiet: true.

Origin Editable in the app
api Yes: created in Rules in app.notific.me, through the API or by an agent over MCP.
yaml No: managed in a YAML file in the repository of a self-hosted server. Changes there overwrite the workspace on the next deploy.
default No: built-in defaults.

Rules in app.notific.me has a simulator: “would this event be notified?”. It runs the same engine as production, shows the decision (notify, digest, suppress, escalate), the reason (rule, default or quiet_hours) and which rule matched, and can test rules that are not saved yet. The same is available as POST /v0/workspaces/{handle}/rules/simulate.