Skip to main content
POST
Create a notification rule

Authorizations

X-API-Key
string
header
required

Body

application/json
channel
enum<string>
required

Where a notification goes. Slack is a shared channel; email is one person.

Available options:
slack,
email
trigger_kind
enum<string>
required

Everything the product can tell a human about.

THREAD_LABELED is the only kind that carries a label. The rest are workspace events with no label dimension, which is why the rule table constrains label_id to exactly this kind.

The three credit kinds are stored separately even though the settings UI offers one "credit alerts" switch: they crossed three different thresholds and keeping them apart means splitting the switch later is a UI change, not a migration.

The affiliate_* kinds are program mail to the enrolled affiliate's contact address, not workspace-member fan-out: they carry no preference switch, and the settings grid on the dashboard skips them by prefix.

SEARCH_MATCHES_WAITING: a scheduled lead search no longer buys its rows, so when it fires and finds new matches the buy waits on a person as a proposal, and this is how they hear about it.

Available options:
new_reply,
thread_labeled,
mailbox_disconnected,
low_credits,
credits_exhausted,
work_paused,
draft_awaiting_approval,
linkedin_checkpoint,
linkedin_browser_offline,
search_matches_waiting,
reply_sent_by_agent,
agent_sending_paused,
contact_asked_to_stop,
affiliate_welcome,
affiliate_referral_signed_up,
affiliate_referral_converted,
affiliate_statement,
affiliate_payout_sent,
affiliate_action_needed,
affiliate_balance_forfeited
label_id
string<uuid> | null
notify_user_id
string | null
Maximum string length: 255
slack_channel_id
string | null
Maximum string length: 64

Response

Successful Response

channel
enum<string>
required

Where a notification goes. Slack is a shared channel; email is one person.

Available options:
slack,
email
id
string<uuid>
required
is_active
boolean
required
label_id
string<uuid> | null
required
notify_user_id
string | null
required
slack_channel_id
string | null
required
slack_channel_name
string | null
required
trigger_kind
enum<string>
required

Everything the product can tell a human about.

THREAD_LABELED is the only kind that carries a label. The rest are workspace events with no label dimension, which is why the rule table constrains label_id to exactly this kind.

The three credit kinds are stored separately even though the settings UI offers one "credit alerts" switch: they crossed three different thresholds and keeping them apart means splitting the switch later is a UI change, not a migration.

The affiliate_* kinds are program mail to the enrolled affiliate's contact address, not workspace-member fan-out: they carry no preference switch, and the settings grid on the dashboard skips them by prefix.

SEARCH_MATCHES_WAITING: a scheduled lead search no longer buys its rows, so when it fires and finds new matches the buy waits on a person as a proposal, and this is how they hear about it.

Available options:
new_reply,
thread_labeled,
mailbox_disconnected,
low_credits,
credits_exhausted,
work_paused,
draft_awaiting_approval,
linkedin_checkpoint,
linkedin_browser_offline,
search_matches_waiting,
reply_sent_by_agent,
agent_sending_paused,
contact_asked_to_stop,
affiliate_welcome,
affiliate_referral_signed_up,
affiliate_referral_converted,
affiliate_statement,
affiliate_payout_sent,
affiliate_action_needed,
affiliate_balance_forfeited