Alerts

Connecting Slack, Discord, and email

Step-by-step setup for the four alert channel types: email, Slack webhook, Discord embed, generic webhook. Plus the Test button that proves the path works.

Updated 2026-05-25 · 2 min read

Everguardly delivers alerts to four channel types: email, Slack, Discord, and webhook. Slack and Discord both ride on the incoming-webhook pattern; the Discord variant uses an embed payload so alerts render with a colored severity bar and named fields.

To add a channel, open Settings → Channels and click "Add channel". Pick a type, give it a name (whatever helps you recognize it in logs), and supply the destination.

Email

The destination is just the address you want alerts to go to. A team inbox like alerts@yourcompany.com is the right default; per-person email gets noisy fast once you have more than a couple of monitors.

Slack

You need an incoming webhook URL. Slack's docs walk through creating one:

  1. Go to api.slack.com/apps and create an app.
  2. Enable Incoming Webhooks.
  3. Click "Add New Webhook to Workspace" and pick the channel.
  4. Slack hands you a URL that starts with https://hooks.slack.com/services/.
  5. Paste that into Everguardly's "Webhook URL" field.

Discord

Discord webhooks are a few clicks inside the server you want to alert. You need permission to "Manage Webhooks" on the target channel.

  1. Open your Discord server.
  2. Server Settings → Integrations → Webhooks.
  3. Click "New Webhook".
  4. Pick the channel that should receive alerts (e.g. #ops or #site-alerts).
  5. (Optional) Set the name to Everguardly.
  6. Click "Copy Webhook URL".
  7. Paste it into Everguardly's "Webhook URL" field — it starts with https://discord.com/api/webhooks/.

Discord alerts arrive as a colored embed: red for down and expired SSL / domain, amber for SSL or domain expiring soon, green for recovery. The embed includes the monitor name, URL, and registrar/CA where applicable.

Webhook

Pick a URL on your own infrastructure that accepts JSON POST. We send an envelope with event type, monitor metadata, and the payload:

{
  "event": "down",
  "monitor": { "id": "…", "name": "Acme marketing", "url": "https://acme.com" },
  "incidentId": "…",
  "payload": { "error": "HTTP 503" },
  "timestamp": "2026-05-25T12:00:00Z"
}

Your endpoint can do whatever it wants with it — page someone, write to a log, kick off a remediation script.

Always click "Test"

Once a channel is added, hit the Test button. We send a synthetic test alert through the same code path the worker uses for real alerts. A passing test really does prove the channel works end to end.

Routing — three tiers

When a monitor needs to alert, Everguardly resolves channels in this order, most-specific first:

  1. Per-monitor override — Edit monitor → "Send alerts to" → Custom channels. If set, only these channels fire.
  2. Per-client default — Clients → Edit → "Default alert channels". Used when the monitor inherits and has a client assigned.
  3. Global default — Channels marked "Default" in Settings → Channels. Used when neither the monitor nor the client overrides.

This means an agency can set one Discord webhook per client and never touch individual monitors — every site in the client routes there automatically.

Need something this doesn't cover? Email hello@everguardly.com — we'll write the doc.