Many Laravel teams on Microsoft 365 use Teams for incident discussion. Crontinel’s cloud dashboard supports Microsoft Teams as a native alert channel, posting a MessageCard directly to your Teams webhook.
Setup (cloud dashboard, recommended)
- In app.crontinel.com, open your app’s Alert Channels and add a Microsoft Teams channel
- Paste the Teams incoming webhook URL (see below for how to create one)
- Save — Crontinel posts a MessageCard directly to the webhook, no relay needed
Setup (self-hosted OSS package, via generic webhook)
1. Add Incoming Webhook in Teams
- Open the Teams channel for alerts
- ⋯ next to the channel name → Connectors (or Workflows in newer tenants)
- Search for Incoming Webhook, configure name and icon, create
- Copy the webhook URL (often
https://outlook.office.com/webhook/...orhttps://*.webhook.office.com/...)
2. Point Crontinel at the webhook
CRONTINEL_ALERT_CHANNEL=webhook
CRONTINEL_WEBHOOK_URL=https://your-teams-incoming-webhook-url
Teams webhooks accept JSON with a text field (and optional Adaptive Cards for richer formatting). Crontinel sends structured alert JSON. For first-class Teams cards, use a small Azure Function or Power Automate flow that transforms the payload:
{ "text": "Crontinel alert: Horizon paused on production-api" }
3. Verify
php artisan crontinel:test-alert
Alert types
Teams receives the same alert classes as Slack and email:
- Cron / scheduler failures and missed windows
- Queue depth and Horizon supervisor state
- Recovery notifications when issues clear
Governance
- Restrict webhook creation to owners of the
#Production-Alertsteam - Rotate webhook URLs if a URL leaks (delete connector, recreate)
- Document escalation: Teams message → on-call engineer → PagerDuty if no ack