Rolling out. Notices are switched on per deployment and are off by default, so a healthy drain today may simply be on a deployment where this has not been enabled yet. Nothing about your drains changes either way: the health states still transition and the quota ladder still degrades whether or not anyone is told. Ask [email protected] if you expect notices and are not getting them.
The six triggers
Everything else is deliberately silent: recovery, a pause you asked for, enabling or disabling a drain, changing its endpoint. An inbox that announces good news stops being read.
quota_warning hangs on the crossing, not on a reading — it fires once as usage passes 80%, and not again in that window however long you sit above it.
At most one an hour
One notice per (organization, drain, trigger) per hour. That is the guarantee, and it holds across the whole platform rather than per process, so a restart does not reset it and two workers cannot both send. A flapping drain therefore contributes one notice an hour per trigger, not sixty. A drain that is failing and over quota can produce two in an hour — they are different triggers.A notice is counted against the hour even if the message itself could not be sent. The alternative — releasing the slot on a failed send — turns a transient fault into a mail storm, which is the failure mode this whole feature exists to prevent.
Who is told
The drain’s creator first, when a person created it, then your organization’s active admins and owners, deduplicated and capped at 20 recipients. The creator is first on purpose: they are the most likely to know what changed at the destination, and an organization with twenty admins must not squeeze them out. Each recipient gets up to two things:- A notification in the product, one card per drain per person, which moves forward in place — an incident updates the card rather than stacking a row per notice.
- An email, sent only when the card genuinely moved, and only to a validated address. An admin whose address has never been validated gets the in-product card and no mail.
What a notice never contains
A notice is built field by field from an allow-list, never by deleting keys off a drain. That direction matters: a secret-bearing field added to a drain next quarter is absent from every notice until somebody deliberately adds it to the allow-list.lastError is the only string a notice carries that your destination wrote. It gets its own paragraph in the email so you can tell what Lua says from what your vendor says.
The audit entry each delivered notice writes — logs.drain.notified in your organization’s ordinary audit stream — carries the trigger and the channel, and never the copy or a recipient’s address. An append-only stream nobody rotates is the wrong place for a list of email addresses.
Digest mode
An organization can be switched to daily instead of per-event: one message a day summarising what happened, rather than one message per trigger. Notices are still subject to the hourly limit before they are queued, so a flapping drain contributes one entry an hour to the digest, not sixty. The queue holds the newest 50 entries; an organization that generated more than fifty notices in a day is told about the last fifty. The first digest lands 24 hours after that organization’s first notice, not at a fixed hour of the day, and keeps that cadence from there.Turning notices down
Two settings exist per organization: the mode (immediate or daily), and a list of triggers to unsubscribe from. An unsubscribed trigger is not sent, not queued, and does not spend the hour’s slot.
Until one is set, every organization is immediate with nothing unsubscribed.
If you are getting nothing
A drain is failing and nobody was told
A drain is failing and nobody was told
Check the trigger first:
failing needs a transition into failing. A drain that was already failing when notices were switched on for your deployment never transitions again and so never fires. Five of the six triggers are edge-triggered that way; verification_pending is the exception and sweeps on age.Some admins get mail and others do not
Some admins get mail and others do not
Email goes only to validated addresses, and the audience is capped at 20. The in-product card reaches everyone in the audience regardless.
We got one notice for an incident that lasted all afternoon
We got one notice for an incident that lasted all afternoon
That is the hourly limit working. Check the drain’s own history with
lua drains status <id> --json and lua drains deliveries <id> for what happened between notices — a notice is a prompt to look, not the record.Nothing at all, ever
Nothing at all, ever
Either notices are not enabled on your deployment yet, or your organization is unsubscribed. The audit stream settles it: look for
logs.drain.notified. Entries there with no mail arriving means the in-product card worked and the address was not validated.Next steps
Delivery guarantees
The health states and the quota ladder the triggers fire on.
Usage and plan quotas
What the 80% warning is measured against.
Protecting your destination
Why a notice can never carry a credential.
lua drains
Reading a drain’s health yourself.

