SlackIncomingWebhook​Slack​Incoming​Webhook

Send a Slack message using an Incoming Webhook.

Add this task to send direct Slack notifications. Check the Slack documentation for more details.

yaml
type: "io.kestra.plugin.notifications.slack.SlackIncomingWebhook"

Send a Slack notification on a failed flow execution.

yaml
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.

yaml
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.

yaml
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)

yaml
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.

yaml
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"
              }
            ]
          }
        ]
      }
Properties
Min length 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

Format duration

The time allowed to establish a connection to the server before failing.

Default PT0S
Format duration

The time an idle connection can remain in the client's connection pool before being closed.

Default UTF-8

The default charset for the request.

SubType string

HTTP headers

HTTP headers to include in the request

Default 10485760

The maximum content length of the response.

Default PT5M
Format duration

The time allowed for a read connection to remain idle before closing it.

Default PT10S
Format duration

The maximum time allowed for reading data from the server before failing.