Slack SlackIncomingWebhook

Slack SlackIncomingWebhook

Certified

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.slack.notifications.SlackIncomingWebhook

Send a Slack message via incoming webhook with a text argument with 'messageText' (handles Slack markdown, no escaping needed)

yaml
id: slack_incoming_webhook
namespace: company.team

tasks:
  - id: send_slack_message
    type: io.kestra.plugin.slack.notifications.SlackIncomingWebhook
    url: "{{ secret('SLACK_WEBHOOK') }}"
    messageText: "Hello from the workflow {{ flow.id }}"

Send a Slack notification on a failed flow execution with payload.

yaml
id: unreliable_flow
namespace: company.team

tasks:
  - id: fail
    type: io.kestra.plugin.scripts.shell.Commands
    taskRunner:
      type: io.kestra.plugin.core.runner.Process
    commands:
      - exit 1

errors:
  - id: alert_on_failure
    type: io.kestra.plugin.slack.notifications.SlackIncomingWebhook
    url: "{{ secret('SLACK_WEBHOOK') }}" # https://hooks.slack.com/services/xzy/xyz/xyz
    messageText: "Failure alert for flow {{ flow.namespace }}.{{ flow.id }} with ID {{ execution.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.slack.notifications.SlackIncomingWebhook
    url: "{{ secret('SLACK_WEBHOOK') }}"
    payload: |
      {
        "blocks": [
          {
            "type": "header",
            "text": {
              "type": "plain_text",
              "text": "Workflow completed: {{ flow.id }}"
            }
          },
          {
            "type": "divider"
          },
          {
            "type": "section",
            "fields": [
              {
                "type": "mrkdwn",
                "text": "*Namespace:*\n{{ flow.namespace }}"
              },
              {
                "type": "mrkdwn",
                "text": "*Execution ID:*\n{{ execution.id }}"
              },
              {
                "type": "mrkdwn",
                "text": "*Status:*\n{{ execution.state }}"
              },
              {
                "type": "mrkdwn",
                "text": "*Start time:*\n{{ execution.startDate }}"
              }
            ]
          },
          {
            "type": "context",
            "elements": [
              {
                "type": "mrkdwn",
                "text": "Triggered by Kestra"
              }
            ]
          }
        ]
      }

Send a Slack message through an outbound HTTP proxy.

yaml
id: slack_via_proxy
namespace: company.team

tasks:
  - id: send_slack_message
    type: io.kestra.plugin.slack.notifications.SlackIncomingWebhook
    url: "{{ secret('SLACK_WEBHOOK') }}"
    messageText: "Hello from behind a proxy!"
    options:
      proxy:
        address: "10.10.10.254"
        port: 3128
        type: HTTP

Send a Slack message through an authenticated outbound HTTP proxy.

yaml
id: slack_via_authenticated_proxy
namespace: company.team

tasks:
  - id: send_slack_message
    type: io.kestra.plugin.slack.notifications.SlackIncomingWebhook
    url: "{{ secret('SLACK_WEBHOOK') }}"
    messageText: "Hello from behind an authenticated proxy!"
    options:
      proxy:
        address: "10.10.10.254"
        port: 3128
        type: HTTP
        username: "{{ secret('PROXY_USER') }}"
        password: "{{ secret('PROXY_PASSWORD') }}"

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.slack.notifications.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 length1

Slack incoming webhook URL

Check the Create an Incoming Webhook documentation for more details.

Assets this task consumes as inputs or produces as outputs, for lineage tracking and the asset graph (Enterprise Edition). A flow declaring this property on a task is rejected in the open-source edition.

Definitions
assetFailureBehaviorstring
Possible Values
IGNOREFAILWARN

Asset failure behavior

Behavior applied to the task state when a declared asset fails to render, emit, or be persisted (e.g. a lock conflict): FAIL escalates it to FAILED, WARN (default) warns it if it would otherwise succeed, IGNORE leaves the state untouched.

enableAutobooleanstring

Whether to auto-register assets referenced dynamically at runtime that are not statically declared in inputs or outputs.

inputsarray

The assets consumed as inputs.

id*string
Min length1
typestring
outputs

The assets produced as outputs.

id*string
Min length1
Max length150
type*object
descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
id*string
Min length1
Max length150
type*object
descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
id*string
Min length1
Max length150
type*object
descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
id*string
Min length1
Max length150
type*object
descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
id*string
Min length1
Max length150
type*object
descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
id*string
Min length1
Max length150
type*string
Min length1

Custom asset type

descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150

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

Definitions
connectTimeoutstring

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

connectionPoolIdleTimeoutstring
DefaultPT0S

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

defaultCharsetstring
DefaultUTF-8

The default charset for the request

headersobject

HTTP headers

HTTP headers to include in the request

maxContentLengthintegerstring
Default10485760

The maximum content length of the response

proxy

Proxy configuration

The proxy configuration used to route outbound HTTP requests. Useful when Kestra runs in a network that requires an outbound proxy to reach the internet.

addressstring

Proxy host

The hostname or IP address of the proxy server.

passwordstring

Proxy password

The password for proxy authentication (optional).

portintegerstring

Proxy port

The port of the proxy server.

typestring
DefaultHTTP
Possible Values
HTTPSOCKS

Proxy type

The type of proxy: HTTP or SOCKS.

usernamestring

Proxy username

The username for proxy authentication (optional).

readIdleTimeoutstring
DefaultPT5M

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

readTimeoutstring
DefaultPT10S

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

Slack message payload