Hubspot to Redshift: How to Move Your Data

Move HubSpot into Amazon Redshift with Airbyte. Server-side versus client-side incremental, the account-wide rate limit, and why Redshift needs an S3 bucket.

Summarize with AI:

Moving HubSpot into Amazon Redshift is how the commercial picture stops being three systems that disagree. HubSpot knows about deals and marketing activity, your product knows whether those customers use anything, and your billing system knows whether they paid. Every question worth asking spans at least two of them.

This guide covers the managed path with Airbyte. Nearly all the constraints sit on HubSpot's side, and one of them decides whether your rate limit budget goes further or not at all. Redshift adds a prerequisite of its own that catches people who assumed the warehouse was the easy half.

HubSpot to Amazon Redshift at a glance:

CapabilitySupportedWhat it means for this pipeline
Incremental modesTwo kindsClient-side filtering still pulls the full dataset
Daily rate limitAccount-wideShared with every other app connected to the account
Association streamsConfigurableDefine from and to objects to generate a dedicated stream
Loading methodS3 staging plus COPYRequired, so a staging bucket is a prerequisite
Schemas writtenTwoYour target schema plus a raw schema Airbyte manages

Why move data from HubSpot to Amazon Redshift?

Two situations account for most of these pipelines.

The first is joining. Answering whether marketing sourced pipeline actually converts, or which segments are profitable after support cost, needs CRM data next to data HubSpot has never seen. If your analytical estate already runs on AWS, Redshift is where that join happens with least friction.

The second is analysis HubSpot's reporting cannot do: multi-year trends, custom attribution, cohort definitions your team argues about. If you only need standard CRM reports, HubSpot produces them and this pipeline earns you little.

What do you need before you start?

Two credentials, an agreement with people outside your team, and an AWS prerequisite:

A Private App or OAuth application. With read scopes on every object you intend to sync. Association streams need read scopes on both objects in the relationship, and custom objects need the custom object read scope.

An agreed share of the daily API budget. The burst limit is per app, so a surge from your sync will not immediately throttle anyone else. The daily limit belongs to the HubSpot account and every connected application draws from it, so find out what else talks to HubSpot before choosing a schedule.

An S3 staging bucket and IAM permissions. The Redshift destination writes data to S3 as files with a manifest, then issues a COPY command, which is Redshift's own recommended approach. You need put, get, delete and list on the bucket, in the same region as the cluster.

Redshift entities created in advance. A database, a schema and a user able to write data and manage staging operations. Airbyte writes into two schemas, the one you nominate and a raw schema it manages, so tell whoever reviews your Redshift objects that the second is expected.

Note also that an SSH tunnel covers the SQL connection only. Staging traffic reaches S3 over HTTPS regardless, so a network design assuming everything passes through a bastion is wrong.

How do you build a HubSpot to Amazon Redshift pipeline in Airbyte?

Step 1: Decide your objects and associations

List the objects your analysts need, and separately list the relationships between them that matter. Those relationships do not fall out of the object streams on their own, and defining them is a configuration step rather than something you can add later without thought. Contacts to companies and deals to companies cover most cases.

Step 2: Configure the HubSpot source

Click Sources in the left navigation, then New Source, and select HubSpot, following adding a source. Authenticate, set a start date, and define each association stream by naming a from object and a to object. Then refresh the source schema, which is the step people forget when a stream they configured stubbornly fails to appear.

Step 3: Configure the Redshift destination

Click Destinations, then New Destination, and select Redshift, following adding a destination. Supply the cluster host, database, schema and credentials, along with your S3 bucket and IAM key. Staging files are removed after a successful COPY by default, and can be retained if you need them for debugging.

Step 4: Set a lookback window and deduplicate

Click Connections, then New connection, select your streams and a deduplicating incremental sync mode. Set a lookback window if you sync the search-backed streams, which include deals, companies, contacts, tickets, leads and the engagement streams, because those can miss records due to irregularities in HubSpot's API.

Deduplication is what makes that lookback free, since re-reading an overlapping period leaves no duplicate rows. Set sort and distribution keys on the resulting tables too, because CRM analysis is almost always filtered by date and grouped by owner or pipeline.

Why is my incremental sync not saving any API calls?

Because incremental means two different things depending on the stream. Server-side incremental asks HubSpot for records changed since the last sync, and the API returns only those. Client-side incremental asks for everything, receives everything, and discards what the connector has already seen.

Both produce correct data in Redshift. Only the first reduces what you spend against the account's daily budget. Which one a stream uses is a property of that stream rather than a setting you choose, so the value of knowing this is diagnostic: when an incremental sync is unexpectedly slow, this is usually why.

Association streams are the pleasant exception. They sync incrementally, fetching associations only for records modified since the last sync, which makes them cheap against your rate limit and a good reason to model relationships properly rather than deriving them later.

Why does a SaaS source need an S3 bucket?

Because the requirement comes from the destination rather than the source. Redshift is designed to be loaded in bulk from S3, so the connector writes files with a manifest and then issues a COPY command pointing at them. That is Redshift's own recommended path and there is no direct insert alternative.

So a pipeline from a marketing platform acquires an AWS prerequisite, which surprises teams who assumed the HubSpot side was the only setup work. Budget for a bucket in the same region as your cluster, IAM credentials with four permissions on it, and whatever approval your organisation requires for new storage.

CRM volumes are modest by warehouse standards, so this rarely becomes a performance question. It is a planning question, and the time it costs is at the start of the project rather than during the sync.

Frequently asked questions

Why is my incremental HubSpot sync still slow?

Some streams use client-side incremental, where the API returns everything and the connector filters locally. The data is correct but there is no reduction in API usage or transfer time.

Does my sync compete with other HubSpot integrations?

For the daily limit, yes. It is shared across every app on the account. The burst limit is per app, so bursts are isolated but daily budget is not.

Do I need an S3 bucket to load into Redshift?

Yes. The destination stages data in S3 and loads it with COPY, which is Redshift's recommended approach. Put the bucket in the same region as your cluster.

Why are records missing from the deals stream?

The search-backed streams can miss records due to irregularities in HubSpot's API. Set a lookback window, which is free against a deduplicating destination.

Can I do this without writing code?

Yes. The setup above is entirely UI-driven. You will want Redshift views resolving owner and pipeline identifiers and defining your pipeline metrics, which is short SQL.

Get your HubSpot data into Amazon Redshift

Agree your share of the account's daily API budget before choosing a schedule, set up the staging bucket early since a SaaS source needing AWS storage surprises people, define the association streams you need, and set a lookback window on the search-backed streams.

Airbyte's connector catalog includes 700+ pre-built connectors, so CRM data can sit beside product and billing sources in one warehouse. For the same source in another warehouse, see HubSpot to BigQuery, and for another CRM landing in Redshift, Salesforce to Snowflake.

Start syncing now →

Integrate with 700+ apps using Airbyte

Move data from 700+ sources into warehouses, lakes, and beyond. Set up pipelines in minutes with pre-built connectors and the Connector Builder.