New to Kestra?
Use blueprints to kickstart your first workflows.
Schedule a Snowflake query, render the metrics as Markdown, and publish an editable Slack Canvas your team can annotate, all orchestrated in Kestra.
Turn a daily Snowflake query into a living, editable team document. This blueprint reads your headline metrics from Snowflake, formats them into clean Markdown, and publishes a Slack Canvas that your team can read and annotate, instead of a transient chat message that scrolls out of sight. It solves the recurring problem of stale, copy-pasted dashboards and metric snapshots that nobody can update in place.
io.kestra.plugin.core.trigger.Schedule trigger (daily_digest, cron 0 7 * * *, shipped disabled: true) fires the flow each morning.query_metrics task (io.kestra.plugin.jdbc.snowflake.Query) runs your SQL against Snowflake using the snowflake_url input with fetchType: FETCH, returning the metric rows.format_markdown task (io.kestra.plugin.scripts.python.Script, running on the Docker task runner with the python:3.11-slim image) reads the rows and renders a Markdown digest, exposed via Kestra.outputs.publish_canvas task (io.kestra.plugin.slack.app.canvases.Create) creates an editable Slack Canvas titled with the execution date and the rendered Markdown content.execution.startDate, so each run is traceable.Snowflake tasks and Slack scopes can each do their part, but neither owns the end-to-end flow. Kestra wires them together with an event-driven Schedule trigger, automatic retries on transient failures, full execution lineage across the query, transform, and publish steps, and a single declarative YAML definition. The Snowflake scheduler can run SQL, but it cannot transform results in Python and push an editable Canvas into Slack on the same cadence. Kestra fills that gap.
daily_metrics) holding the metrics to publish.SNOWFLAKE_USERNAME: Snowflake user.SNOWFLAKE_PASSWORD: Snowflake password.SLACK_TOKEN: Slack token with the canvases:write scope.SNOWFLAKE_USERNAME, SNOWFLAKE_PASSWORD, and SLACK_TOKEN in your Kestra namespace.snowflake_url input at your account, warehouse, and database.query_metrics and the Markdown formatting in format_markdown to match your metrics.daily_digest trigger (remove disabled: true) or run the flow manually.errors task to alert on failed runs.