New to Kestra?
Use blueprints to kickstart your first workflows.
Run a Sifflet data quality rule right after your warehouse load with Kestra, then post the run status to Slack so bad data never goes unnoticed.
Most data quality checks run on their own schedule and hope the load finished first. When ingestion runs late, the rule evaluates yesterday's tables, passes, and everyone trusts numbers that were never actually checked. This blueprint removes the race: the ingestion step and the Sifflet rule run live in one Kestra execution, so io.kestra.plugin.sifflet.RunRule only fires once the data has landed, and Slack gets the run status with the execution ID.
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 query chain, keeping the rule run chained behind it.run_quality_rule (io.kestra.plugin.sifflet.RunRule) authenticates with the API key, targets your tenant through baseUrl, and calls Sifflet's rule run endpoint for the rule_id input.status, statusCode, ruleId, and the raw response as outputs; notify_team interpolates the status and HTTP code into a Slack message.errors block posts a distinct alert whether the load or the rule run failed, and the execution view shows which half broke.Schedule trigger runs the whole chain at 06:00 so data is loaded and checked before standup.Sifflet can schedule its own rule runs, but it cannot see your warehouse loads. Kestra sequences the two with explicit dependencies: the rule run starts only after the load succeeds, the run status becomes a flow output that feeds notifications, and failures page Slack instead of leaving unchecked data in production. The unchanged Sifflet rule just gets called at the right moment.
SIFFLET_API_KEY: Sifflet API bearer token used to run the rule.SIFFLET_BASE_URL: base URL of your Sifflet tenant API.SLACK_WEBHOOK_URL: Slack incoming webhook URL.SIFFLET_API_KEY, SIFFLET_BASE_URL, and SLACK_WEBHOOK_URL secrets to your Kestra namespace.rule_id input to a real Sifflet rule and execute the flow.load_warehouse with your real ingestion and enable the daily trigger.ForEach over rule IDs, as shown in the Sifflet rule pack fan-out blueprint.requestTimeout above its 30 second default if your tenant sits behind a slow gateway.