Skip to content

Alerts & Thresholds ​

In addition to scheduled reports, DURUM.ai warns you on Slack when an indicator leaves the normal range, when the engine acts on your ads, or when a condition you defined yourself is met.

Everything is set in the Notifications page (/notifications): every category has its switch and its Slack channel, per account. Messages go out in the account's language and currency.

Performance alerts ​

Internal code: perf_alerts

Checked once a day (15:00 UTC), over the account's last 7 days. Each alert type is sent at most once a day per account. An account with no spend, no sale and no booking over the period is not evaluated.

AlertCondition (last 7 days)Level
CPA too highCPA above 200, with at least one saleCritical
Spend without saleMore than 500 spent and 0 saleCritical
High no-show rateMore than 30% no-shows, with at least 3 bookingsWarning
Negative ROASROAS below 1, with more than 200 spent and some revenueCritical
Missing spendNo spend synced for one of the last 3 days, on an account with spend historyCritical for yesterday, Warning for earlier days
Abnormal event volumeThe last 7 days count less than 30% of the weekly average of the previous 30 days (baseline of at least 5 per week)Warning

Amounts are read in the account currency. These thresholds are fixed; they are not set per account. For an alert at your own thresholds, use a trigger.

System alerts ​

Internal code: webhook_alerts

The category exists in the Notifications page, but system alerts (a webhook's error rate above 10% over 24 h, quarantine above 50%, no webhook received in 24 h) are computed for the whole platform and go to the DURUM team. They do not reach your channel. An incident that concerns you is reported by your account manager.

Engine actions ​

Internal code: moteur

Every ad cut and every budget moved by the Engine, with the numbers behind it. Two conditions: the category is enabled with a channel, and the rule has Notify on Slack on. Without an "Engine actions" channel, the message goes to the performance alerts channel.

Sent after every hourly run, for applied runs only (never simulations, never a run already notified). One line per decision:

Engine · My rule
• Cut: Retirement T2-I3 ($180 spent, 2 leads, CPL $90)
• Budget Retirement Quebec: $120 → $150 per day
• Ad set paused: Retirement Ontario
Undo in the app: Ads → Engine → Latest actions.

For arbitration rules, every line carries the network, the level (network, campaign, ad set, ad), the node, the change and the reason; a decision refused by the network is reported with its message.

Scheduled messages and triggers ​

In the Notifications page, custom messages section, you compose your own Slack messages: a name, a channel, a text with variables (spend, leads, CPL, CPA, ROI, revenue, and their deltas, over a period of your choice) and mentions.

Two delivery modes:

  • Scheduled: days of the week and a time (Eastern time, in 30-minute steps). Checked every 15 minutes.
  • Trigger: a condition evaluated every hour (event triggers fire at the time of the event), with a cooldown (none, 5, 15 or 30 minutes, 1 h, 4 h, 24 h).

The triggers ​

CategoryTriggers and settings
EventsNew lead, new application, new booking, no-show, sale closed, payment received, refund
ThresholdsCPA exceeds (amount, period), daily spend exceeds (amount), ROI below (ratio, period), no-show rate exceeds (%, on at least 3 bookings), no leads since (hours), CTR below (%, on more than 100 impressions)
MilestonesMonthly leads goal, sales goal, revenue goal; budget consumed (% of a budget)
TrendsCPA rising N days in a row, leads declining vs last week (%), best day of the month
Ads and engineAn ad cut by the engine; cost per lead moving over a window (see below)
TeamA rep's sales goal, a rep's closing below (%), a rep with no sale since (days), a rep's sales record

An ad cut by the engine ​

Internal code: engine_ad_cut

Says which ad was cut, why, with its numbers and a link to view it (never an image). One message per cut ad, never the same one twice. Cuts come from both engines (Engine and legacy engine), applied runs only.

SettingDefault
Send from (hour) / Stop sending after (hour)10 am to 1 pm, account time
Cuts from the last (hours)24
Maximum messages per run5

Content: the ad (Meta preview link when available), the campaign, the ad set, the ad's spend, leads and CPL, the ad set reference (the ad set's cost per lead over 7 days) and the reason as the engine wrote it. The message checks that yesterday's synced spend covers at least 98% of what Meta reports; otherwise it says so ("Numbers underestimated…").

Cost per lead moving over a window ​

Internal code: cpl_delta_24h

Compares the last few days with the preceding baseline, per ad set (or per campaign, on request to your account manager), and names the ads that moved the cost. Numbers are read directly from Meta (spend and Lead conversions, same attribution windows as the Ads Manager screen), not from the DURUM.ai database.

SettingProposed on creationEngine value when empty
Minimum change (%)1535
Minimum spend per day1000
Minimum leads per day540 (conversions over the window)
Send from / Stop sending after10 am to 1 pmno window
Maximum messages per run33
Recent window / comparison baselinenone3 days against the previous 14 days
Minimum money at stakenone500 (account currency)
Level (ad set or campaign) and scope (campaigns or ad sets followed)noneset with your account manager; without a scope, nothing is sent

One message per ad set that moved, up or down, ranked by money at stake (what the window cost more or less than if the reference cost per lead had held): cost per lead before and after, change, spend and conversions per day, the whole followed scope, the other ad sets, and what moves the cost (the ad set's ads, with their link).

Why 3 days against 14

Over 24 h, at 35 conversions a day, chance alone moves the cost per lead by plus or minus 17%; a one-day alert held over the next three days only half the time. Over 3 days against 14, noise drops to plus or minus 10% and the gap holds 86% of the time. A campaign average, for its part, stays blind to an ad set that burns: that is why the ad set level is the default.

Threshold configuration ​

  • Performance alerts have fixed thresholds (table above).
  • Triggers are set by you, in the Notifications page, message by message. The level and scope of the cost per lead trigger are set with your account manager.
  • Engine actions follow the Engine rules: the thresholds are those of each rule.

The internal alerts admin screen (/admin/notifications-slack) is reserved for the DURUM team: it manages platform monitoring, not your alerts.

Severity levels ​

ColorLevelMeaning
RedCRITICALA significant problem affects your results, action required
OrangeWARNINGMonitor, a metric is deteriorating

Every performance alert carries a "View dashboard" link.

Alerts in the dashboard ​

The dashboard also shows, without Slack, the Bottlenecks (every funnel stage analyzed against its target) and the Detected anomalies (deviations from usual trends).

Advice

Check the dashboard every morning for the situation snapshot. Slack alerts are there to warn you between visits.

Powered by DURUM.ai: ad attribution and operational intelligence