New to Kestra?
Use blueprints to kickstart your first workflows.
Fire a Kestra flow the moment a Hex project run completes. The trigger polls every minute, dedupes on run ID, and Slack gets the run URL and version.
Analysts hit refresh in Hex all day; the people consuming their numbers find out by accident. This blueprint inverts that: io.kestra.plugin.hex.projects.Trigger polls the project's most recent run every minute, deduplicates on the run ID so each completed run fires exactly once, and the flow announces to Slack that fresh numbers exist, with the run URL, project version, status, and elapsed time carried directly in the trigger outputs. Whoever refreshed the notebook, on whatever schedule or whim, the consumers hear about it within a minute.
on_run_completed (io.kestra.plugin.hex.projects.Trigger, disabled by default) polls the Hex API every minute for the project's latest run and fires when it reaches completed status.runId, runUrl, status, projectVersion, startTime, endTime, and elapsedTime as scalar outputs, available under {{ trigger.* }} in every task.announce_fresh_numbers interpolates those outputs into a Slack message with a direct link to the run.errors block alerts a Discord platform channel if the reaction itself fails, so a completed run never goes unannounced without anyone knowing.Hex knows when its runs complete but has no opinion about what should happen next in the rest of your stack. Kestra turns each completion into an event with typed outputs: this flow posts to Slack, but the same trigger can start an export, kick a downstream pipeline, or update a status page. The polling, deduplication, and retry logic live in the trigger, not in a cron script you maintain.
HEX_API_TOKEN: Hex API token used to poll the project's runs.SLACK_WEBHOOK_URL: Slack incoming webhook URL.DISCORD_WEBHOOK_URL: Discord incoming webhook URL.HEX_API_TOKEN, SLACK_WEBHOOK_URL, and DISCORD_WEBHOOK_URL secrets to your Kestra namespace.projectId to a real project and flip disabled to false.interval for projects that publish a few times a day, to reduce API polling.{{ trigger.projectVersion }} or the time of day.