Why Use Workflows?
Faster Response
Automate initial incident response so your team can focus on resolution
Consistency
Ensure the same steps happen every time, reducing human error
Integration
Connect Kodo to your existing tools and processes
Escalation
Automatically escalate if incidents aren’t acknowledged
Workflow Components
Every workflow has three parts:1. Triggers
What starts the workflow:| Trigger | Description |
|---|---|
incident.created | New incident is opened (including drafts) |
incident.updated | Incident status or message changes |
incident.resolved | Incident is marked resolved |
alert.fired | Alert is triggered via webhook or integration |
alert.resolved | Alert is resolved (auto or manual) |
service.status_changed | Service status updates |
uptime.down | Uptime monitor detects failure |
uptime.recovered | Uptime monitor recovers |
heartbeat.missed | Heartbeat monitor misses expected check-in |
incident.published | Draft incident is published to status page |
error_threshold_exceeded | Error count exceeds configured threshold |
scheduled | Interval-based schedule |
manual | Triggered on-demand via API or dashboard |
2. Conditions (Optional)
Filter when the workflow should run:equals,not_equalscontains,not_containsgreater_than,less_thanin,not_in
3. Actions
What the workflow does:| Action | Description |
|---|---|
| Send Notification | Send to all configured channels (Slack, email) |
| Send Slack Message | Send a message to a Slack webhook |
| Send Email | Send an email to specified recipients |
| Page On-Call | Trigger an on-call escalation policy |
| Create Incident | Open a new incident automatically |
| Update Incident | Change incident status, severity, or title |
| Resolve Incident | Mark an incident as resolved |
| Add Incident Update | Post a status update to an incident |
| Assign Incident | Assign an incident to a team member |
| Add Label | Add a label to an incident |
| Update Service Status | Change service status |
| Send Webhook | POST to an external URL |
| Acknowledge Alert | Auto-acknowledge a firing alert and stop escalation |
| Run Another Workflow | Chain workflows together (max depth: 3) |
| Delay | Pause before the next action |
Example Workflows
Critical Incident Response
When a critical incident is created, notify the on-call team and update the status page:- Dashboard
- Configuration
- Go to Dashboard → Workflows → Create Workflow
- Set trigger:
incident.created - Add condition:
severity equals critical - Add actions:
- Send notification to PagerDuty
- Send notification to #incidents Slack channel
- Execute webhook to your runbook system
Auto-Create Incident on Outage
When uptime monitoring detects a failure, automatically create an incident:Incidents created by workflows follow your organization’s auto-incident visibility setting. If you have draft mode enabled, workflow-created incidents will also start as drafts and won’t appear on the public status page until published. Configure this in Settings > Automation or see Incident Safeguards.
Scheduled Health Check Report
Send a daily summary of system health:Workflow Variables
Use variables in your workflow actions:| Variable | Description |
|---|---|
{{incident.id}} | Incident ID |
{{incident.title}} | Incident title |
{{incident.severity}} | Incident severity |
{{incident.status}} | Current status |
{{incident.source}} | How the incident was created: manual, api, auto_uptime, auto_heartbeat, auto_integration, auto_beacon |
{{incident.visibility}} | draft or public |
{{service.id}} | Affected service ID |
{{service.name}} | Service name |
{{monitor.name}} | Monitor name |
{{monitor.url}} | Monitored URL |
{{alert.message}} | Alert message |
{{timestamp}} | Event timestamp |
Workflow Runs
View execution history on each workflow’s detail page (Dashboard → Workflows → Select Workflow):- Status:
completed,failed,running - Duration: How long the workflow took
- Actions: Which actions succeeded/failed
Workflows and Draft Incidents
If your organization uses draft mode, auto-created incidents start hidden from the public status page. This affects how workflows interact with incidents:incident.createdfires for both drafts and public incidents. Use the conditionvisibility equals draftorvisibility equals publicto distinguish.
Example: Internal Alert on Draft Creation
Alert your team in Slack when a draft is created so they can review it, without notifying subscribers:Incident Safeguards
Learn about draft mode, auto-publish, flap protection, cooldowns, and other safeguards for auto-created incidents.
Best Practices
Start simple, iterate
Start simple, iterate
Begin with basic workflows (notification on critical incident) and add complexity as you understand your needs.
Use conditions to reduce noise
Use conditions to reduce noise
Don’t trigger on every event. Use conditions to filter for actionable situations.
Test with manual triggers
Test with manual triggers
Create a test workflow with
manual trigger to validate your actions before connecting to real events.Enable continue_on_failure for resilience
Enable continue_on_failure for resilience
If one action fails, the workflow can continue executing remaining actions.
Monitor workflow runs
Monitor workflow runs
Regularly review failed workflows to catch integration issues early.