Workflows
Build automated incident response workflows with a visual flow builder. Connect triggers, processing nodes, and notification destinations to create powerful automation pipelines.
Overview
Workflows are the heart of alerting and automation in upti.my. When a monitored failure creates an incident, workflows take over and handle everything that happens next: where notifications go, how messages are formatted, which teams get paged, and what enrichment data is attached. You build all of this with a visual drag-and-drop flow builder.
Incidents can be created by failed healthchecks, missed heartbeats, manual reports, or incident conditions and alert rules that trigger. Once an incident opens, matching workflows run your predefined response steps to notify the right people.
Each workflow is a directed graph of nodes connected by edges. Data flows from a trigger node through optional processing nodes (filters, delays, enrichment, deduplication) and terminates at one or more destination nodes (Slack, PagerDuty, email, webhooks, and more). You can filter, delay, deduplicate, and enrich data at every step.
ℹ️ Conditions + Workflows = Complete Alerting
Detection decides when to create an incident. Workflows decide what happens after. This clean separation means you can change your notification routing, add new destinations, or tweak message templates without touching your detection logic.
Workflow Templates
To get started quickly, upti.my includes pre-built workflow templates covering common patterns like service down alerts, smart escalation, incident lifecycle notifications, and deduplicated PagerDuty alerts. Select a template from the workflow builder and customize it to fit your needs.
Node Categories
The flow builder organizes nodes into three categories: triggers that start the workflow, processing nodes that enrich and shape the data, and destination nodes that deliver notifications and alerts.
Trigger Nodes (Entry Points)
Every workflow begins with exactly one trigger node. The trigger defines when and why the workflow executes.
| Trigger | Description |
|---|---|
| Service Down | Fires when a healthcheck transitions to a down state. You can filter by specific healthchecks or tags. |
| Service Up | Fires when a healthcheck recovers from a down state. Use this to send recovery notifications. |
| Incident Created | Fires when a new incident is opened, either automatically from a failed healthcheck, missed heartbeat, alert rule, or manually by a team member. |
| Manual Trigger | Allows on-demand execution from the dashboard or API. Ideal for testing workflows or running one-off automations. |
💡 Filtering Triggers
Most trigger nodes support filter conditions. For example, you can configure a "Service Down" trigger to fire only when checks tagged with production go down. This prevents unnecessary workflow executions for staging or development environments.
Processing Nodes (Middle)
Processing nodes sit between the trigger and destinations. They let you add logic, delays, data enrichment, and deduplication to your workflow. You can chain multiple processing nodes together.
| Node | Description |
|---|---|
| Filter | Filter the workflow based on severity levels, specific applications, or event types. Uses multi-criteria AND logic. Optionally check whether the incident is still active before proceeding. |
| Delay | Wait a specified duration or until a specific time of day before continuing. Useful for escalation chains where you want to give the on-call engineer time to respond. |
| Deduplicate | Suppress duplicate notifications within a configurable time window. Prevents notification floods during major outages where multiple checks fail simultaneously. |
| Enrichment | Automatically fetch and attach application context to the workflow payload. Adds relevant metadata so downstream notifications include the information responders need. |
| AI Enrichment | Use AI to analyze the incident context and generate a severity assessment, probable root cause, impact analysis, and recommended next steps. Powered by OpenAI. |
| On-Call | Resolve the current on-call participant from your on-call schedule. Routes the notification to whoever is on duty, so alerts always reach the right person. |
Example: Escalation Chain
A common pattern is to notify a Slack channel immediately, then add a Delay node set to 10 minutes. After the delay, add a Filter node that checks whether the incident is still active. If it is, route to PagerDuty for escalation. Build this visually by dragging nodes onto the canvas and connecting them with edges.
💡 AI-Powered Triage
Add an AI Enrichment node early in your workflow to automatically assess severity and suggest root causes. The analysis is included in downstream notifications, giving your team a head start on diagnosis.
Destination Nodes
Destination nodes deliver notifications and data to external services. Each workflow can have multiple destinations, and you can use Filter nodes to route different alerts to different channels based on severity, tags, or time of day.
Slack
Send messages to any Slack channel or direct message. Configure a message template using Handlebars variables from the workflow payload, and optionally use Slack Block Kit for rich formatting. Requires a Slack workspace connection via OAuth.
Discord
Post messages to Discord channels using OAuth. Supports embed templates with custom title, description, color, and fields.
Telegram
Send messages to Telegram chats and groups via the upti.my bot. Message templates support Handlebars variables from the workflow payload.
Send email notifications to one or more recipients. Configure the subject line and body using Handlebars templates. Supports HTML email bodies for rich formatting. Emails are sent from noreply@upti.my.
Microsoft Teams
Post messages to Microsoft Teams channels via OAuth. Supports Adaptive Card templates for rich, interactive messages with buttons and sections.
PagerDuty
Create PagerDuty incidents with configurable routing key and severity level (critical, high, medium, low). upti.my sends Events API v2 payloads, so incidents appear in your PagerDuty service with full context.
Send WhatsApp notifications for critical alerts that need immediate attention. Available on premium plans.
Linear
Create Linear issues from incidents. Configure the target team and use Handlebars templates for the issue title and description, so every incident lands in your backlog with full context.
GitHub Issues
Open GitHub issues automatically in a repository of your choice. Issue title and body support Handlebars templates, making it easy to track incidents alongside your code.
Railway
Connect your Railway account to act on your services directly from a workflow, such as triggering restarts or redeploys when an incident fires.
SMS
Send SMS text message alerts for high-priority incidents. Available on premium plans. Ideal for reaching on-call engineers who may not be at their desk.
Status Page
Send notifications to your status page subscribers. When a workflow fires with a Status Page destination, subscribers who opted in to email or webhook notifications are notified. Publishing incidents to status pages is controlled separately from the incident management side.
Custom Webhook
Send HTTP requests to any URL. Configure the HTTP method (GET, POST, PUT, PATCH), custom headers, and a JSON body template. This is the most flexible destination, allowing you to integrate with any service that has an HTTP API.
ℹ️ Handlebars Templates
All destination nodes support Handlebars templating with helpers like if, unless, each, with, eq, ne, gt, and lt. Available variables include event.*, variables.application.*, variables.aiAnalysis.*, onCall.*, and metadata.*. Use the "Test" button in the flow builder to preview rendered templates with sample data.
Workflow Run History
Every workflow execution is tracked with full run history. Each run records the status (completed, failed, or running), total duration, log messages from each node, and any errors encountered. Review run history from the workflow detail page to debug issues and verify that notifications are being delivered correctly.
On-Call Schedules
Create and manage on-call schedules directly in upti.my. Define participants, rotation periods, and escalation rules. The On-Call processing node resolves the current on-call person at execution time, so workflow destinations always notify the right engineer.
Best Practices
- Start simple. Build a single trigger-to-destination workflow before adding processing nodes.
- Use the Deduplicate node to prevent notification floods during major outages.
- Test workflows with the Manual Trigger before connecting them to live alerts.
- Use Filter nodes to route critical alerts to PagerDuty and low-severity alerts to Slack.
- Keep escalation delays reasonable. A 5 to 15 minute delay before escalation gives on-call engineers time to respond.
- Use AI Enrichment nodes to include root cause analysis and severity assessment in your notifications.
- Review workflow run history regularly to identify failures or misconfigured nodes.
- Use workflow templates as starting points rather than building from scratch.
⚠️ Execution Limits
Free and Starter workspaces can use workflow templates. Growth adds custom workflows, Scale adds advanced workflow controls, and Enterprise is custom. Workflow executions are also limited per workspace per month: Free gets 500, Starter gets 5,000, Growth gets 50,000, Scale gets 250,000, and Enterprise is custom. The counter resets at the start of each billing cycle. Check the pricing page for current limits.