Send a Slack message using an Incoming Webhook.
Add this task to send direct Slack notifications. Check the Slack documentation for more details.
type: "io.kestra.plugin.notifications.slack.slackincomingwebhook"
Send a Slack notification on a failed flow execution.
id: unreliable_flow
namespace: company.team
tasks:
- id: fail
type: io.kestra.plugin.scripts.shell.Commands
runner: PROCESS
commands:
- exit 1
errors:
- id: alert_on_failure
type: io.kestra.plugin.notifications.slack.SlackIncomingWebhook
url: "{{ secret('SLACK_WEBHOOK') }}" # https://hooks.slack.com/services/xzy/xyz/xyz
payload: |
{
"text": "Failure alert for flow {{ flow.namespace }}.{{ flow.id }} with ID {{ execution.id }}"
}
Send a Slack message via incoming webhook with a text argument.
id: slack_incoming_webhook
namespace: company.team
tasks:
- id: send_slack_message
type: io.kestra.plugin.notifications.slack.SlackIncomingWebhook
url: "{{ secret('SLACK_WEBHOOK') }}"
payload: |
{
"text": "Hello from the workflow {{ flow.id }}"
}
Send a Slack message via incoming webhook with a blocks argument, read more on blocks here.
id: slack_incoming_webhook
namespace: company.team
tasks:
- id: send_slack_message
type: io.kestra.plugin.notifications.slack.SlackIncomingWebhook
url: "{{ secret('SLACK_WEBHOOK') }}"
payload: |
{
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "Hello from the workflow *{{ flow.id }}*"
}
}
]
}
Send a Slack message with 'messageText' (handles Slack markdown, no escaping needed)
id: slack_incoming_webhook
namespace: company.team
inputs:
- id: prompt
type: STRING
defaults: Summarize top 5 news from my region.
tasks:
- id: news
type: io.kestra.plugin.openai.Responses
apiKey: "{{ kv('OPENAI_API_KEY') }}"
model: gpt-4.1-mini
input: "{{ inputs.prompt }}"
toolChoice: REQUIRED
tools:
- type: web_search_preview
search_context_size: low
user_location:
type: approximate
city: Berlin
region: Berlin
country: DE
- id: send_via_slack
type: io.kestra.plugin.notifications.slack.SlackIncomingWebhook
url: https://kestra.io/api/mock
messageText: "Current news from Berlin: {{ outputs.news.outputText }}"
Send a Rocket Chat message via Slack incoming webhook.
id: rocket_chat_notification
namespace: company.team
tasks:
- id: send_rocket_chat_message
type: io.kestra.plugin.notifications.slack.SlackIncomingWebhook
url: "{{ secret('ROCKET_CHAT_WEBHOOK') }}"
payload: |
{
"alias": "Kestra TEST",
"avatar": "https://avatars.githubusercontent.com/u/59033362?s=48",
"emoji": ":smirk:",
"roomId": "#my-channel",
"text": "Sample",
"tmshow": true,
"attachments": [
{
"collapsed": false,
"color": "#ff0000",
"text": "Yay!",
"title": "Attachment Example",
"title_link": "https://rocket.chat",
"title_link_download": false,
"fields": [
{
"short": false,
"title": "Test title",
"value": "Test value"
},
{
"short": true,
"title": "Test title",
"value": "Test value"
}
]
}
]
}
1
Slack incoming webhook URL
Check the Create an Incoming Webhook documentation for more details.
Message Text or JSON String
The message content as a raw string. It can be plain text with markdown, or a JSON object. If not a valid JSON object, it is automatically wrapped in {"text": "..."}
. This property is ignored if the payload
property is set.
Options
The options to set to customize the HTTP client
Slack message payload
duration
The time allowed to establish a connection to the server before failing.
PT0S
duration
The time an idle connection can remain in the client's connection pool before being closed.
UTF-8
The default charset for the request.
HTTP headers
HTTP headers to include in the request
10485760
The maximum content length of the response.
PT5M
duration
The time allowed for a read connection to remain idle before closing it.
PT10S
duration
The maximum time allowed for reading data from the server before failing.