New to Kestra?
Use blueprints to kickstart your first workflows.
Run a Hex project right after your warehouse load with Kestra. The flow waits for the notebook, then posts status and run URL to Slack.
Most Hex notebooks refresh on a timer and hope the warehouse loaded first. When the load runs late, the notebook recomputes on stale tables and publishes yesterday's numbers with today's date. This blueprint removes the guess: the ingestion step and the Hex refresh live in one Kestra execution, so io.kestra.plugin.hex.projects.Run only starts once the data has actually landed, waits for the notebook to finish, and Slack gets the run status with a direct link.
load_warehouse stands in for your ingestion. It is a plain Log task here so the flow runs anywhere; in production you replace it with a real load such as the dlt REST API to DuckDB blueprint or a Trino batch, keeping the refresh chained behind it.refresh_notebook (io.kestra.plugin.hex.projects.Run) calls the Hex API with the project ID, polls every ten seconds, and blocks until the run reaches a terminal state because wait is true.status, runUrl, runId, projectVersion, and timing attributes as outputs; notify_team interpolates the status and the run URL into a Slack message.errors block posts a distinct alert whether the load or the notebook run failed, and the execution view shows which half broke.Schedule trigger runs the whole chain at 05:30 so numbers are fresh before standup.Hex can schedule its own refreshes, but it cannot see your warehouse loads. Kestra sequences the two with explicit dependencies: the refresh starts only after the load succeeds, wait: true turns the notebook run into a real pipeline step with a status, and failures page Slack instead of leaving a stale dashboard up silently. The unchanged Hex project just gets called at the right moment.
HEX_API_TOKEN: Hex API token used to run the project.SLACK_WEBHOOK_URL: Slack incoming webhook URL.HEX_API_TOKEN and SLACK_WEBHOOK_URL secrets to your Kestra namespace.project_id input to a real Hex project and execute the flow.load_warehouse with your real ingestion and enable the daily trigger.inputParams to the Run task to point the notebook at the dataset or date the load just produced.Loop over project IDs, as shown in the parameterized regional reports blueprint.maxDuration to page when the notebook runs long, as shown in the notebook SLA guard blueprint.