Skip to content

Alerts

scherlok watch, ci, check, dbt and dbt-run-and-watch all take the same alert flags.

Webhooks

scherlok watch --webhook https://hooks.slack.com/services/...     # Slack
scherlok watch --webhook https://discord.com/api/webhooks/...     # Discord
scherlok watch --webhook https://outlook.office.com/webhook/...   # Microsoft Teams
scherlok watch --webhook https://my-api.com/alerts                # anything else: generic JSON

Slack, Discord and Teams are detected from the URL and get a formatted payload; any other URL receives a generic JSON document with the anomaly list.

E-mail

export SCHERLOK_SMTP_HOST=smtp.gmail.com
export SCHERLOK_SMTP_USER=alerts@company.com
export SCHERLOK_SMTP_PASSWORD=app-specific-password

scherlok watch --email team@company.com --email cto@company.com

Multipart HTML and plain text.

Exit codes

scherlok watch --exit-code --fail-on critical

Exit 1 when an anomaly at or above the chosen severity fired; see CI/CD gate.

Add a root-cause hypothesis

--explain sends the anomaly batch (never rows or credentials) to Claude and injects a short hypothesis into the same alert. Opt-in; see AI-explained alerts.

Alert history

Every fired anomaly is persisted next to the profiles. scherlok history --days 30 lists them; the HTML dashboard groups them per table.