Quick overview
This workflow runs every 30 minutes to pull delivery, code, CI/CD, security, and production monitoring signals from ClickUp, GitHub, a security scanner API, and an APM endpoint, computes a 0–100 Engineering Health Score, and sends WhatsApp alerts with an acknowledgement-and-recheck loop for critical states.
How it works
- Runs on a 30-minute schedule (or manually for testing) and loads configuration values such as ClickUp list IDs, GitHub repo details, API endpoints, WhatsApp sender/recipient, and health thresholds.
- Fetches open tasks from ClickUp, open pull requests and recent GitHub Actions workflow runs from GitHub, plus security findings and monitoring metrics from your security scanner and APM APIs.
- Combines the retrieved signals and calculates per-pillar scores (Delivery, Code, CI/CD, Security, Production) and an overall 0–100 Engineering Health Score with a formatted WhatsApp-ready status message.
- Correlates cross-system risks (for example, overdue work that also has failing CI on a related branch, or critical findings alongside elevated production errors) and includes them in the run output.
- Routes by overall status: sends a critical WhatsApp alert and waits for an acknowledgement, sends a degraded WhatsApp notice, or logs the run without notifying when healthy.
- For critical incidents, waits for acknowledgement, enforces a recovery grace period, re-fetches monitoring signals, recomputes health, and then either escalates via WhatsApp if still critical or sends a recovery confirmation and closes the incident.
Setup
- Add credentials for ClickUp API, GitHub API, and HTTP Header Auth for both your security scanner API and your monitoring/APM API.
- Add WhatsApp Business Cloud credentials and ensure the WhatsApp phone number ID and recipient phone number are available for the WhatsApp send actions.
- Update the configuration values for ClickUp team/list IDs, GitHub repo owner/name, security and monitoring API URLs, WhatsApp identifiers, and the critical/degraded score thresholds.
- Copy the resume webhook URL from the incident acknowledgement wait step and configure your on-call or acknowledgement source to call it with an
acknowledged=true payload.