Last updated: July 5, 2026
Configure Triggers
Configure triggers to define when an automation runs. Each trigger responds to specific events like Slack messages, failed checks, GitHub activity, or scheduled times. When an event matches your trigger configuration, the automation executes with variables populated from that event.
Add a Trigger
- Click Add Trigger in the automation editor.
- Select the trigger type from the dropdown.
- Fill in the filter fields to specify which events should match.
- Review the available variables you can use in your prompt.
You can add multiple triggers to one automation. The first trigger that matches an incoming event will fire the automation.
Essential Variables
These variables work in every automation, regardless of trigger type:
- {{now}}: Current timestamp (e.g.,
2026-06-13T14:30:00Z) - {{today}}: Current date (e.g.,
2026-06-13) - {{slack.channel.name}}: Slack channel where the trigger fired (Slack triggers only)
- {{slack.message.text}}: Message content (Slack message triggers only)
- {{check.name}}: Name of the failed check (check triggers only)
- {{github.repository}}: Repository name (GitHub triggers only)
The prompt editor shows available variables as you type. Start typing {{ to see autocomplete suggestions for the selected trigger type.
When to Use Constants
Constants are custom values you define once and reuse across automation runs. Use constants for:
- Environment names:
{{environment}}set toproductionorstaging - Default channels:
{{alert_channel}}set toincidents - Team identifiers:
{{team}}set toplatform-team - Common timeframes:
{{default_window}}set to1h
To define constants:
- Navigate to the Guardrails section in the automation editor
- Find the Constants subsection
- Click Add Constant
- Enter a key (e.g.,
environment) and value (e.g.,production) - Reference in your prompt:
{{environment}}
Slack Message Trigger
Fires when someone posts a message containing specific text in a Slack channel where the Dash0 bot is a member.
For detailed Slack integration setup, trigger configuration, and usage examples, see Set Up Slack Integration, Configure Slack Triggers, and Use Slack Tools.
Configuration Fields
- Message Keyword: Required. The text that must appear anywhere in the message (case-insensitive substring match). Examples:
"investigate"matches "Let's investigate this issue","checkout"matches "Please checkout service logs","is down"matches "API is down" - Channel Names: Optional. Limit to specific channels (without
#). Leave empty to match all channels. - User Handles: Optional. Only match messages from these users (without
@). Leave empty to match all users. - Thread Only: Optional. Check this to only trigger on threaded replies, not top-level messages.
Available Variables
- {{slack.channel.name}}: Channel name (e.g.,
incidents) - {{slack.message.text}}: Full message text
- {{slack.user.handle}}: Username who posted (e.g.,
jane.doe) - {{slack.thread.timestamp}}: Thread ID if message was in a thread
Example Prompt
12345{{slack.user.handle}} mentioned an issue in #{{slack.channel.name}}.Message: "{{slack.message.text}}"Extract the service name, query Dash0 for error rate and latency over the last hour, and respond in thread with your findings.
The Dash0 Slack bot must be a member of the channel. Invite it with /invite @dash0 in the channel.
Slack Reaction Trigger
Fires when someone adds a specific emoji reaction to a message.
Configuration Fields
- Emojis: Required. Which emojis trigger the automation (without colons). Examples:
eyes,rocket,white_check_mark - Channel Names: Optional. Limit to specific channels.
- User Handles: Optional. Only trigger when these users add reactions.
Available Variables
Same as Slack message triggers, plus:
- {{slack.reaction.emoji}}: The emoji that was added (e.g.,
eyes)
Example Prompt
12345Someone reacted with :{{slack.reaction.emoji}}: to a message. Treat this as a request to investigate.Original message: "{{slack.message.text}}"Parse the message for service names and query Dash0 for recent issues. Post your findings in thread.
Failed Check Trigger
Fires when a Dash0 check fails. Ideal for automatic incident response.
Configuration Fields
- Check rule IDs: Optional. Only trigger for specific checks. Leave empty to trigger on any failed check.
- Label filters: Optional. Filter by check labels (e.g., only checks with
severity: high). - Annotation filters: Optional. Filter by check annotations.
Available Variables
- {{check.name}}: Name of the failed check
- {{check.id}}: Check's unique ID
- {{label.service}}: Service name from check labels (if present)
- {{label.*}}: Any other labels on the check
Use {{label.service}} to automatically target the affected service in your queries. For example: "Query error rate for service {{label.service}}".
Example Prompt
12345678Check "{{check.name}}" failed for service {{label.service}}.Query the following for the last 30 minutes:- Error rate and top 5 error messages- p99 latency trend- Recent log errorsPost your analysis to #incidents with recommended next steps.
Schedule Trigger
Runs periodically based on a cron schedule.
Configuration Fields
- Cron Expression: Required. When the automation should run. Supported formats:
- Standard cron:
0 9 * * MON-FRI(9am weekdays) - Shortcuts:
@hourly,@daily,@weekly - Intervals:
@every 15m,@every 2h
- Standard cron:
Available Variables
- {{cron}}: The cron expression that triggered this run
Example Prompt
12345678Daily health report for {{today}}.Query all services with error rate > 2% in the last 24 hours. For each service, include:- Error count and error rate- p99 latency- Active check failuresPost the summary to #daily-reports.
GitHub Pull Request Trigger
Fires when pull requests are opened, updated, or closed in your connected GitHub repositories.
Configuration Fields
- Actions: Optional. Which PR events to match (e.g.,
opened,ready_for_review,synchronize). Leave empty to match all actions. - Accounts: Optional. Only match repositories from these GitHub accounts or organizations.
- Repositories: Optional. Only match specific repositories (format:
owner/repo).
Available Variables
- {{github.repository}}: Full repository name (e.g.,
dash0hq/dash0) - {{github.action}}: What happened (e.g.,
opened,synchronize) - {{github.account}}: GitHub account or organization name
Example Prompt
12345678Pull request {{github.action}} in {{github.repository}}.Review the changes for services that might be affected. Query Dash0 for:- Error rates over the last 7 days- Latency trends- Active check failuresIf you find concerning patterns, summarize your analysis.
Requires the GitHub integration to be connected. GitHub PR comments require Full Network access (use gh CLI via bash). Each Dash0 organization can connect one GitHub account.
Other GitHub Triggers
Dash0 supports additional GitHub trigger types:
- Deployment: Fires when deployments are created or updated
- Deployment Status: Fires when deployment status changes
- Pull Request Review: Fires when reviews are submitted
- Pull Request Review Comment: Fires on review comments
- Release: Fires when releases are published
All use the same configuration fields and variables as pull request triggers.
Linear Comment Trigger
Fires when Dash0 is @mentioned or delegated on a Linear issue AND the comment contains a specific keyword.
Configuration Fields
- Keyword: Required. Keyword that must appear in the comment (case-insensitive substring match). Only comments containing this keyword will trigger the automation.
Available Variables
- {{linear.issue.title}}: Issue title
- {{linear.issue.id}}: Issue ID (e.g.,
ENG-123) - {{linear.issue.url}}: Direct link to the issue
- {{linear.comment.body}}: Comment text
- {{linear.comment.user}}: Who added the comment
Example Prompt
123Comment added to Linear issue "{{linear.issue.title}}".The comment contains the keyword indicating investigation is needed. Query the mentioned service's health in Dash0 and summarize your findings.
The Linear connector is read-only. Agent0 can query Linear issues but cannot post comments back to Linear. Results can be posted to Slack or other integrations.
Webhook Trigger
Fires when an HTTP POST request is sent to the automation's unique webhook URL. Use webhooks to trigger automations from external systems, CI/CD pipelines, monitoring tools, or custom integrations.
Configuration Fields
No configuration fields required. Each automation with a webhook trigger gets a unique URL.
Webhook URL
After adding a webhook trigger to your automation:
- Save the automation
- The webhook URL appears in the trigger configuration
- Copy the URL and configure it in your external system
The URL path format is /api/agentic-workflows/trigger/{webhookId} where {webhookId} is a unique opaque identifier for this webhook trigger. The full URL is region-specific and shown in the trigger configuration.
Available Variables
Webhook triggers accept a JSON payload with a variables map. Each key in the map becomes a variable accessible in your prompt.
Example webhook payload:
12345678{"variables": {"eventType": "deployment","serviceName": "api-gateway","severity": "high","message": "Deployment v2.3.1 to production"}}
Available in prompt:
- {{eventType}} →
"deployment" - {{serviceName}} →
"api-gateway" - {{severity}} →
"high" - {{message}} →
"Deployment v2.3.1 to production"
Design your webhook payload structure to match the variables your prompt needs. Variable names can include letters, numbers, underscores, and dots (e.g., event.type).
Example Prompt
12345678Webhook received: {{eventType}} event for service {{serviceName}}.Severity: {{severity}}Details: {{message}}Query Dash0 for {{serviceName}}'s recent metrics and logs over the last 30 minutes.If severity is "high" or "critical", post findings to #incidents with recommended actions.
Security
Webhook authentication uses a bearer token separate from the webhook URL.
Authentication mechanism:
- The webhook URL is not secret — it's a stable endpoint identifier
- Authentication happens via an
Authorization: Bearer <secret>header - The bearer secret is shown once when you create the webhook trigger
- Store the secret securely (e.g., in your CI/CD secrets manager)
Calling a webhook:
1234curl -X POST <webhook-url-from-trigger-config> \-H "Authorization: Bearer <your-secret>" \-H "Content-Type: application/json" \-d '{"variables": {"eventType": "deployment", "serviceName": "api"}}'
Rotating secrets:
- Use the webhook regenerate endpoint to rotate the bearer secret
- The webhook URL remains the same — only the secret changes
- Regenerating invalidates the old secret immediately
Webhook triggers require the sending system to make outbound HTTPS requests. Ensure your firewall and network policies allow connections to your Dash0 region's API endpoint (shown in the webhook URL).
Multiple Triggers and Variables
When an automation has multiple triggers, only variables from the firing trigger are populated. Other variables remain as literal {{...}} text in the prompt.
If you mix trigger types (e.g., Slack + Schedule), handle this in your prompt:
12If this is a Slack message, respond in #{{slack.channel.name}}.If this is a scheduled run, post to #daily-reports.
Alternatively, create separate automations for each trigger type to keep prompts simpler.
Advanced Variables
These variables are available but less commonly needed:
- {{dash0.dataset}}: Dataset the automation runs in
- {{dash0.workflow.id}}: Automation's ID
- {{dash0.workflow.name}}: Automation's display name
- {{dash0.workflow.version}}: Automation's version
- {{dash0.workflow.run.id}}: Unique ID for this specific run
- {{dash0.trigger.kind}}: Trigger type that fired (e.g.,
slack_bot.message)
Slack-specific:
- {{slack.channel.id}}: Slack channel ID
- {{slack.user.id}}: Slack user ID
- {{slack.team.id}}: Slack workspace ID
- {{slack.message.timestamp}}: Message timestamp
GitHub-specific:
- {{github.pull_request.number}}: PR number
- {{github.deployment.environment}}: Deployment environment
- {{github.release.tag}}: Release tag
Webhook-specific:
- Custom variables from the webhook payload's
variablesmap (e.g.,{{eventType}},{{serviceName}})
Use these when you need to reference the automation itself or track specific runs in external systems.
Troubleshooting
For common trigger issues, see:
- Automation Doesn't Trigger — Why automations don't fire when expected
- Variables Show as {{...}} — Why variables aren't resolving
- Missing Integration Warnings — Connect required integrations
Further Reading
- Write Prompts — Create effective instructions using variables
- Set Guardrails — Control what Agent0 can access
- Configure General Settings — Set up basic automation information
- Use Templates — Start with pre-built trigger configurations
