Skip to main content
A deliverability alert watches one of your warm-up or outreach metrics on a recurring schedule and notifies you when the metric crosses a threshold you defined. Each alert is identified by the combination of widget (data source — warmup or outreach), metric, severity, scope, threshold, comparisonOperator, periodDays, periodMode, and scopeEntities. Two alerts with identical values across all of these fields cannot coexist on the same team. When an alert fires, it notifies you through the channels listed in channelConfig (in-app banner, email, Slack, and/or webhook). To receive webhook callbacks, register a webhook subscribed to the deliverabilityAlertTriggered event with Add Webhook.

A deliverability alert configuration. The alert is evaluated periodically against your warm-up or outreach metrics and triggers notifications through the configured channels (in-app, email, webhook, Slack) when the threshold is breached.

_id
string

Unique alert configuration identifier (prefixed with dac_).

teamId
string

ID of the team that owns the alert.

createdBy
string

ID of the user who created the alert.

createdAt
string<date-time>

Creation timestamp.

updatedAt
string<date-time>

Last update timestamp.

widget
enum<string>

Data source the alert evaluates. warmup checks lemwarm metrics; outreach checks campaign-sending metrics.

Available options:
warmup,
outreach
metric
enum<string>

Metric being monitored. Valid combinations depend on widget: warmup supports inboxRate, spamRate, score; outreach supports deliveryRate, bounceRate.

Available options:
inboxRate,
spamRate,
score,
deliveryRate,
bounceRate
severity
enum<string>

Alert severity.

Available options:
warning,
critical
scope
enum<string>

Aggregation level the metric is computed at. global covers all of the workspace's mailboxes (warm-up only); mailbox evaluates each mailbox individually; domain groups mailboxes by their sending domain.

Available options:
global,
mailbox,
domain
scopeEntities
string[]

Restricts the alert to a subset of entities matching scope. When empty, all entities of that scope are checked. For scope=mailbox, each entry is a composite string userId|email|mailboxId. For scope=domain, each entry is a domain (e.g. acme.com). Ignored when scope=global.

threshold
number

Threshold value the metric is compared against (0–100, expressed as a percentage for rate metrics).

Required range: 0 <= x <= 100
comparisonOperator
enum<string>

How threshold is compared to the current value. below triggers when the value drops under the threshold; above triggers when it exceeds it; equal triggers on exact match.

Available options:
equal,
below,
above
periodDays
integer

Length of the evaluation window, in days (1–30).

Required range: 1 <= x <= 30
periodMode
enum<string>

How the metric is computed over periodDays. rolling averages the metric across the window; consecutive requires the condition to hold on every one of the most recent periodDays.

Available options:
rolling,
consecutive
channelConfig
object

Notification channels triggered when the alert fires. At least one channel must be enabled. If omitted on creation, defaults to inapp only.

enabled
boolean

Whether the alert is currently active. Disabled alerts are not evaluated.

lastCheckedAt
string<date-time>

Last time the alert was evaluated.

lastTriggeredAt
string<date-time>

Last time the alert fired.

recheckDelayHours
integer

Cool-down between re-evaluations after the alert has triggered, in hours. Defaults to 12.