Skip to content

Notifications

Reoclo sends notifications when important events happen across your infrastructure. Configure email (SMTP) and webhook channels, choose which events you care about, and optionally filter events per webhook endpoint.

ChannelDeliveryAuthentication
EmailSMTP with TLSUsername/password
WebhooksHTTPS POST with JSON payloadHMAC-SHA256 signature (optional)

Both channels can be enabled independently and configured from Settings > Notifications in the dashboard.

EventDefaultDescription
deploy_startedOffA deployment has started
deploy_succeededOnA deployment completed successfully
deploy_failedOnA deployment failed
EventDefaultDescription
monitoring_dns_changedOnDNS records changed for a domain
monitoring_ssl_expiringOnSSL certificate is expiring soon
monitoring_domain_expiringOnDomain registration is expiring
monitoring_uptime_downOnA monitor detected downtime
monitoring_uptime_recoveredOnA monitor recovered from downtime
EventDefaultDescription
incident_createdOnA new incident was created
incident_updatedOnAn incident status was updated
incident_resolvedOnAn incident was resolved
EventDefaultDescription
scheduled_op_failedOnA scheduled operation run failed
scheduled_op_auto_pausedOnAn operation was auto-paused after 5 consecutive failures
EventDefaultDescription
security_ip_conflictOnA server’s IP address changed unexpectedly
  1. Go to Settings > Notifications
  2. Enable Email notifications
  3. Configure your SMTP server:
FieldRequiredDefaultDescription
SMTP hostYes-Your mail server (e.g., smtp.gmail.com)
SMTP portNo587SMTP port (587 for TLS, 465 for SSL)
UsernameNo-SMTP authentication username
PasswordNo-SMTP authentication password (encrypted at rest)
Use TLSNoYesEnable STARTTLS
From addressYes-Sender email address
RecipientsYes-List of email addresses to notify
  1. Click Test Email to verify the configuration works
  2. Save
  1. Go to Settings > Notifications
  2. Enable Webhooks
  3. Add a webhook endpoint:
    • URL: your HTTPS endpoint that receives POST requests
    • Secret (optional): shared secret for HMAC-SHA256 signature verification
    • Events (optional): filter which events this endpoint receives. Leave empty for all events.
  4. Click Test Webhook to verify delivery
  5. Save

You can add multiple webhook endpoints, each with different event filters.

Every webhook receives a JSON POST with this structure:

{
"tenant_id": "550e8400-e29b-41d4-a716-446655440000",
"event": "deploy_succeeded",
"subject": "Deployment succeeded",
"body": "<p>Deployment for MyApp succeeded.</p>",
"metadata": {
"deployment_id": "dep-abc123",
"application_id": "app-xyz789",
"application_name": "MyApp"
},
"timestamp": "2026-04-10T15:30:45.123456+00:00"
}

The metadata object varies by event type and includes relevant resource IDs and context.

If you set a secret on your webhook endpoint, Reoclo signs each payload with HMAC-SHA256. The signature is sent in the X-Reoclo-Signature-256 header.

To verify:

import hashlib
import hmac
import json
def verify(payload, secret, signature_header):
body = json.dumps(payload, separators=(",", ":"), sort_keys=True).encode()
expected = "sha256=" + hmac.new(
secret.encode(), msg=body, digestmod=hashlib.sha256
).hexdigest()
return hmac.compare_digest(expected, signature_header)
const crypto = require('crypto');
function verify(payload, secret, signatureHeader) {
const body = JSON.stringify(payload); // keys already sorted by Reoclo
const expected = 'sha256=' + crypto
.createHmac('sha256', secret)
.update(body)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(expected), Buffer.from(signatureHeader)
);
}

Failed webhook deliveries (non-2xx response) are retried up to 3 times with exponential backoff:

AttemptDelay
1st retry1 second
2nd retry2 seconds
3rd retry4 seconds

After 3 failed attempts, the delivery is logged and dropped. Other channels (email, other webhooks) are not affected by a single endpoint’s failure.

Toggle individual events on or off in the notification settings. Disabled events are not sent to any channel.

Each webhook endpoint can specify which events it receives:

  • Empty event list: receives all globally enabled events
  • Specific events: only receives those event types

This lets you route different events to different systems. For example:

  • Slack webhook: deployment events only
  • PagerDuty webhook: monitoring and incident events only
  • Logging webhook: all events

Use a Slack Incoming Webhook:

  1. Create an Incoming Webhook in your Slack workspace
  2. Add the webhook URL to Reoclo notifications
  3. Filter to events you want in Slack (e.g., deploy_succeeded, deploy_failed)

Slack will display the subject and body from the payload.

Use a Discord webhook URL. The payload format works with Discord’s webhook API when wrapped in an embed.

Point webhooks at your own API to trigger custom workflows:

  • Auto-rollback on deploy failure
  • Create Jira tickets on incidents
  • Send SMS via Twilio on critical downtime
  • Update a Grafana annotation on deploy
IssueCauseFix
No emails receivedSMTP not configured or test failsRun Test Email to diagnose
Emails in spamMissing SPF/DKIM on sending domainConfigure SPF and DKIM for your from address
Webhook not receivingURL unreachable or returning non-2xxRun Test Webhook to diagnose
Missing eventsEvent type disabled globallyCheck the event toggles in settings
Webhook getting all eventsPer-endpoint filter is emptyAdd specific events to the endpoint filter