Skip to content

Email & Webhooks

SentriKat sends alerts when new vulnerabilities match your product inventory. Configure email notifications, webhook integrations, and escalation policies to keep your team informed.

Which plans include it

Email alerts: every Cloud plan. Slack, Teams, Discord and custom webhooks: Cloud Pro and above. On-premises, both need Professional: with the Community Edition you see matches in the dashboard but receive no automated notifications.

Email Alerts

SMTP Configuration (on-premises)

Configure SMTP via environment variables in your .env file:

SMTP_HOST=smtp.example.com
SMTP_PORT=587
[email protected]
SMTP_PASSWORD=your-app-password
SMTP_USE_TLS=true
[email protected]
SMTP_FROM_NAME=SentriKat

Apply the changes:

docker compose up -d

docker compose restart does not reread .env, so the new values would not apply.

See Configuration for the full list of SMTP variables.

Testing Email

Verify your SMTP setup:

docker compose exec sentrikat flask smtp test --to [email protected]

Or from the interface: Settings > Alert Management > Send Test Email.

Alert Types

Alert Trigger Default
New exploited match A new exploited vulnerability matches one of your products Enabled
Due Date Approaching Remediation deadline within 7 days Enabled
Due Date Overdue Remediation deadline has passed Enabled
Ransomware Association exploited vulnerability flagged as ransomware-linked Enabled
Vendor Advisory New vendor advisory matched (Cloud Pro and above, on-premises Professional) Disabled
Agent Offline Agent has not checked in for more than 15 minutes Enabled

Where alerts are configured

Alerts are set per organization, under Alerts. There is no separate rules page.

Each organization has:

  • the email addresses that receive its alerts
  • an outbound webhook, if you want the alerts in Slack, Teams, Discord or your own endpoint
  • which alerts are on

The alert for a vulnerability confirmed as exploited is always on and cannot be switched off.

See Alerts.

Webhooks

SentriKat can send real-time notifications to external services via webhooks.

Creating a Webhook

Webhooks are set per organization (see Alerts):

  1. Go to Management > Organizations
  2. Open the organization for editing and select the Webhook tab
  3. Choose the Type (Slack, Teams, Discord or custom) and enter the URL of the endpoint that receives the alerts
  4. Test and save

Platform-Specific Setup

  1. In Slack, go to Apps > Incoming Webhooks
  2. Create a new webhook and select a channel
  3. Copy the webhook URL
  4. In SentriKat, add a webhook with the Slack URL in the organization's Webhook tab
  5. Set Type to Slack

Example payload SentriKat sends:

{
  "text": "New KEV Match: CVE-2024-1234",
  "blocks": [
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": "*CVE-2024-1234* - Microsoft Windows Privilege Escalation\n*Priority*: Critical | *Due*: 2024-02-15 | *Ransomware*: Yes"
      }
    }
  ]
}

  1. In Teams, add an Incoming Webhook connector to your channel
  2. Copy the webhook URL
  3. In SentriKat, add a webhook with the Teams URL in the organization's Webhook tab
  4. Set Type to Teams

SentriKat sends Adaptive Card payloads compatible with Teams.

  1. In Discord, go to Server Settings > Integrations > Webhooks
  2. Create a new webhook and copy the URL
  3. In SentriKat, add a webhook with the Discord URL in the organization's Webhook tab
  4. Set Type to Discord

For custom integrations, use the generic JSON format:

{
  "event": "vulnerability.matched",
  "timestamp": "2024-12-01T12:00:00Z",
  "data": {
    "cve_id": "CVE-2024-1234",
    "vendor": "Microsoft",
    "product": "Windows Server",
    "priority": "critical",
    "due_date": "2024-02-15",
    "ransomware": true,
    "organization": "ACME Corp"
  }
}

Webhook Events

Event Description
vulnerability.matched New exploited vulnerability matches a product
vulnerability.due_soon Remediation deadline within 7 days
vulnerability.overdue Remediation deadline passed
vulnerability.acknowledged Vulnerability marked as resolved
agent.offline Agent missed check-in window
sync.completed exploited-vulnerability sync finished
sync.failed exploited-vulnerability sync encountered an error

Webhook Security

When a secret is configured, SentriKat signs each payload with HMAC-SHA256:

X-SentriKat-Signature: sha256=abc123...

Verify the signature on the receiving end:

import hmac, hashlib

def verify_signature(payload, signature, secret):
    expected = "sha256=" + hmac.new(
        secret.encode(), payload, hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(expected, signature)

Escalation Policies

Define escalation chains for unacknowledged critical vulnerabilities:

  1. Go to Settings > Alert Management, where the escalation policies live on the same page
  2. Click Add Policy
  3. Define escalation tiers:
  4. Tier 1 (immediate): Notify assigned team via email + Slack
  5. Tier 2 (after 24h): Notify org admin
  6. Tier 3 (after 72h): Notify super admin + all configured webhooks
  7. Click Save

Warning

Escalation policies only trigger for vulnerabilities with priority Critical or High. Lower-priority items follow standard alert rules.

Troubleshooting

Emails Not Sending

# Check SMTP connectivity
docker compose exec sentrikat flask smtp test --to [email protected]

# View mail-related logs
docker compose logs sentrikat | grep -i smtp

Webhook Failures

  1. Open the Alerts page, which lists what was sent, when, and whether it was delivered
  2. Check the webhook URL in the organization's Webhook tab and use the test button
  3. Make sure the receiving endpoint is reachable from the SentriKat server

Next Steps