Documentation

Notification Channels

SSLTrackr can notify you through multiple channels when your SSL certificates are about to expire, have expired, or when a domain becomes unreachable.

Each channel is a simple notification endpoint tied to your account. Alert thresholds are configured per domain: on each domain's detail page, you subscribe channels and choose which thresholds trigger notifications. You can configure multiple channels of the same type.

In addition to external channels, every alert automatically generates an in-app notification visible in the sidebar. This cannot be disabled.

Email

Sends an HTML email via Brevo (SMTP) with the alert severity, hostname, expiration date, and days remaining.

FieldExample
LabelMy email alerts
Email addressops@example.com

SMS

Sends a 160-character SMS via Brevo. When subscribing an SMS channel to a domain, only the 3-day, 1-day, and expired (0) thresholds are available by default to avoid excessive messaging costs.

The phone number must include the international prefix (e.g. +33 for France, +1 for US).

Slack

Posts a rich message to a Slack channel via Incoming Webhook, with a color-coded sidebar based on severity (blue = info, orange = warning, red = critical).

Setup

  1. Go to https://api.slack.com/apps and click Create New App
  2. Choose From scratch, name it (e.g. SSLTrackr), and select your workspace
  3. In the left sidebar, click Incoming Webhooks
  4. Toggle Activate Incoming Webhooks to On
  5. Click Add New Webhook to Workspace
  6. Select the channel where alerts should be posted (e.g. #ssl-alerts) and click Allow
  7. Copy the Webhook URL and paste it in SSLTrackr

The URL looks like: https://hooks.slack.com/services/T.../B.../xxxx

Webhook

Sends a signed JSON POST request to any HTTPS endpoint. Every request is signed with HMAC-SHA256 so you can verify authenticity.

The HMAC secret must be at least 16 characters.

Signature header

X-SSLTrackr-Signature: sha256=<hex-encoded HMAC-SHA256>

Payload format

Example payload:

{
  "alert_type": "ssl_expiry",
  "hostname": "example.com",
  "severity": "warning",
  "title": "example.com — SSL certificate expires in 30 days",
  "message": "The SSL certificate for example.com expires on 2026-03-21. 30 days remaining.",
  "threshold_days": 30,
  "triggered_at": "2026-02-19T12:00:00.000Z"
}

Alert types

alert_typethreshold_daysDescription
ssl_expiry60, 30, 14, 7, 3, 1Certificate expires in N days
ssl_expired0Certificate has expired
domain_unreachablenullDomain unreachable for 3+ consecutive checks

Severity levels

SeverityCondition
infoMore than 30 days remaining
warning8 to 30 days remaining
critical7 days or less / expired / unreachable

Verifying the signature

The HMAC signature is computed over the raw JSON body using your secret. Always verify the signature before processing the payload.

Node.js

const crypto = require("crypto");

app.post("/webhook", express.raw({ type: "application/json" }), (req, res) => {
  const signature = req.headers["x-sslexpirealert-signature"];
  const expected = "sha256=" + crypto
    .createHmac("sha256", process.env.WEBHOOK_SECRET)
    .update(req.body)
    .digest("hex");
  if (signature !== expected) return res.status(401).send("Invalid signature");
  const payload = JSON.parse(req.body);
  // Handle the alert...
  res.status(200).send("OK");
});

Python

import hmac, hashlib

def verify(body: bytes, secret: str, header: str) -> bool:
    expected = hmac.new(secret.encode(), body, hashlib.sha256).hexdigest()
    return header == f"sha256={expected}"

Push Notifications

Receive native browser and mobile notifications directly on your device. Push notifications work even when the app is not open.

Requirements: HTTPS, supported browser, notification permission granted
Each push subscription is tied to a specific browser/device. Enable push on each device where you want to receive alerts.

Alert thresholds

On each domain's detail page, you subscribe a channel and select which thresholds trigger notifications. Each channel can have different thresholds per domain. Only one alert fires per threshold per certificate.

  • 60 days — Early warning
  • 30 days — Renewal recommended
  • 14 days — Renewal strongly recommended
  • 7 days — Urgent, renewal needed soon
  • 3 days — Critical, immediate action required
  • 1 day — Last chance before expiry
  • Expired — Certificate has already expired

Deduplication

The same alert will not fire twice for the same threshold until the certificate is renewed (detected via serial number change).