Zulip ZulipIncomingWebhook

Zulip ZulipIncomingWebhook

Certified

Post messages through Zulip incoming webhook

Renders the payload then POSTs it to a Zulip incoming webhook URL. Provide the full integration URL (includes API key) via a secret and adjust headers/timeouts through options. The task does not retry or raise on non-200 responses; monitor logs if delivery fails.

yaml
type: io.kestra.plugin.zulip.ZulipIncomingWebhook

Send a Zulip 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.zulip.ZulipIncomingWebhook
    url: "{{ secret('ZULIP_WEBHOOK') }}" # https://yourZulipDomain.zulipchat.com/api/v1/external/INTEGRATION_NAME?api_key=API_KEY
    payload: |
      {
        "text": "Failure alert for flow {{ flow.namespace }}.{{ flow.id }} with ID {{ execution.id }}"
      }

Send a Zulip message via incoming webhook with a text argument.

yaml
id: zulip_incoming_webhook
namespace: company.team

tasks:
  - id: send_zulip_message
    type: io.kestra.plugin.zulip.ZulipIncomingWebhook
    url: "{{ secret('ZULIP_WEBHOOK') }}" # https://yourZulipDomain.zulipchat.com/api/v1/external/INTEGRATION_NAME?api_key=API_KEY
    payload: |
      {
        "text": "Hello from the workflow {{ flow.id }}"
      }

Send a Zulip message via incoming webhook with a blocks argument, read more on blocks.

yaml
id: zulip_incoming_webhook
namespace: company.team

tasks:
  - id: send_zulip_message
    type: io.kestra.plugin.zulip.ZulipIncomingWebhook
    url: "{{ secret('ZULIP_WEBHOOK') }}" # format: https://yourZulipDomain.zulipchat.com/api/v1/external/INTEGRATION_NAME?api_key=API_KEY
    payload: |
      {
        "blocks": [
            {
                "type": "section",
                "text": {
                    "type": "mrkdwn",
                    "text": "Hello from the workflow *{{ flow.id }}*"
                }
            }
        ]
      }
Properties
Min length1

Zulip incoming webhook URL

Full incoming webhook URL (integration path and API key); render from a secret. See Incoming Webhook Integrations for formats.

HTTP client options

Tune headers, charsets, and timeouts used by the Zulip HTTP calls. Leave empty to use Kestra defaults.

Definitions
connectTimeoutstring

Connect timeout

Duration to open the TCP connection before failing.

connectionPoolIdleTimeoutstring
DefaultPT0S

Connection pool idle timeout

How long an idle pooled connection stays open before eviction; default 0s.

defaultCharsetstring
DefaultUTF-8

Default charset

Charset used when none is provided by the response; default UTF-8.

headersobject

HTTP headers

Extra headers merged into the request; values can be templated.

maxContentLengthintegerstring
Default10485760

Max response size

Maximum response body size in bytes; default 10 MB.

readIdleTimeoutstring
DefaultPT5M

Read idle timeout

Allowed idle time on an open read connection before closing; default 5 minutes.

readTimeoutstring
DefaultPT10S

Read timeout

Max time to read data before failing; default 10s.

Zulip message payload

Rendered JSON body sent as-is to the incoming webhook; follow Zulip payload schema for your integration.

Reference (ref) of the pluginDefaults to apply to this task.