Skip to main content
← All integrations

Crontinel Discord Integration: Cron and Queue Alerts to Your Server

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.

  1. In app.crontinel.com, open your app’s Alert Channels and add a Discord channel
  2. Paste the Discord webhook URL (see below for how to create one)
  3. 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:

  1. Server Settings → Integrations → Webhooks → New Webhook
  2. Pick the channel (e.g. #cron-alerts)
  3. 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:

Tips

See also

Start with one HTTP receipt

Five common runtimes post the same outcome body: curl, Node, Python, Sidekiq, and GitHub Actions. Laravel apps can add the Composer package for schedule, queue, and Horizon.

curl -X POST "$CRONTINEL_API_URL/api/v1/ingest/cron" \
  -H "Authorization: Bearer $CRONTINEL_INGEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{"command":"nightly-import","status":"completed","exit_code":0,"outcomes":{"metrics":{"processed_records":0}}}'