New to Kestra?
Use blueprints to kickstart your first workflows.
Automate a daily HubSpot CRM to Google BigQuery sync with Kestra and CloudQuery. Extract contacts, deals, and companies for analytics with retries and rate limiting.
Keep your analytics warehouse in lockstep with your CRM by replicating HubSpot objects (contacts, companies, deals, tickets, and more) into Google BigQuery every day. This blueprint uses CloudQuery to extract every HubSpot table and load it into a BigQuery dataset, so revenue, marketing, and operations teams query fresh CRM data instead of waiting on manual exports or brittle one-off scripts. It solves the classic problem of CRM data being trapped behind an API: no warehouse, no SQL, no joins with product or billing data.
schedule trigger (io.kestra.plugin.core.trigger.Schedule) fires the flow daily at 6:00 AM via the cron expression 0 6 * * *.sync task (io.kestra.plugin.cloudquery.Sync) runs CloudQuery with a source config for HubSpot and a destination config for BigQuery.HUBSPOT_APP_TOKEN environment variable, BigQuery with a GCP service account written to sa.json and referenced through GOOGLE_APPLICATION_CREDENTIALS.tables: ["*"]) and throttles to max_requests_per_second: 5 to stay within HubSpot API limits.project_id: kestra-prd, dataset_id: hubspot in append mode.CloudQuery syncs data but has no scheduler, retry logic, alerting, or lineage of its own. Kestra adds event and schedule triggers, automatic retries on transient API failures, execution history, and full observability of every run, all defined in declarative YAML and versioned in Git. You can chain this sync into downstream dbt transformations or notifications, something a standalone CLI cannot coordinate.
hubspot in project kestra-prd).HUBSPOT_API_TOKEN: HubSpot private app token, passed to HUBSPOT_APP_TOKEN.GCP_SERVICE_ACCOUNT: GCP service account JSON, written to sa.json.CLOUDQUERY_API_KEY: CloudQuery API key for premium plugins.project_id and dataset_id in the BigQuery destination to your own.cron value if you need a different sync cadence.hubspot dataset in BigQuery.tables list to sync only the HubSpot objects you need.write_mode from append to overwrite for full refreshes.