- HubSpot stores valuable CRM, marketing, sales, and customer engagement data, but advanced reporting often requires moving that data into a warehouse like BigQuery.
- There are three common ways to connect HubSpot to BigQuery:
- Method 1: No-code ELT platforms like Hevo
- Method 2: HubSpot Private Apps and APIs
- Method 3: Native HubSpot BigQuery Connector
- Hevo is the fastest option for automated, production-grade pipelines with minimal maintenance.
- HubSpot APIs offer flexibility and customization, but require engineering effort, authentication management, and ongoing maintenance.
- HubSpot’s built-in App Marketplace integration syncs contacts, companies, deals, and custom objects directly into BigQuery, but is less suitable for real-time data needs.
- The right method depends on your data volume, sync frequency requirements, and how much engineering effort your team can invest. For most teams running active sales and marketing operations, a managed ELT pipeline is the most reliable long-term choice.
HubSpot is where your sales and marketing data lives. BigQuery lets you connect that data.
HubSpot reached 288,706 paying customers by the end of 2025 (HubSpot Q4 2025 Results), making it one of the most widely adopted CRM platforms in the world. For most of those teams, HubSpot handles the front-end work well, like contact management, deal tracking, email campaigns, and pipeline reporting. The problem starts the moment you need to go deeper.
HubSpot’s built-in reporting has hard limits. It does not let you join CRM data with paid media spend, product usage, or support history. It does not support SQL. And it does not scale well for teams running complex attribution models or multi-source dashboards. The answer is to move that data into a data warehouse where your team can query it freely, model it with dbt, and feed it into every downstream tool that depends on it.
A data engineer on a popular analytics forum put it plainly: most teams use HubSpot for day-to-day CRM operations, but rely on BigQuery for anything that requires cross-source analysis or historical depth.
This post covers three practical methods to load HubSpot data into BigQuery, each with a different trade-off between setup complexity, maintenance burden, and flexibility.
If you are not on Data Hub Enterprise, the native connector is not an option. Hevo connects HubSpot to BigQuery, and 150+ other destinations
- Supports all major warehouses, not just BigQuery
- Works on any HubSpot plan, not just Data Hub Enterprise
- Real-time incremental syncs, not once-a-day batch loads
- Full pipeline visibility with row-level logs and alerts
Trusted by 2,000+ data teams. Rated 4.4/5 on G2.
Table of Contents
Prerequisites for Migrating Data from HubSpot to BigQuery
The prerequisites you need depend on which method you choose. Here is what applies across all three:
- A HubSpot account with admin access
- A Google Cloud project with billing enabled
- BigQuery Admin permissions on your Google Cloud project
- The Google Analytics Data API enabled on your project
- The Google Cloud CLI installed and connected to your project (required for Methods 2 and 3 only)
Method 1 additionally requires a Data Hub Enterprise subscription on HubSpot. Methods 2 and 3 work on any HubSpot plan.
Easily transfer your HubSpot data to BigQuery with Hevo’s intuitive platform. Our no-code solution makes data integration and migration seamless and efficient.
Why choose Hevo?
- Auto-Schema Mapping: Automatically handle schema mapping for a smooth data transfer.
- Flexible Transformations: Utilize drag-and-drop tools or custom Python scripts to prepare your data.
- Real-Time Sync: Ensure your BigQuery warehouse is always up-to-date with real-time data ingestion.
Join over 2000 satisfied customers, including companies like FairMoney and Pelago, who trust Hevo for their data integration needs. Check out why Hevo is rated 4.7 stars on Capterra.
Get Started with Hevo for FreeMethods to move data from HubSpot to BigQuery
There are three common approaches for loading HubSpot data into BigQuery. Each method balances automation, flexibility, engineering effort, and scalability differently.
Some teams simply need periodic exports for reporting. Others need near real-time pipelines supporting attribution analysis, sales forecasting, and multi-source customer analytics.
Here is a quick comparison before we dive into each method.
| Method | Best For | Engineering Required | Sync Frequency | HubSpot Plan Required |
| Native BigQuery Connector | Teams on Data Hub Enterprise who want a no-code, Google-native setup | None | Daily | Data Hub Enterprise |
| Hevo Data | Teams needing multi-destination support, incremental syncs, and zero maintenance | None | Real-time / custom | Any |
| HubSpot Private App API | Engineering teams needing full extraction control and custom schemas | High | Custom (cron) | Any |
Method 1: Native Integration: HubSpot to BigQuery
HubSpot’s native BigQuery connector, available through the HubSpot App Marketplace, lets you sync HubSpot objects directly into BigQuery without any ETL tooling or code. It is the lowest-friction path for teams already on Data Hub Enterprise.
Two things to know before starting:
- This feature is currently in Beta. Functionality and availability may change.
- It requires a Data Hub Enterprise subscription. If you are on a lower HubSpot plan, skip to Method 2 or Method 3.
- Data sync runs daily at 0600 UTC. There is no real-time or streaming option with the native connector.
- HubSpot does not share HIPAA-regulated data to BigQuery via this integration.
What data syncs
The native connector supports the following HubSpot data types:
- Objects (contacts, companies, deals, tickets, and custom objects)
- Records and record associations
- Events (standard HubSpot events and custom behavioral events)
- Segments, owners, pipelines, pipeline stages, and property definitions
Step 1: Opt Into the Beta and Install the Connector
Open your HubSpot account settings and opt into the beta feature labelled Access HubSpot data in Google BigQuery. Instructions for opting in are in HubSpot’s beta access guide.
Once opted in:
- Navigate to the BigQuery app listing and select your HubSpot account.
- Click Install.
- Enter your Bucket URI and Project ID from your Google Cloud project.
- Click Next.
- Note the Google Service Account and BigQuery Account values shown on the next screen — you will need both in the following steps.
Step 2: Create a Custom IAM Role in Google Cloud
- Log into the Google Cloud Console.
- Go to IAM & Admin > Roles and click Create Role.
- Enter a title, optional description, and ID for the role.
- Click Add Permissions and add the following:
| bigquery.datasets.create bigquery.datasets.get bigquery.datasets.getIamPolicy bigquery.jobs.create bigquery.tables.create bigquery.tables.update bigquery.tables.get bigquery.tables.delete storage.buckets.get storage.objects.create storage.objects.delete storage.objects.get storage.objects.list |
- Click Create.
Step 3: Grant the Google Service Account Access to Cloud Storage
- In the Cloud Console, go to Cloud Storage > Buckets and select your bucket.
- Click the Permissions tab, then Grant Access.
- In the New Principals field, enter the Google Service Account name from Step 1.
- Under Assign Roles, select Custom > [the role you created in Step 2].
- Click Save.
Step 4: Grant the HubSpot BigQuery Account Table Permissions
- Go to IAM & Admin > IAM and click Grant Access.
- In the New Principals field, enter the HubSpot-generated Google BigQuery Account from Step 1.
- Under Assign Roles, select Custom > [the role you created in Step 2].
- Click Save.
Step 5: Complete Setup in HubSpot
- Return to your HubSpot account and click Continue to Connected Apps.
- In the dialog box, select all checkboxes and click Allow and Install.
Your first sync will run at the next scheduled window (0600 UTC). Once it completes, your HubSpot data will appear in BigQuery in Parquet-format tables organised by object type — for example, OBJECTS_CONTACTS, OBJECTS_DEALS, and EVENTS_[event name]. The last seven daily syncs are retained in your Google Cloud storage bucket.
Limitations of the Native Connector
- Data Hub Enterprise only: Not available on Starter, Professional, or lower-tier plans.
- Daily sync only: No real-time or streaming option. Data is always at least 24 hours old.
- Beta status: The feature is not yet generally available. Behaviour and schema may change without notice.
- BigQuery only: No support for Snowflake, Redshift, or other warehouses.
No HIPAA data: Regulated data is excluded from the sync regardless of your configuration.
Method 2 – Connect HubSpot to BigQuery with Hevo
The native connector in Method 1 works if you are on Data Hub Enterprise and BigQuery is your only destination. If you are on a lower HubSpot plan, need real-time syncs, or want your HubSpot data in Snowflake, Redshift, or Databricks alongside BigQuery, Hevo is the faster path.
Hevo is a no-code ELT platform that connects HubSpot to BigQuery in under five minutes. It works on any HubSpot plan, syncs on a configurable schedule from 30 minutes to 24 hours, handles schema changes automatically, and gives you full pipeline visibility through a unified dashboard. No scripts. No IAM configuration. No infrastructure to manage.
Over 2,000 data teams use Hevo, and it holds a 4.7-star rating on Capterra across verified reviews. Companies like FairMoney and Pelago use it to keep their HubSpot data flowing reliably into their warehouses without engineering overhead.
For a broader look at how BigQuery ETL pipelines work in practice, our guide can be a useful reference.
Step 1: Configure HubSpot as the Source
In Hevo, click PIPELINES in the navigation bar, then click + CREATE PIPELINE in the Pipelines List View.
On the Select Source Type page, choose HubSpot.
On the Configure your HubSpot Account page, do one of the following:
- Use an existing account: Select a previously configured HubSpot account and click CONTINUE.
- Add a new account: Click + ADD HUBSPOT ACCOUNT, log in to your HubSpot account, select the HubSpot account whose data you want to sync, and click Allow to authorise Hevo Data Inc to access your data.
On the Configure your HubSpot Source page, fill in the following:
- Pipeline Name: A unique name, up to 255 characters.
- Authorised Account: Auto-filled with your HubSpot email. Not editable.
- HubSpot API Version: Choose the API version for ingestion. Default is API v3.
- Historical Sync Duration: How far back Hevo should pull existing data. Default is 3 months. Select All Available Data to ingest everything from January 1, 1970 onward. This setting cannot be changed after the pipeline is created.
Click TEST AND CONTINUE.
Step 2: Configure BigQuery as the Destination
Click DESTINATIONS in the navigation bar, then click + CREATE DESTINATION.
On the Add Destination page, select Google BigQuery as the destination type.
On the Configure your Google BigQuery Destination page, fill in the following:
- Destination Name: A unique name, up to 255 characters.
- Account: Choose how you want to connect. You can use a Google OAuth account or upload a Service Account Key JSON file from GCP. Once the pipeline is created, you cannot switch account types.
- Project ID: The BigQuery project where your HubSpot data will land.
- Dataset: Let Hevo create one automatically, or select an existing dataset from your BigQuery project.
- GCS Bucket: Let Hevo create a staging bucket, or select an existing one. The bucket must be in the same region as your BigQuery dataset.
- Advanced Settings:
- Populate Loaded Timestamp: Enable to add a ___hevo_loaded_at column to every table, showing when each record was loaded into BigQuery.
- Sanitise Table and Column Names: Enable to replace non-alphanumeric characters with underscores for cleaner, more queryable table names.
Click TEST CONNECTION, then SAVE AND CONTINUE.
Step 3: Set Pipeline Frequency and Go Live
Once your source and destination are configured, set your pipeline sync frequency. Hevo’s HubSpot connector has a default pipeline frequency of one hour. You can set a minimum frequency of 30 minutes and a maximum of 24 hours, with custom frequencies available in whole-hour increments between 1 and 24 hours.
For most teams running active sales and marketing operations, an hourly sync is the right balance between data freshness and API quota consumption.
Click CREATE PIPELINE. Hevo immediately begins ingesting your HubSpot data and loading it into BigQuery. The first run pulls all historical data based on the sync duration you set. Every subsequent run is incremental, only new or updated records are transferred.
From this point, the pipeline runs automatically. If your HubSpot schema changes, like a new custom property, or a renamed field, Hevo detects the change and updates the destination schema without breaking the pipeline or requiring manual intervention.
Your HubSpot data is now in BigQuery. Next step: run your first BigQuery analysis or explore BigQuery date functions to start building time-series reports on your CRM data.
Hevo connects to 150+ sources, including Salesforce, Google Ads, and Stripe.
Method 3: Connect HubSpot to BigQuery Using the HubSpot Private App
The Private App API gives your engineering team direct, programmatic access to HubSpot CRM data. You control which objects to extract, how to transform them, and when to load them. It works on any HubSpot plan and supports any destination — but it requires code, a cron schedule, and ongoing maintenance.
This method suits teams that already have data engineering infrastructure in place and need extraction logic that a managed connector does not support. For teams evaluating the broader BigQuery ETL tools landscape before committing to a manual build, that guide is worth reading first.
Step 1: Create a Private App
Go to the Settings of your HubSpot account and select Integrations > Private Apps. Click Create a Private App.
On the Basic Info page, enter your app name or generate a random one, and upload a logo by hovering over the placeholder. You can also provide a description — a relevant one is recommended.
Click the Scopes tab next to the Basic Info button to configure permissions for Read, Write, or both. For example, if you only want to transfer contact information into BigQuery, select only the Read configuration.
Note: if you access sensitive data, HubSpot will display a warning message on this screen.
Once permissions are configured, click Create App at the top right, then Continue Creating. A prompt screen with your Access Token will appear.
Click Show Token and copy your token. Keep it accessible — you will need it in the next step. Your Client Secret is not required.
Step 2: Extract HubSpot Data via API Call
Use curl or Axios (Node.js) to call the HubSpot CRM endpoint:
Add the following headers to authenticate your request:
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
Replace YOUR_TOKEN with the access token you copied in Step 1.
Step 3: Create a BigQuery Dataset
From your Google Cloud command line, run:
bash
bq mk hubspot_dataset
hubspot_dataset is the dataset name — change it as needed. Once the command runs successfully, you will see a confirmation message in your CLI and the dataset will appear in your Google Cloud console.
Note: you can also create a dataset directly from the BigQuery console by hovering over your project ID, clicking View Actions, and selecting Create Dataset.
Step 4: Create an Empty Table
Run the following command in your Google Cloud CLI:
bash
bq mk \
–table \
–expiration 86400 \
–description “Contacts table” \
–label organization:development \
hubspot_dataset.contacts_table
Once the table is created, a confirmation message will appear in your CLI and the table will be visible in the console.
Note: you can also create a table from the BigQuery console. Once your dataset exists, click View Actions and select Create Table.
Step 5: Load Data Into Your Table
Convert the HubSpot API response (JSON) into newline-delimited JSON. Define your schema in a contacts_schema.json file. Then load using:
bash
bq load \
–source_format=NEWLINE_DELIMITED_JSON \
hubspot_dataset.contacts_table \
./contacts_data.json \
./contacts_schema.json
Refer to BigQuery’s official Data Types and Introduction to Loading Data documentation for schema guidance.
Step 6: Schedule Recurring Load Jobs
First, create a directory for your scripts and an empty backup file:
bash
sudo mkdir /bin/scripts/ && touch /bin/scripts/backup.sh
Add the following content to backup.sh:
bash
#!/bin/bash
bq load –autodetect –replace –source_format=NEWLINE_DELIMITED_JSON hubspot_dataset.contacts_table ./contacts_data.json
Open crontab to schedule the script:
bash
crontab -e
Add this line to run the job daily at 6 PM:
0 18 * * * /bin/scripts/backup.sh
Navigate to the directory where backup.sh is saved and make it executable:
bash
chmod +x /bin/scripts/backup.sh
Your cron job will now run backup.sh daily at 6 PM, keeping your BigQuery table updated with the latest HubSpot data.
Limitations of the Manual Method
- HubSpot APIs have a rate limit of 250,000 daily API calls, reset at midnight.
- You cannot use wildcards when loading files, each file must be loaded individually.
- Cron jobs do not send alerts when something fails. You need to build monitoring separately.
- You must define separate schemas for each API endpoint in BigQuery.
- Not suitable for real-time data needs.
Additional code is required for data cleaning and transformation.
Use Cases to transfer your data from HubSpot to BigQuery
See which channels actually close deals, not just generate leads
HubSpot tracks your deals. Your ad platforms track spend. Your product tracks usage. None of them talk to each other. Move HubSpot data into BigQuery and you can join all three in a single SQL query, so you know which campaigns drive closed revenue, not just pipeline. For teams doing this regularly, brushing up on BigQuery analysis patterns is worth the time.
Query your CRM at any scale
HubSpot’s built-in reports cap at a fixed record count and do not support custom SQL. BigQuery removes both limits. It is serverless, scales automatically, and keeps data warehouse costs predictable on a pay-per-query model, no infrastructure to maintain as your contact and deal volume grows.
Build customer intelligence that HubSpot cannot
Join HubSpot deal data with Stripe subscription records to calculate LTV by acquisition channel. Merge contact stages with product usage events to find which onboarding behaviours predict conversion. Neither analysis is possible inside HubSpot alone. Both take minutes once the data is in BigQuery.
Keep your CRM data in your own governed environment
HubSpot sets its own retention policies. BigQuery puts you in control. This includes access controls, audit logging, and encryption at rest, all inside your own Google Cloud environment. For teams with data residency or compliance requirements, that distinction matters.
Conclusion
HubSpot manages your contacts, deals, and campaigns well. BigQuery is where that data becomes analytically useful and joinable with every other source your team depends on and queryable with SQL at any scale.
This guide covered three practical methods to get HubSpot data into BigQuery. The native connector is the fastest no-code option for teams on Data Hub Enterprise. Hevo is the right call for teams that need real-time syncs, multi-warehouse support, or a pipeline that requires no engineering overhead. The Private App API gives engineering teams full extraction control at the cost of ongoing maintenance.Whichever method you start with, the move pays off quickly.
Sign up for a free 14-day Hevo trial and have HubSpot data flowing into BigQuery in under 5 minutes. Or review Hevo’s pricing to find the right plan for your data volume.
FAQs
Q1. Which method should I use to connect HubSpot to BigQuery?
Start with the native connector if you are on Data Hub Enterprise and daily syncs are enough. Use Hevo if you need real-time data, you are on any other HubSpot plan, or you want a pipeline that runs itself. Use the Private App API only if you have specific extraction logic that a managed connector cannot handle.
Q2. What does this integration actually cost?
The native connector is included with Data Hub Enterprise. Hevo pricing is event-volume based. See the Hevo pricing page for your tier. BigQuery charges for storage and queries. The Google BigQuery pricing guide breaks down what to expect before you commit.
Q3. How fresh will my BigQuery data be?
Native connector: once a day at 0600 UTC. Hevo: real-time or custom frequency depending on your plan. Private App API: as fresh as your cron schedule, you set it, you own it.
Q4. Can I send HubSpot data to Snowflake or Redshift instead?
Yes, with Hevo. The native connector is BigQuery-only. Hevo connects HubSpot to 150+ destinations. The HubSpot to Snowflake and HubSpot to PostgreSQL guides cover those paths step by step.


