
How to Connect HubSpot to Snowflake: 3 Methods (2026)
Three ways to move HubSpot data into Snowflake, compared: HubSpot's native Snowflake Data Share, a manual API pipeline, and real-time CDC with Estuary. Includes setup steps, a method comparison, and answers to the questions teams ask most.

HubSpot runs your marketing, sales, and service. Snowflake is where that data becomes analytics you can actually act on, joined with product usage, billing, and ad spend that HubSpot never sees on its own. Getting HubSpot data into Snowflake, and keeping it current, is what turns CRM reports into real analysis: customer acquisition cost by channel, attribution across touchpoints, churn signals, and a true 360-degree view of every account.
There are three ways to do it, and this guide covers all of them: HubSpot's native Snowflake Data Share, a manual export through the HubSpot API, and a real-time pipeline with Estuary. The right choice depends on how fresh the data needs to be, whether you need more than read-only access, and how much engineering time you want to spend.
Here's where Estuary is different. It captures every change in HubSpot once into a durable stream using change data capture, then lets you decide how each object lands in Snowflake, streaming the high-value ones in near real time through Snowpipe Streaming while batching the rest to keep Snowflake compute low. Because the pipeline reads from that stream rather than re-querying HubSpot for every destination, a single capture can feed Snowflake and any other warehouse or tool at once, without multiplying the load on HubSpot's API. It's read-only and safe by design: Estuary never writes back to HubSpot, so your CRM stays the source of truth.
Why Integrate HubSpot with Snowflake
HubSpot is built to run your customer-facing teams, not to be a data warehouse. Its reporting is fine on its own, but it can't easily join CRM data with the rest of your business or preserve history as records change. Moving HubSpot into Snowflake unlocks the analysis HubSpot can't do alone:
- Unified customer view: join HubSpot contacts, companies, and deals with product usage, billing, and support data already in Snowflake.
- Attribution and CAC: combine deals with ad spend from Google, LinkedIn, and Meta to see which channels actually acquire customers, and at what cost.
- Historical snapshots: HubSpot overwrites records as they change. Snowflake preserves the history, so you can reconstruct what the pipeline looked like last quarter.
- Analytics that survive tool changes: with CRM data in the warehouse, your dashboards don't break if you switch CRMs later.
The rest of this guide shows the three ways to build that integration, and when each one fits. If your warehouse is BigQuery instead, see our guide on connecting HubSpot to BigQuery.
HubSpot to Snowflake: 3 Methods Compared
Before the step-by-step guides, here's how the three methods stack up, so you can pick the right one for your use case.
| Native Snowflake Data Share | Manual (HubSpot API) | Estuary | |
|---|---|---|---|
| How it works | HubSpot shares CRM data into Snowflake | Custom scripts pull from the HubSpot API and load to Snowflake | Real-time CDC pipeline into Snowflake |
| Data freshness | Scheduled refresh | Only as current as your last run | Near real-time, tunable per object |
| Setup effort | Low, but needs Operations Hub | High, you build and maintain it | Low, minutes in the UI or as code |
| Access | Read-only into Snowflake | Full control, full responsibility | Read-only capture, safe by design |
| Custom objects | Depends on the share | You map them yourself | Auto-discovered |
| Schema changes | Managed by HubSpot | You handle them | Handled automatically |
| Maintenance | Low | High, breaks when APIs change | Low, fully managed |
| Requirement | HubSpot Operations Hub (Enterprise tier) | Engineering time | Estuary account |
| Best for | HubSpot Enterprise teams wanting a quick native option | One-off pulls or highly custom logic | Ongoing, production pipelines that stay current |
The native Data Share is the fastest path if you're already on HubSpot Operations Hub and only need read-only analytics. The manual API route gives you total control but becomes a maintenance burden fast. For a pipeline that stays current on its own, with automatic schema handling and per-object control over cost, Estuary is the most sustainable choice. The rest of this guide walks through all three.
Method 1: Using HubSpot’s Sync Feature for HubSpot to Snowflake Integration
Existing HubSpot users can use Snowflake Data Share—HubSpot’s native integration with Snowflake. Snowflake Data Share allows you to pass data from your HubSpot CRM platform to a Snowflake instance quickly and securely. You can also retrieve HubSpot data in Snowflake by running SQL queries.
Step 1: First, navigate to the HubSpot Data listing in Snowflake Marketplace and click on the Request button, then accept Snowflake’s terms.
Step 2: After completing this mandatory step, proceed to install the Snowflake integration from the HubSpot App Marketplace. The app creates Snowflake shares to deliver your CRM data. It requires HubSpot’s Operations Hub Enterprise and syncs data between the two platforms using triggers.
Step 3: With triggers, choose which HubSpot objects you want to send to Snowflake and specify the details of the data transfer, like the type and frequency of sync. This allows for a real-time sync of your HubSpot data with Snowflake.
Step 4: After setting up the triggers, HubSpot automatically sends all relevant data when an operation meets your specified conditions. You can also set up bidirectional syncing between HubSpot and Snowflake for easy updates of records whenever changes occur.
Method 2: Using the Manual Method to Integrate HubSpot to Snowflake
Although slightly more time-consuming than the previous method, you can manually extract your HubSpot data and load it to Snowflake.
Step 1: First, you must extract your data from HubSpot using HubSpot APIs that follow the REST architecture. You can use tools like Postman or CURL or use HTTP clients to interact with the APIs. The API responses will be in JSON, which is a widely used format for organizing data.
Step 2: Before moving the data into a Snowflake data warehouse instance, ensure you have a well-defined schema of your data. Snowflake data is organized around tables with a well-defined set of columns, each with a specific data type. Since Snowflake supports semi-structured data types, including JSON, you can directly load JSON data.
Step 3: To load data from HubSpot to Snowflake, create a schema to map each API endpoint to a table. Map each key of a HubSpot API endpoint response to a column of a table and ensure the right conversion to Snowflake data type.
Step 4: Once you have a well-defined schema or data model for Snowflake, you can load your HubSpot data into the Snowflake database. Use the PUT command to push the files containing data into a staging environment. Then, invoke the COPY INTO command on the Snowflake instance to copy the data.
Alternatively, you can upload all the extracted HubSpot data into a service like Amazon S3 for Snowflake to directly access the data.
Step 5: Finally, you can use the Snowflake web interface to load data from files up to 50 MB in size. The web interface acts as a data loading wizard where you can visually set up and copy your data into the data warehouse.
To avoid the hassle of manual integration, consider hiring a HubSpot developer or simply register for Estuary to automatically sync data from HubSpot to Snowflake in minutes.
Method 3: Real-Time HubSpot to Snowflake with Estuary
Estuary builds a continuous pipeline from HubSpot into Snowflake using change data capture. It captures every change in HubSpot once, backfills your history, and keeps Snowflake current from there, with automatic schema handling, exactly-once delivery, and per-object control over how fresh the data is and how much Snowflake compute it uses. You can set it up in a few minutes through the UI or manage it as code. Of the three methods, this is the one built for pipelines that need to stay live.
Here are the key features:
- Real-time streaming: capture and deliver HubSpot changes continuously, so Snowflake reflects your CRM without manual refreshes.
- Per-object cost control: stream high-value objects in near real time with Snowpipe Streaming, and batch the rest to keep warehouse costs down.
- Automatic schema handling: new fields and custom objects are discovered and handled without breaking the pipeline.
- Read-only and safe: Estuary never writes back to HubSpot, so your CRM stays the source of truth.
Here are the steps involved in using Estuary for integrating HubSpot to Snowflake:
Step 1: Log In
You’ll need to log in to your Estuary account to get started. If you don’t have one, register for a free account.
Step 2: Create a New Capture
Upon logging in, you’ll be redirected to the Estuary dashboard, where you must click on Captures. A capture is the data source that forms one end of the data pipeline. Then, click on the NEW CAPTURE button.
Search for HubSpot in the Search connectors box. The search results will show the HubSpot Real-time connector. Click on the Capture button of this connector.
Once you’re on the HubSpot Real-time connector page, enter a Name for the connector and choose your Data Plane.
To allow Estuary to connect to your HubSpot account, authenticate your HubSpot account using OAuth. Click the Authenticate Your HubSpot Account button and complete the authorization pop-up. No data is written or modified during this process.
You may optionally enable Capture Property History if you want historical property changes included in your records.
Collections are discovered automatically. After reviewing the settings, click Next, then Save and Publish to complete the source setup.
Prerequisite: Before you connect Estuary to Snowflake, make sure you have a user role with appropriate access permissions to your Snowflake database, schema, and warehouse. To accomplish this, you can run this script.
Step 3: Materialization
The next step is to set up the destination end of the pipeline. You can click on Materialize Connections in the pop-up window that follows a successful capture. Alternatively, you can navigate to the Estuary dashboard and click on Materializations. Next, click on the NEW MATERIALIZATION button.
Search for Snowflake in the Search connectors box. You’ll find the Snowflake Data Cloud connector in the search results. Click on the Materialization button.
Once you're on the Snowflake connector page, provide the required details: the Snowflake host URL, database, schema, and warehouse, plus the timestamp type the connector uses to store timestamps. For authentication, configure JWT key-pair authentication with your Snowflake username and private key. Username and password authentication is deprecated and should not be used.
Then set how each object lands in Snowflake, which is where you balance freshness against cost:
- Sync Schedule controls how often the materialization writes to Snowflake. Set it near real-time for objects that need to be current, or lengthen it to wake the Snowflake warehouse less often and spend less. If you don't set it, the default is 30 minutes.
- Delta updates, set per object, controls how each table is written. Turning it on uses Snowpipe Streaming by default, which writes rows directly into Snowflake without running the warehouse, giving you the lowest latency and cost. Leaving it off uses standard merge updates, which keep one current row per key. You can mix both in a single materialization, streaming append-heavy objects and merging the ones you query for current state.
Click Next, then Save and Publish. The connector will backfill your HubSpot collections into Snowflake and keep them in sync from there.
This completes the process of HubSpot to Snowflake integration.
Conclusion
Integrating HubSpot with Snowflake turns CRM reporting into real analysis: attribution, acquisition cost, churn signals, and a full customer view that HubSpot can't produce on its own. How you connect them comes down to how fresh the data needs to be and how much you want to maintain.
HubSpot's native Snowflake Data Share is a quick read-only option if you're on Operations Hub. A manual API pipeline gives you full control but becomes a maintenance burden that breaks when APIs change. For a pipeline that stays current on its own, Estuary captures every HubSpot change once and streams it into Snowflake, backfilling your history and keeping it live from there, with per-object control over latency and Snowflake compute through Snowpipe Streaming, and without writing back to HubSpot or straining its API.
If your warehouse is different, the same approach applies. See our guides for HubSpot to BigQuery and HubSpot to Google Sheets.
Ready to build it? Start for free, connect HubSpot and Snowflake, and you'll be syncing in minutes. For connector details, see the HubSpot capture connector and Snowflake materialization connector docs.
FAQs
Does the integration support HubSpot custom objects?
Which HubSpot objects can I sync to Snowflake?
How does the integration handle HubSpot API limits?
Can I load historical HubSpot data as well as new changes?

About the author
Jeffrey is a data engineering professional with over 15 years of experience, helping early-stage data companies scale by combining technical expertise with growth-focused strategies. His writing shares practical insights on data systems and efficient scaling.


















