Discord is a common home for small-team on-call and #alerts channels. Crontinel’s cloud dashboard supports Discord as a native alert channel, or you can route to it as a Discord incoming webhook the same way you would for Slack-style JSON payloads.
Setup (cloud dashboard, recommended)
- In app.crontinel.com, open your app’s Alert Channels and add a Discord channel
- Paste the Discord webhook URL (see below for how to create one)
- Save — Crontinel posts directly to the webhook, no relay needed
Setup (self-hosted OSS package, via generic webhook)
1. Create a Discord webhook
In your Discord server:
- Server Settings → Integrations → Webhooks → New Webhook
- Pick the channel (e.g.
#cron-alerts) - Copy the webhook URL (
https://discord.com/api/webhooks/...)
2. Configure Crontinel
Use the generic webhook channel and point it at Discord:
CRONTINEL_ALERT_CHANNEL=webhook
CRONTINEL_WEBHOOK_URL=https://discord.com/api/webhooks/<id>/<token>
Discord expects a JSON body with a content field. Crontinel’s webhook payload is structured JSON; if your Discord channel shows raw JSON, add a small relay (Cloudflare Worker, Zapier, or n8n) that maps alert.message to Discord content, or use a Discord-compatible formatter in your relay.
Simple relay pattern: POST from Crontinel → your endpoint → Discord with:
{ "content": "Crontinel: [app] task failed - details..." }
3. Test
php artisan crontinel:test-alert
Confirm a message appears in the target channel (directly or via your relay).
What to alert on
Same events as other channels:
- Scheduled task failure, late, or missed runs
- Horizon supervisor paused or stopped
- Queue depth and oldest-job-age thresholds
- Failed job rate spikes
Tips
- Use a dedicated
#infraor#cronchannel to avoid noise in general chat - Staging apps should post to a separate webhook from production
- Pair Discord with PagerDuty for severity-based routing (Discord for warn, PagerDuty for page)