Real-time alerts to Slack and email
You don't want to discover that a client lost half their Share of Model when you log in on Monday. Real-time alerts catch movement the moment it happens.
Setting up a rule
Each rule lives on a client and combines three things:
- A trigger: what condition fires the alert (SoM drop over a window, new high-value gap discovered, competitor surging, audit score regressing, etc.).
- A destination: Slack webhook URL, email list, push to the AI Assistant, or any combination.
- A throttle: how often this rule is allowed to fire so you don't get paged into the ground.
Rules live in /dashboard/monitor/alerts. You can manage them per client or roll them out across the agency.
How dispatch works
When an evaluator detects a matching event, Outrigger inserts a row into monitor_alert_events and emits an alerts/event.fired event. An Inngest function picks it up, dispatches to the configured destinations, and writes back the dispatch state on the same row. The function is idempotent: if the row already has dispatched_at, it won't fire twice.
If a dispatch fails (Slack webhook returns 404, email bounces) the failure is captured on the row and you can re-dispatch manually from the API.
Who can configure webhooks
Slack webhook URLs are sensitive: anyone who has one can post into your channel. Writes to slack_webhook_url and notify_emails are role-gated to agency_owner, agency_admin, and platform_admin. Members and viewers cannot point alerts at arbitrary webhooks.
Suggested starter rules
For most clients, three rules cover the important ground:
- SoM drop greater than 10% week-over-week.
- New competitor gap with a traffic estimate above your bar.
- Audit composite score drops a full grade.
The right destinations: critical alerts to a private Slack channel for the operator team, summary email weekly to the account lead.