Skip to main content

Overview

Every workflow starts with a trigger — the event or schedule that kicks off execution. EasyAlert supports four trigger types to cover both reactive and proactive automation.

Incident Events

Automatically respond when incidents are created, acknowledged, resolved, escalated, or reassigned

Webhook

Accept HTTP POST requests from external systems — CI/CD pipelines, monitoring tools, custom scripts

Scheduled (Cron)

Run workflows on a recurring schedule using standard cron expressions

Manual

Execute workflows on-demand from the UI or API with optional input variables

Incident Event Triggers

Incident event triggers fire automatically when an incident lifecycle event occurs. Use trigger conditions to filter which incidents activate the workflow.
Fires when a new incident is created from any source — webhook integration, API call, or manual creation.Common use cases:
  • Auto-remediate known issues (restart service, scale deployment)
  • Enrich incidents with additional data from external systems
  • Route incidents to the right team based on service or tags

Trigger Conditions

Conditions filter which incidents activate the workflow. Without conditions, every matching event triggers the workflow. Condition Structure: Each condition evaluates a field against a value using an operator. Conditions are grouped with AND (all) or OR (any) logic. Available Fields:
FieldDescriptionExample Value
severityIncident severity levelcritical, high, medium, low
statusIncident statustriggered, acknowledged, resolved
serviceService that generated the incidentpayment-api, auth-service
sourceIntegration sourceprometheus, datadog, custom
hostAffected hostnameweb-01.prod.internal
teamIdAssigned team IDteam-uuid-here
tags.*Any incident tag by keytags.environment = production
Operators: equals, notEquals, contains, startsWith, endsWith, in, notIn, exists, notExists, matches (regex), and more. See the Node Types guide for the complete operator list.
Trigger conditions:
  • Logic: all (AND)
    • severity equals critical
    • tags.environment equals production
This workflow only fires for critical incidents in the production environment. A high-severity staging incident won’t trigger it.

Webhook Triggers

Webhook triggers let external systems start a workflow by sending an HTTP POST request. This is ideal for integrating with CI/CD pipelines, custom monitoring tools, or any system that can make HTTP calls.
1

Enable Webhook Trigger

In the workflow designer, set the trigger type to Webhook in the Trigger node inspector.
2

Generate Webhook Key

Click Generate Webhook Key. This creates a unique URL and a bearer token (secret).
3

Copy Credentials

Copy the Webhook URL and Secret. The secret is shown only once.
4

Configure Your Source

Set up your external system to POST to the webhook URL with the Bearer token.
Webhook URL format:
POST https://api.easyalert.io/api/v1/automation/webhooks/{webhookKey}
Example request:
curl -X POST https://api.easyalert.io/api/v1/automation/webhooks/wh_abc123 \
  -H "Authorization: Bearer your_webhook_secret" \
  -H "Content-Type: application/json" \
  -d '{"variables": {"deployment": "v2.1.0", "environment": "production"}}'
The webhook secret is displayed only once when generated. If you lose it, you must regenerate the webhook key (which also changes the URL). See the Webhook API guide for full API reference.
Security features:
FeatureDetail
Rate Limit60 requests per minute per webhook key
IdempotencyDuplicate payloads within 5 minutes return a cached result
AuthenticationBearer token (bcrypt-hashed server-side)
Custom Idempotency KeyOptional X-Idempotency-Key header for explicit deduplication

Scheduled Triggers (Cron)

Cron triggers run workflows on a recurring schedule using standard 5-field cron expressions. Cron Format:
┌───────────── minute (0–59)
│ ┌───────────── hour (0–23)
│ │ ┌───────────── day of month (1–31)
│ │ │ ┌───────────── month (1–12)
│ │ │ │ ┌───────────── day of week (0–6, 0 = Sunday)
│ │ │ │ │
* * * * *
Supported syntax:
SyntaxMeaningExample
*Every value* * * * * = every minute
*/NEvery N values*/5 * * * * = every 5 minutes
N-MRange9-17 * * * * = hours 9 through 17
N,M,OList1,15 * * * * = minutes 1 and 15
Common presets:
PresetExpressionDescription
Every 5 minutes*/5 * * * *Run 12 times per hour
Every hour0 * * * *Top of every hour
Every day at midnight0 0 * * *Once daily at 00:00
Every Monday at 9 AM0 9 * * 1Weekly on Monday morning
First of month at noon0 12 1 * *Monthly on the 1st at 12:00
The workflow designer includes a cron validator that shows a human-readable description of your expression (e.g., “Every Sunday at midnight”) and the next 5 run times.
ExpressionMeaning
30 2 * * *Every day at 2:30 AM
0 9-17 * * 1-5Every hour from 9 AM to 5 PM, weekdays only
0 0 */2 * *Every other day at midnight
15 10 * * 0Every Sunday at 10:15 AM
0 */4 * * *Every 4 hours

Auto-Disable on Failure

If a cron-triggered workflow fails 5 consecutive times, it is automatically disabled to prevent runaway failures:
  • A banner appears on the workflow with the disable reason and timestamp
  • The cron schedule stops firing
  • You can re-enable the workflow from its settings after fixing the underlying issue
Auto-disable only affects cron triggers. Incident event and webhook triggers are not affected by consecutive failures.

Manual Triggers

Manual triggers let you execute a workflow on-demand from the UI or API. They’re useful for:
  • Testing workflows before activating event-based triggers
  • Running one-off automation tasks
  • Executing maintenance workflows that don’t need to be scheduled
1

Open the Workflow

Navigate to Automation > Workflows and open the workflow you want to execute.
2

Click Execute

Click the Execute button in the toolbar. Optionally provide input variables as JSON.
3

Monitor Execution

The execution starts immediately. You’re redirected to the execution detail page to monitor progress in real-time.
Manual execution requires the automation:execute permission. The workflow must be published but doesn’t need to be active (activated) — you can manually execute inactive workflows.

Template Variables

Template variables let you use dynamic data in your workflow — incident fields, webhook payloads, node outputs, and more. The syntax is {{variable.path}} with dot notation.
Available when the trigger is an incident event:
VariableDescriptionExample
{{incident.id}}Incident IDINC-001
{{incident.title}}Incident titleHigh CPU on web-01
{{incident.description}}Incident descriptionCPU usage exceeded 90%
{{incident.severity}}Severity levelcritical
{{incident.status}}Current statustriggered
{{incident.service}}Source servicepayment-api
{{incident.host}}Affected hostnameweb-01.prod
{{incident.teamId}}Assigned team IDteam-uuid
{{incident.assignedTo}}Assigned user IDuser-uuid
{{incident.createdAt}}Creation timestamp2024-01-15T10:30:00Z
{{incident.tags}}All tags as object{"env": "prod"}
{{incident.eventType}}Event that triggeredincident.created
Use the Variable Picker (braces icon) in the workflow designer to browse and insert available variables. It shows all variables from the current context — incident fields, upstream node outputs, and loop variables.

Best Practices

Without conditions, an incident.created trigger fires for every incident. Add conditions to filter by severity, service, or environment so the workflow only runs when it’s relevant.
Before connecting your CI/CD pipeline or monitoring tool, send a test request with cURL to verify the webhook URL and secret are correct. Check the execution in the UI to confirm variables are received.
The designer provides presets for common intervals. Use these instead of writing cron expressions from scratch to avoid syntax errors.
Instead of one workflow triggered by all incident events, create separate workflows for incident.created and incident.resolved. This keeps workflows focused and easier to debug.

Troubleshooting

Steps:
  1. Verify the workflow is published and activated (both required)
  2. Check trigger conditions — test with a broader filter first
  3. Verify the incident event type matches (e.g., created vs acknowledged)
  4. Check Automation > Executions for any runs that may have failed silently
Cause: Invalid or missing Bearer token.Steps:
  1. Verify Authorization: Bearer <secret> header is included
  2. Verify the secret matches — it was shown only once at generation
  3. If unsure, regenerate the webhook key and use the new secret
Cause: Rate limit exceeded (60 requests/minute per webhook key).Steps:
  1. Reduce the call frequency from your source system
  2. Use the X-Idempotency-Key header to deduplicate retries
  3. If you need higher throughput, contact support
Cause: Auto-disabled after 5 consecutive failures.Steps:
  1. Check the workflow for an auto-disable banner
  2. Review recent execution failures in Automation > Executions
  3. Fix the underlying issue (connection, credentials, action parameters)
  4. Re-enable the workflow from its settings
Cause: Variable path doesn’t match available data.Steps:
  1. Use the Variable Picker to check available variables
  2. Verify the variable path matches the data structure (e.g., {{incident.title}} not {{title}})
  3. For node outputs, ensure the upstream node has actually executed
  4. For webhook variables, verify the POST body includes the variables field