Skip to content

Notifications

Reoclo sends notifications when important events happen across your infrastructure. Each delivery destination is a notification channel: pick a provider, supply credentials, choose which events it receives, and you’re done.

ProviderSetup GuideBest for
EmailEmailDirect delivery to inboxes via your own SMTP server
SlackSlackTeam chat with severity-coded messages
DiscordDiscordCommunity channels with color-coded embeds
Microsoft TeamsMicrosoft TeamsAdaptive Cards in a Teams channel
PagerDutyPagerDutyOn-call paging with severity mapping
OpsGenieOpsGenieIncident alerts routed to teams
Generic WebhookGeneric WebhookCustom automation: POST JSON to any HTTPS endpoint

You can add as many channels as you like — for example, one Slack channel for deploys, one PagerDuty channel for uptime, and a generic webhook for your data warehouse.

  1. Create the channel in Settings → Notification Channels (or with reoclo channels create). Supply the provider-specific config and a secret (webhook URL, integration key, API key, or password).
  2. Test it with the Send Test button (or reoclo channels test <id>) before saving. Channels must pass the test before they go live.
  3. Pick events — every channel has an independent event toggle so you can route deploys to Slack and incidents to PagerDuty without overlap.
  4. Wire it into alert rules under Settings → Alerts when you want a channel to fire on specific monitoring thresholds.

Secrets are encrypted at rest with envelope encryption (AES-256-GCM) and never returned by the API.

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

Alert-triggered notifications carry a severity that providers use for formatting and routing:

SeveritySlack iconDiscord colorTeams accentDefault PagerDutyDefault OpsGenie
critical:red_circle:RedAttentioncriticalP1
warn:warning:OrangeWarningwarningP3
info:information_source:BlueDefaultinfoP5

PagerDuty and OpsGenie let you override the mapping per channel — see those guides for details.

Failed 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. A failure on one channel never blocks delivery to another.

Terminal window
# List available provider kinds
reoclo channels kinds
# List your channels
reoclo channels list
# Create from YAML (recommended for anything with special characters)
reoclo channels create slack --from-file slack-deploys.yaml
# Send a test
reoclo channels test <channel-id>
# Disable temporarily
reoclo channels disable <channel-id>

YAML files passed to --from-file support ${env:VAR} placeholders, so you can keep secrets out of git:

kind: slack
name: deploys
config: {}
secret: ${env:SLACK_WEBHOOK_URL}
events:
deploy_succeeded: true
deploy_failed: true
IssueCauseFix
Channel won’t saveTest delivery failedReoclo blocks channel creation until a test succeeds — check the error returned by Send Test
Channel saved but silentEvent toggles all offOpen the channel and enable the events you want
Working then silentProvider rotated/revoked the secretUpdate the channel secret and re-test
Channel disabled itselfRepeated delivery failureRe-test, check provider status, then re-enable