Parallel icon
Sync icon
TriggerRun icon

Build an ETL Pipeline with Airbyte Cloud and dbt Cloud for SaaS Analytics

Orchestrate parallel Airbyte Cloud syncs and a dbt Cloud transformation job with Kestra to keep your warehouse fresh and analytics-ready.

Categories
Data

Combine Airbyte Cloud ingestion and dbt Cloud transformations into one orchestrated ELT pipeline. This blueprint extracts data from multiple SaaS sources in parallel, lands it in your warehouse, and then runs a dbt Cloud job to model it into analytics-ready tables. It solves the classic timing problem in the modern data stack: making sure transformations only run after every source has finished loading, so your dashboards never read half-loaded data.

How it works

  1. A data_ingestion task of type io.kestra.plugin.core.flow.Parallel launches three Airbyte Cloud syncs concurrently: salesforce, google_analytics, and facebook_ads, each an io.kestra.plugin.airbyte.cloud.jobs.Sync task identified by its connectionId.
  2. The shared Airbyte token is injected once through pluginDefaults for all Sync tasks, keeping the credential in a single place.
  3. Once all three syncs complete, the dbt_cloud_job task of type io.kestra.plugin.dbt.cloud.TriggerRun triggers dbt Cloud job 396284 with wait: true, so Kestra blocks until the transformation run finishes and reports its real status.

What you get

  • Parallel ingestion that shortens the load window versus running syncs one by one.
  • A hard dependency between extraction and transformation: dbt only runs on fresh, complete data.
  • End-to-end visibility of both ingestion and modeling in a single execution.
  • A wait: true dbt run, so downstream tasks and alerts react to the real outcome.

Who it's for

  • Analytics engineers maintaining dbt models on top of SaaS data.
  • Data platform teams running a modern ELT stack.
  • Teams who need ingestion and transformation coordinated rather than scheduled independently.

Why orchestrate this with Kestra

Airbyte Cloud and dbt Cloud each have their own scheduler, but neither can coordinate the other. The gap is cross-tool dependency: dbt Cloud cannot know that all three Airbyte syncs have finished. Kestra closes that gap with declarative YAML, event triggers, automatic retries, and full execution lineage across both tools, so the transformation always fires after ingestion and failures surface in one place.

Prerequisites

  • An Airbyte Cloud workspace with configured connections.
  • A dbt Cloud account with a transformation job.

Secrets

  • AIRBYTE_CLOUD_API_TOKEN: API token for Airbyte Cloud syncs.
  • DBT_CLOUD_ACCOUNT_ID: your dbt Cloud account ID.
  • DBT_CLOUD_API_TOKEN: API token for dbt Cloud.

Quick start

  1. Add AIRBYTE_CLOUD_API_TOKEN, DBT_CLOUD_ACCOUNT_ID, and DBT_CLOUD_API_TOKEN as secrets.
  2. Replace the three connectionId values with those from your Airbyte Cloud workspace.
  3. Replace jobId: "396284" with the dbt Cloud job that transforms your ingested data.
  4. Execute the flow and confirm both ingestion and the dbt run succeed.

How to extend

  • Add more Sync tasks inside the Parallel block for additional SaaS sources.
  • Add a schedule or flow trigger so the pipeline runs automatically.
  • Add alerting on failure, or branch into data quality checks before the dbt run.
  • Split modeling into staged dbt Cloud jobs for layered transformations.

Links

See How

New to Kestra?

Use blueprints to kickstart your first workflows.