$crond.io
integrations / slack

Slack Alerts for Cron Jobs

Route cron failure and recovery alerts into any Slack channel using an incoming webhook. Three-minute setup, no Slack app install required.

1. Create the Slack webhook

Slack's incoming webhooks live under a workspace app. If your workspace already has an "Incoming WebHooks" app installed, skip to step 1.3.

  1. Go to api.slack.com/messaging/webhooks and click Create your Slack app.
  2. Name the app (we recommend "crond.io alerts") and pick your workspace.
  3. Under Features → Incoming Webhooks, toggle it on and click Add New Webhook to Workspace.
  4. Choose the channel for failure alerts (e.g. #alerts-cron). Copy the resulting URL — it looks like https://hooks.slack.com/services/T.../B.../...

2. Add the webhook to crond.io

Either via the dashboard or API.

# Per-monitor alert channel
curl -X POST https://api.crond.io/api/v1/monitors/$MONITOR_ID/alerts \
-H "Authorization: Bearer $CROND_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"channel": "webhook",
"url": "https://hooks.slack.com/services/...",
"trigger": ["down", "recovered"]
}'

3. What the alerts look like

crond.io sends a JSON payload that Slack renders into a formatted block. A failure alert includes monitor name, status, duration since last successful ping, and a link back to the monitor detail page.

🔴 nightly-backup is DOWN
No ping received in 47m (grace was 30m).
Last successful ping: 2026-05-30 02:04 UTC
Last exit code: 1
→ View monitor: etc.crond.io/monitors/mon_abc123

Routing patterns

Different channels per severity

Create two Slack webhooks — one pointing at #alerts-cron for routine failures, another at #incidents for critical workloads. Add each as a separate alert channel on the corresponding monitors.

Team ownership via channel

For multi-team setups, route each monitor's alerts to the owning team's channel. #data-platform gets ETL pipeline alerts; #infra gets backup and SSL-renewal alerts. One webhook per channel, applied to the relevant monitors only.

Slack-to-PagerDuty escalation

Slack is great for awareness, but it doesn't wake anyone up. For monitors that should escalate, add a PagerDuty channel alongside Slack — Slack gets the first ping, PagerDuty fires if the alert is still active after 5 minutes. See all integrations for PagerDuty setup.

Troubleshooting

  • No message in Slack: test the webhook URL directly with curl -X POST -d '{"text":"test"}' $WEBHOOK_URL. If that fails, the webhook was deleted or the app uninstalled.
  • Messages going to wrong channel:Slack incoming webhooks are bound to a single channel at creation. To redirect, edit the channel in your Slack app's webhook settings.
  • Rate limits: Slack throttles at ~1 message/sec per webhook. If you have hundreds of monitors firing simultaneously during a major outage, expect some delay — alerts queue and drain in order.