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.
Supported Channels
Section titled “Supported Channels”| Channel | Delivery | Authentication |
|---|---|---|
| SMTP with TLS | Username/password | |
| Webhooks | HTTPS POST with JSON payload | HMAC-SHA256 signature (optional) |
Both channels can be enabled independently and configured from Settings > Notifications in the dashboard.
Event Types
Section titled “Event Types”Deployment Events
Section titled “Deployment Events”| Event | Default | Description |
|---|---|---|
deploy_started | Off | A deployment has started |
deploy_succeeded | On | A deployment completed successfully |
deploy_failed | On | A deployment failed |
Monitoring Events
Section titled “Monitoring Events”| Event | Default | Description |
|---|---|---|
monitoring_dns_changed | On | DNS records changed for a domain |
monitoring_ssl_expiring | On | SSL certificate is expiring soon |
monitoring_domain_expiring | On | Domain registration is expiring |
monitoring_uptime_down | On | A monitor detected downtime |
monitoring_uptime_recovered | On | A monitor recovered from downtime |
Incident Events
Section titled “Incident Events”| Event | Default | Description |
|---|---|---|
incident_created | On | A new incident was created |
incident_updated | On | An incident status was updated |
incident_resolved | On | An incident was resolved |
Scheduled Operation Events
Section titled “Scheduled Operation Events”| Event | Default | Description |
|---|---|---|
scheduled_op_failed | On | A scheduled operation run failed |
scheduled_op_auto_paused | On | An operation was auto-paused after 5 consecutive failures |
Security Events
Section titled “Security Events”| Event | Default | Description |
|---|---|---|
security_ip_conflict | On | A server’s IP address changed unexpectedly |
Setting Up Email
Section titled “Setting Up Email”- Go to Settings > Notifications
- Enable Email notifications
- Configure your SMTP server:
| Field | Required | Default | Description |
|---|---|---|---|
| SMTP host | Yes | - | Your mail server (e.g., smtp.gmail.com) |
| SMTP port | No | 587 | SMTP port (587 for TLS, 465 for SSL) |
| Username | No | - | SMTP authentication username |
| Password | No | - | SMTP authentication password (encrypted at rest) |
| Use TLS | No | Yes | Enable STARTTLS |
| From address | Yes | - | Sender email address |
| Recipients | Yes | - | List of email addresses to notify |
- Click Test Email to verify the configuration works
- Save
Setting Up Webhooks
Section titled “Setting Up Webhooks”- Go to Settings > Notifications
- Enable Webhooks
- 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.
- Click Test Webhook to verify delivery
- Save
You can add multiple webhook endpoints, each with different event filters.
Webhook Payload
Section titled “Webhook Payload”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.
Verifying Webhook Signatures
Section titled “Verifying Webhook Signatures”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 hashlibimport hmacimport 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) );}Webhook Retry Behavior
Section titled “Webhook Retry Behavior”Failed webhook deliveries (non-2xx response) are retried up to 3 times with exponential backoff:
| Attempt | Delay |
|---|---|
| 1st retry | 1 second |
| 2nd retry | 2 seconds |
| 3rd retry | 4 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.
Event Filtering
Section titled “Event Filtering”Global Filtering
Section titled “Global Filtering”Toggle individual events on or off in the notification settings. Disabled events are not sent to any channel.
Per-Webhook Filtering
Section titled “Per-Webhook Filtering”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
Integration Examples
Section titled “Integration Examples”Use a Slack Incoming Webhook:
- Create an Incoming Webhook in your Slack workspace
- Add the webhook URL to Reoclo notifications
- Filter to events you want in Slack (e.g.,
deploy_succeeded,deploy_failed)
Slack will display the subject and body from the payload.
Discord
Section titled “Discord”Use a Discord webhook URL. The payload format works with Discord’s webhook API when wrapped in an embed.
Custom Automation
Section titled “Custom Automation”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
Troubleshooting
Section titled “Troubleshooting”| Issue | Cause | Fix |
|---|---|---|
| No emails received | SMTP not configured or test fails | Run Test Email to diagnose |
| Emails in spam | Missing SPF/DKIM on sending domain | Configure SPF and DKIM for your from address |
| Webhook not receiving | URL unreachable or returning non-2xx | Run Test Webhook to diagnose |
| Missing events | Event type disabled globally | Check the event toggles in settings |
| Webhook getting all events | Per-endpoint filter is empty | Add specific events to the endpoint filter |
Next Steps
Section titled “Next Steps”- Monitoring & Uptime to set up health checks that trigger notifications
- Status Pages to communicate incidents publicly
- Scheduled Operations which can trigger failure notifications