Notifications
Get alerted when jobs succeed, fail, or complete via webhook, email, Slack, Discord, or Telegram.
TrigRun can notify you when job executions succeed, fail, complete, or require approval — and when monitors go down or recover. Notifications are configured in two steps: create a channel (where to send), then attach a rule to a job or monitor (when to send).
All sensitive credentials (webhook URLs, bot tokens) are encrypted at rest and never exposed in API responses.
Channel types
| Type | Description | Credentials stored |
|---|---|---|
webhook | POST JSON to any URL with optional HMAC signing | URL in config, signing secret encrypted |
email | HTML email via Resend | Email address in config |
slack | Rich messages with blocks to a Slack channel | Webhook URL encrypted |
discord | Embeds to a Discord channel | Webhook URL encrypted |
telegram | HTML messages to a Telegram chat or group | Bot token encrypted, chat ID in config |
Slack setup
- Go to your Slack workspace settings: Apps → Manage → Custom Integrations → Incoming Webhooks (or create a new Slack app with an incoming webhook).
- Choose the channel you want alerts posted to.
- Copy the webhook URL (starts with
https://hooks.slack.com/services/...). - Create the channel in TrigRun — the webhook URL is stored encrypted and never shown again:
Config options:
| Field | Required | Description |
|---|---|---|
webhook_url | Yes | Slack incoming webhook URL |
mention_text | No | Text prepended to messages, e.g. @channel or @here |
include_output | No | Include response body preview in messages (default: false) |
Messages are sent with both a plaintext fallback and rich blocks showing the event, status, and timestamp.
Discord setup
- In your Discord server, go to Server Settings → Integrations → Webhooks.
- Click New Webhook, choose a channel, and copy the webhook URL.
- Create the channel in TrigRun:
Config options:
| Field | Required | Description |
|---|---|---|
webhook_url | Yes | Discord webhook URL |
thread_id | No | Post to a specific thread in a forum channel |
mention_role_ids | No | Array of role IDs to mention (e.g. ["123456"]) |
include_output | No | Include response body preview in embeds (default: false) |
Messages use Discord embeds with color-coded status (green for success/recovery, red for failure/down).
Telegram setup
- Open Telegram and message @BotFather.
- Send
/newbot, follow the prompts, and copy the bot token (format:123456:ABC-DEF...). - Send a message to your bot (or add it to a group/channel) so it has permission to send messages.
- Get your chat ID:
- For personal chats: message @userinfobot to get your numeric ID.
- For groups: add @RawDataBot to the group, it will show the chat ID (negative number like
-1001234567890).
- Create the channel in TrigRun:
Config options:
| Field | Required | Description |
|---|---|---|
bot_token | Yes | Bot token from BotFather (stored encrypted) |
chat_id | Yes | Numeric chat ID as string (negative for groups) |
message_thread_id | No | Thread ID for forum topic groups |
disable_web_page_preview | No | Disable link previews in messages (default: true) |
include_output | No | Include response body preview (default: false) |
Messages are sent as HTML with bold titles and formatted status lines.
Webhook setup
POST JSON payloads to any HTTP endpoint. Optionally sign payloads with HMAC-SHA256.
Config options:
| Field | Required | Description |
|---|---|---|
url | Yes | Endpoint URL (must be public, not private/loopback) |
signing_secret | No | HMAC-SHA256 signing key (stored encrypted). Signature sent in X-Webhook-Signature: sha256=<hex> header. |
Webhook payload format (execution events):
Webhook payload format (monitor events):
Verifying signatures:
Email setup
Emails are sent as styled HTML with status-colored headers and a summary table.
Testing a channel
After creating a channel, verify it works by sending a test notification:
The test sends a synthetic success payload through the full delivery pipeline (secret resolution, rendering, provider send) without creating a delivery record. Response:
Or on failure:
You can also test from the dashboard — each channel row has a Test button.
Notification events
| Event | Fires when |
|---|---|
on_success | An execution completes with a success status |
on_failure | An execution exhausts all retry attempts and fails |
on_completion | An execution finishes, regardless of outcome |
on_approval_required | A workflow pauses at an approval step |
on_down | A monitor misses its expected ping window |
on_recovery | A monitor receives a ping after being down |
Attaching rules to jobs
A rule connects a channel to a job for a specific event:
You can attach multiple rules to the same job — for example, send failures to Slack, all completions to a webhook, and approval requests to email or Telegram.
Approval-required payloads
When a workflow pauses at an approval step, TrigRun emits approval.required with the approval links included in the payload.
Attaching rules to monitors
Listing and removing rules
Delivery tracking
Every notification sent is tracked as a delivery with retry status.
Delivery statuses
| Status | Meaning |
|---|---|
pending | Queued, waiting to be sent |
processing | Currently being sent |
sent | Successfully delivered |
failed | All delivery attempts exhausted or permanent provider error |
Retry behavior
- Transient failures (5xx, timeouts, network errors) are retried with exponential backoff up to 5 attempts.
- Provider rate limits (429) are respected — the retry delay uses the
Retry-Afterheader when present. - Permanent failures (400, 403, 404 depending on provider) are marked failed immediately without retrying.
- Missing or deleted secrets are treated as permanent failures.
Limits
- Maximum 25 notification channels per workspace.
- Secrets referenced by channels cannot be deleted (returns 409). Delete the channel first.