
Zulip ZulipIncomingWebhook
CertifiedPost messages through Zulip incoming webhook
Zulip ZulipIncomingWebhook
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.
type: io.kestra.plugin.zulip.ZulipIncomingWebhookExamples
Send a Zulip 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.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.
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.
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
url *Requiredstring
1Zulip incoming webhook URL
Full incoming webhook URL (integration path and API key); render from a secret. See Incoming Webhook Integrations for formats.
options
HTTP client options
Tune headers, charsets, and timeouts used by the Zulip HTTP calls. Leave empty to use Kestra defaults.
io.kestra.plugin.zulip.AbstractZulipConnection-RequestOptions
Connect timeout
Duration to open the TCP connection before failing.
PT0SConnection pool idle timeout
How long an idle pooled connection stays open before eviction; default 0s.
UTF-8Default charset
Charset used when none is provided by the response; default UTF-8.
java.nio.charset.Charset
HTTP headers
Extra headers merged into the request; values can be templated.
10485760Max response size
Maximum response body size in bytes; default 10 MB.
PT5MRead idle timeout
Allowed idle time on an open read connection before closing; default 5 minutes.
PT10SRead timeout
Max time to read data before failing; default 10s.
payload string
Zulip message payload
Rendered JSON body sent as-is to the incoming webhook; follow Zulip payload schema for your integration.
pluginDefaultsRef Non-dynamicstring
Reference (ref) of the pluginDefaults to apply to this task.