Alerts
An alert rule watches a table for a condition, badges the records that match, and sends the alert. It is for the things nobody will notice by looking: a date coming due, a required value still missing, a record with no active link.
Alerts are different from Notifications, which tell you that something happened. An alert tells you that something is still true and needs attention.
Where to find it
| Screen | Where it lives | What it is for |
|---|---|---|
My alerts — /alerts | the sidebar | the open alerts for you, and your delivery preferences |
Alert rules — /admin/alerts | Settings → Data model → Alert rules | the rules themselves |
Every alert — /admin/alerts/catalog | Settings → Data model → Every alert | every alert the system can raise in this space, and who gets it |
Viewing each needs its own permission, and each page says so plainly when you lack it: You need permission to view alerts., You need permission to view alert rules. and You need permission to see every alert and who gets it.
On every list and view. Every list — the contacts list and every saved view, such as a Clients view — shows an alerts column to anyone who may view alerts: one pill per alert on each row, and an Urgency button that puts the most urgent rows first. On a saved view such as Clients that order covers the whole list, not just the page you are on: the most urgent records from anywhere in the list come to page 1 (ordered from the alert job's last run, so a record someone has just fixed can keep its place until the next run). A view can hide the column: in Admin → Views, open the view and tick Hide the alerts column on this view.
You see an alert only when you can see the record and the fields it is built on. A record your data groups do not let you open shows no pill, and neither does a rule built on a field you may not read (a sensitive field, for example) — on lists, on a record, and in My alerts.
My alerts
Your open alerts, grouped by rule and paged. Filter by Rule, by Level and Show snoozed to include the ones you have put off, then press Apply filters. Each alert names the record, says whether it is an Alert or Past due, and says how long it has been open (Since …). The rule heading counts the alerts on this page.
Each alert carries a small badge. Open its menu (▾) for what you are allowed to do with it:
- Snooze… puts that one alert off — see Snoozing below.
- Un-snooze ends a snooze early (your own, or anyone's if you may end any snooze).
- Open rule takes you to the rule on the Alert rules page.
- Run workflow ▸ … starts an automation the rule offers for this record (see Automations).
If you can see an alert but may do none of these, the menu says so: You can view this alert. Ask for alert action permissions to snooze it or run an offered workflow.
Your delivery preferences
My alert preferences opens a short form:
| Setting | What it does |
|---|---|
| Delivery | Immediately (each alert as it happens) or Daily digest (one summary a day) |
| Digest time | when the daily summary arrives — shown only for the daily digest |
| Quiet hours | a Start and an End during which nothing is delivered |
Press Save preferences. A setting you have never chosen shows not set.
Digest time and quiet hours use the space's scheduling time zone, not your browser's — so a digest arrives at the same local moment for everybody in the space.
Which channels each level uses (in-app, email, text and so on) is chosen on your Notifications page; the link Choose channels for each alert level takes you there.
Alert rules
The list shows each rule's Name, Target, Type, Level, Schedule, how many alerts are Open and Snoozed, Last run, Effective from (Global or This space) and whether it is Enabled. You can search and sort it like any other list.
Press New rule to make one, or Edit on a row. The rule form has four parts.
Condition
Each rule has a Name, a Rule key (fixed once saved), a Target source (the table it watches) and, for most types, the Column it looks at. Then pick its Type:
| Type | What it looks for |
|---|---|
| Date coming due | a date approaching: Start alerting a number of Months from the date (Before or After), and optionally Mark past due at another point |
| Value is missing / Value is present | an empty or filled field |
| Value equals / Value greater than / Value less than | a comparison with a Value you enter |
| No active link | a record with no live link of a chosen Link type, in Either direction, From this record or To this record, optionally counting only some Active statuses |
| Advanced filter | the full AND/OR filter, when none of the above fits |
| Required value missing (system) | a system rule — see Required Data. You cannot pick it yourself |
Where a link's status lives. For No active link, Status lives in says which status counts. Link status is the link's own status field. A link type can also carry its own extension: a few fields stored on every link of that type. If one of those fields uses a value list, it is offered here by name, for example DSP link › Status. Pick it, then tick the statuses that count as active. For example, a "DSP needed" rule on Serves client ticks Active and Temp. A client whose only DSP link is Inactive, or who has no DSP link at all, then gets the alert. If you tick nothing, any link of that type that has a status filled in counts. A link type with no such list shows the picker turned off, with the words "This link type has no status list". You only see such an alert if you can see that link extension too. If its list is turned off, the alert is not shown to anyone, and the alerts check in Conformance names the rule.
Only when a list value has this rank narrows any type further: the rule fires only when a list column's value ranks equal to, above or below a number you set.
A rule can watch a view. The Target source list has two groups: Tables (the whole table) and Views (the views of this space, by name). A view is a saved filter over a table, so a rule on a view looks only at the records the view shows: its own condition and the view's filter must both match. The columns you can pick are the table's own. The rules list and Every alert show such a rule as "contacts · view Open leads". If you cannot see views, the group says why (you need permission to view the views). A view that a turned-on rule watches cannot be deleted: the delete is refused and names the rules, so turn them off or point them somewhere else first. You can still hide the view from the side menu. If the view goes away anyway, the rule stops and says "The view this rule targets is gone". It never quietly starts watching the whole table instead.
Then the Level (Info, Warning or Danger), a Past-due level (or Same as alert level), an optional Icon, and the Message people see. The message may use four tokens: {value} (the column's value), {column} (the column's name), {date} (the record's date) and {due} (the date it is past due). {date} and {due} read as dates, such as "LOC due Oct 30, 2026", in the space's scheduling time zone (UTC when none is set). A column that holds a plain day, with no time, shows that same day in every time zone. {value} of a date column reads as a date the same way, and any other value reads as it is stored. If a record has no date there, the message keeps the token's own word, such as {due}.
Colour
Colours follow the app's level palette in light and dark mode. More color options lets you set your own colour for the alert and for when it is past due. Colour the pill then says how the pill shows your colour:
- Border only — the pill keeps the level's look and takes your colour as its border. This is the preset: every new rule starts on it, and every rule made before this choice existed still looks the way it did.
- Fill the whole pill — the whole pill takes your colour, and its text turns black or white, whichever is easier to read on it.
A sample pill under the choice shows the result as you change it. A snoozed alert is grey either way. A rule with no colour of its own follows the level palette, so the choice changes nothing for it.
Schedule
Evaluate says how often the rule is checked: Use the space default, Every N minutes, or a Cron schedule with its Time zone. A cron schedule is five fields — minute, hour, day of month, month, day of week — and the form reads it back to you in words.
Send
- Sending: Badge only (the records are badged but nobody is sent anything), One alert per record, or a Summary. A new rule starts with the space's preset, the setting alerts.send.default_mode (System settings → Communication): per_record — one message per matching record to each person, which is what a fresh install uses — or summary — one message per rule listing the records. Changing the setting changes only what NEW rules start with; existing rules keep what they have, and a rule's maker can always pick another. A rule for every space starts with the global value. Admin → Alert rules says the current preset beside New rule.
- Audience: leave Use the default audience ticked, or untick it and add people, groups, permissions or Everyone who can see alerts. Except these groups leaves some out. While the default is ticked, the form shows who that is right now — for example the holders of 'Manage alert rules' in this space — OK · 3 people: … — if you may see every alert (below). The default itself is set on the Every alert page.
- Use the default channels, or untick it and pick the channels for this rule.
- Re-send every a number of minutes while the alert stays open (empty uses the default).
- Record link: where the alert takes you; empty uses the record's page.
- When it fires, run these workflows and Offer in the alert's menu connect the rule to Automations. You need permission to view workflows to change these.
Snooze defaults
Default days a snooze lasts (empty uses the space default) and the Maximum days anyone may snooze for (0 means no limit; empty inherits).
Preview, then save
Preview shows how many records match right now (N matching records) with a sample. The form asks you to Preview the current rule before saving: Save stays unavailable until the preview matches what you have typed.
Global rules and space overrides
A rule is either Global (every space) or for This space. Only someone who may write global settings sees the Scope choice. On a global rule, Override here makes a copy for this space that takes its place here, leaving the global rule untouched for the other spaces.
Rules that come from an extension requirement are system rules. You can change their schedule, sending, snooze defaults and enabled state, but not their condition, and they cannot be deleted.
Running a rule now
Last run says when the rule last ran. Run now queues an evaluation and tells you when the next check will be: Evaluation queued; the next check is within N seconds. It never claims to have run instantly.
Enabling, snoozing, deleting
- Disable stops the rule without losing it; Enable starts it again.
- Snooze rule… silences it in this space until a time you pick or for its default time. The dialog is explicit that this snoozes every alert from that rule in this space — not just the one in front of you. It lists the snoozes already in force, each with an Un-snooze button. A space can require a Note (required).
- Delete removes the rule and clears its open alerts — the confirmation says both.
Snoozing
A snooze, of one alert or of a whole rule, can be For everyone or Only for me, depending on your permissions. It lasts the rule's default time unless you tick Choose my own time and pick an end, which needs its own permission and can never exceed the rule's maximum days.
Every alert and who gets it
Every alert (/admin/alerts/catalog) lists every alert the system can raise in this space, one row each:
- the system's own alerts (a stuck metering queue, a failed background check, a translation change, alert rules with no audience of their own, and so on);
- every alert rule of this space;
- every step of an active workflow that sends a notification.
Each row says who gets it in plain words (the holders of 'Read contacts' in this space, the people assigned the group 'Alert managers' here, the person it was shared with), and its Status:
- OK · 7 people — the people that adds up to right now. Only people this space can already address are named; anyone else is counted (2 outside this space).
- UNASSIGNED — goes to the space admins: A, B (in the warning colour) — nobody would get it, so it goes to the space admins instead, and they are told once a day that it has nobody. In a space with no admin it goes to the contact the space was created from, then to an admin of the space above, then to a root super admin; the status names which.
- Decided when it is raised — the alert goes to the people it is about (who a record was shared with, who a task is assigned to), so there is no fixed list.
- Decided where it is raised — an alert that has not moved onto this page's catalog yet; who it goes to is still chosen where it is raised.
The card at the top reads N alerts · M unassigned. Filter by Unassigned only, by Kind (System, Alert rule, Workflow), by App, or search. A link from an "alert has nobody to go to" notice opens the page on that one alert; Show every alert returns to the list.
Set who gets it (on a system alert that has a list) opens the same recipient picker the rule editor uses. Choose people, groups this space can be given, or the holders of a permission, and Save: it applies to this space only. Tick Use the default to clear what is set here so the default applies again. Someone who may write global settings also sees Scope, to set it for Every space. Every change is recorded in the audit log.
A rule's or a workflow's people are not changed here: Edit rule and Edit workflow open the place where they are set.
Who can do this
| To do this | You need |
|---|---|
| See alert badges and My alerts | crm.alerts.view |
| See the alert rules | crm.alerts.rules.read |
| Make, change and delete rules | crm.alerts.rules.manage |
| Save a rule for every space | system.scope.global_write |
| Run a rule now | crm.alerts.run_now |
| Snooze an alert for everyone / only for yourself | crm.alerts.snooze / crm.alerts.snooze.self |
| Choose a snooze end time | crm.alerts.snooze.custom_time |
| Snooze a whole rule | crm.alerts.snooze.rule |
| End anyone's snooze | crm.alerts.unsnooze |
| Run a workflow an alert offers | crm.alerts.run_workflow |
| See every alert and who gets it | crm.alerts.catalog.read |
| Set who gets an alert in this space | crm.alerts.catalog.manage |
| Set who gets an alert in every space | crm.alerts.catalog.manage and system.scope.global_write |
The seeded Alert managers group holds every one of these keys except the global one.
The empty state explains the feature
A space with no rules does not show a blank page. It says what a rule is for: a rule watches a table for a condition — a date coming due, a missing value, a record without an active link — badges the records and sends the alert. The same is true of an empty alert list: alerts appear here when a rule finds something that needs attention. The Every alert page, when it lists nothing, explains what it would show and that an alert reaching nobody is marked UNASSIGNED and goes to the space admins.