New to Kestra?
Use blueprints to kickstart your first workflows.
Ingest Pipedrive CRM data into Google BigQuery using dlt and Kestra, with an hourly schedule, automatic schema management, and secret-based credentials.
Keep your Pipedrive CRM data continuously available in Google BigQuery for analytics, reporting, and downstream transformations. This blueprint extracts deals, contacts, activities, and related CRM objects from the Pipedrive API and loads them into BigQuery using dlt (the open source data load tool), with schema inference and evolution handled automatically. The whole pipeline runs on an hourly schedule, so your warehouse stays fresh without any manual exports or brittle glue scripts.
io.kestra.plugin.core.trigger.Schedule trigger named hourly fires the flow every hour using the @hourly cron expression.dlt_pipeline task of type io.kestra.plugin.scripts.python.Script runs on a Docker task runner (io.kestra.plugin.scripts.runner.docker.Docker) using the python:3.11 container image.beforeCommands install dlt with the BigQuery extra (pip install dlt[bigquery]) and scaffold the verified source with dlt --non-interactive init pipedrive bigquery.script builds a dlt pipeline targeting the pipedrive dataset in BigQuery and calls pipeline.run(pipedrive_source()) to extract, normalize, and load the data.dlt knows how to load data, but it does not schedule, monitor, or recover itself. Kestra adds the operational layer: event and schedule triggers, automatic retries on transient API or load failures, execution history and logs for lineage and debugging, and a fully declarative YAML definition you can version control. The hourly Schedule trigger replaces ad hoc cron jobs, and every run is observable from one place, which a standalone dlt script cannot provide.
Configure the following Kestra Secrets:
PIPEDRIVE_API_KEY: Pipedrive API token used by the dlt source.BIGQUERY_PROJECT_ID: target Google Cloud project ID.BIGQUERY_CLIENT_EMAIL: service account email for the BigQuery destination.BIGQUERY_PRIVATE_KEY: service account private key for the BigQuery destination.namespace from company.team as needed).hourly trigger enabled to keep BigQuery in sync.pipedrive_source() to load only the CRM objects you need.pipedrive dataset.