Run dbt Core with enterprise-grade orchestration.

Trigger dbt build on cron, after an Airbyte sync, or when a file lands in S3. Capture per-model test failures, retry only the failed step, replay any model from history, and chain Airbyte upstream and Hightouch downstream in one execution.

Blueprints for dbt Core orchestration.

Run dbt Core with a workflow engine that listens to cron, Airbyte completions, or S3 events, handles per-model retries with approval gates between staging and prod, and chains dbt with Airbyte, Hightouch, and the rest of your stack in one audited flow. West Bend Insurance estimates ~90% less Python glue code with an orchestrator around dbt.

Scheduled run with alerting Open blueprint
Production run with approval gate Open blueprint
Full data stack pipeline Open blueprint

Around every dbt build.

dbt Core solves transformation. Kestra solves everything around it: when it runs, what triggers it, what happens next, and who ran what and when.

Per-step retries and downstream coordination

dbt Core is a single step. It has no scheduler, no event triggers, and no awareness of the pipeline around it. Kestra treats dbt as one node in a flow: it retries only the failed step, passes outputs forward, and halts downstream tools until the data is confirmed ready.

Execution history with attribution

A model output changes. A test starts failing. A downstream dashboard shifts. With cron or GitHub Actions there is no easy answer to who ran what, against which data state. Kestra logs every execution with a trigger source, a timestamp, and the full test result. The record exists before you need it.

Per-model failure detail

When dbt test fails in CI, finding out which model failed and why means digging through log output. Kestra captures every model's output, test result, and failure in a single execution view: timestamped, attributed, and searchable without log archaeology.

How teams use dbt Core and Kestra

Patterns data engineering teams run in production today. Each one shows the flow end to end, with the real plugin classes in play.

Scheduled

Scheduled dbt run with alerting

Run dbt run and dbt test on a cron schedule. If any model or test fails, Kestra captures the failure context per model and routes it to Slack with the exact test name and assertion that failed. No one manually digs through CI logs to understand what broke.

Cron + interval schedules

Native scheduler with cron, fixed intervals, or condition-based triggers.

Per-model failure context

Slack / email routing with the failing test name and assertion attached.

Direct link to failed runs

Click straight to the failing model's execution view, no log archaeology.

cron trigger
on schedule
dbt run
all models
dbt test
validate output
alert
Slack / email
Governance

Approval gate before production

Run dbt against a staging target first. Pass the output to a named reviewer. Only promote to the production target after explicit approval. Full audit trail of who approved what and when. Stops the pipeline before the production run if staging tests fail.

Native pause + resume

Built-in Pause task suspends execution until a reviewer approves.

Reviewer + timestamp logged

Identity and approval moment stored in execution history automatically.

Stop on staging failure

Pipeline halts before the production run if any staging test fails.

Full audit trail

Every promotion linked to a reviewer and a moment in time, replayable.

dbt run (staging)
staging target
dbt test
validate
pause / review
human approves
dbt run (prod)
production target
audit log
who + when
Full pipeline

Full modern data stack pipeline

Ingest raw data with Airbyte, transform it with dbt, then sync results downstream with Hightouch. All three run as steps in a single Kestra flow. If dbt fails, Kestra retries only the dbt step without re-running the Airbyte sync. This is the exact pattern Gorgias runs in production.

Step-level retries

Retry only the failed step, no re-running of the ingestion.

Outputs flow forward

Pass artifacts and metadata between Airbyte, dbt, and Hightouch.

Shared execution context

One execution ID across all three tools. One place to debug.

Single audit history

Search every run by date, status, or trigger source from one UI.

trigger
on schedule
airbyte sync
ingest raw
dbt run
transform
dbt test
validate
hightouch sync
reverse ETL
Event-driven

Event-triggered dbt run

Trigger dbt when a new file lands in S3, when an Airbyte sync completes, or when an API webhook fires. No cron job, no polling script. Kestra fires the dbt pipeline the moment the data is ready, using native event triggers.

S3 / Kafka native triggers

File arrivals and message events as first-class triggers.

Webhook + API triggers

Fire dbt from any HTTP call, no glue service required.

Database change triggers

React to row inserts, updates, or schema changes.

Push-based, not polling

Workflows start the moment data is ready, not on the next interval.

S3 event
file arrival
dbt run
on trigger
dbt test
validate
notify
on complete
Operations

Selective model refresh

Run only the dbt models that need refreshing (by tag, path, or selector) rather than a full project rebuild. Pass the model selector as a flow input, so the same flow handles both nightly full runs and on-demand targeted refreshes triggered by specific upstream changes.

Flow inputs

Pass model selectors and target names as flow parameters at run time.

Same flow, two schedules

Nightly full builds and on-demand targeted refreshes share one YAML.

Tag / path / selector

Use any dbt selector syntax. Kestra forwards it unchanged.

trigger
on event or input
dbt run --select
model selector
dbt test --select
targeted tests
notify
on complete
Kestra has been a keystone to design complex execution flows while enhancing our Infrastructure as Code best practices. It now empowers our ingestion with Airbyte, transformation with dbt, and our Hightouch reverse-ETL jobs seamlessly!
Senior Data Engineer, Gorgias

Kestra vs dbt Core orchestration alternatives

Capability
dbt Cloud
GitHub Actions
Airflow
Scheduling
Native cron + events
Native job schedulingCron-based workflowsNative DAG scheduler
Approval gate before production run
Native pause + resume
No pause-and-resumeEnvironment approvalCustom sensor workaround
Automatic retry per step
Configurable per task
Job-level retry onlyJob re-run from startTask-level retry
Chain with upstream tools (Airbyte, Spark)
Native, with outputs
dbt onlyPossible, complexPossible, operator-dependent
Per-model failure visibility
Execution history + task state
In dbt Cloud UILogs in Actions UITask logs, no dbt detail
Self-service for non-engineers
Kestra Apps
Admin-controlled jobsNoNo
Orchestrate beyond dbt (full stack)
1300+ plugins
dbt onlyPossible, fragileYes, with Python operators

dbt Core & Kestra: common questions

Find answers to your questions right here, and don't hesitate to Contact Us if you couldn't find what you're looking for.

See How

Ready to orchestrate your dbt Core runs?

Schedule, chain, and visualize every dbt run across your full data stack. Open source, self-hosted, event-driven.