Skip to content

Access your HubSpot data from Amazon Redshift

Last updated: October 26, 2026

Available with any of the following subscriptions, except where noted:

Use Data Out for Amazon Redshift to export selected HubSpot CRM data to tables in an Amazon Redshift database that you own. Each sync run writes a full snapshot of the selected data and replaces the previous snapshot. After the sync, you can query the tables with SQL or with your preferred BI and analytics tools to combine HubSpot data with other business data.

Please note: if you're a Super Admin, opt your account into the Data Studio beta to use this feature.

HubSpot Credits required for certain features syncing data directly from a single warehouse source in Data Studio to the HubSpot CRM doesn't consume HubSpot Credits. If you prepare the data in Data Studio before syncing (for example, by creating calculated fields or joining it with other data sources), those actions consume HubSpot Credits.



Understand limitations & considerations

Before you begin working with this feature, make sure to fully understand what steps should be taken ahead of time, as well as the limitations of the feature and potential consequences of using it.

  • Each sync replaces the destination tables with the latest snapshot. HubSpot doesn't keep previous snapshots in Redshift.
  • HubSpot doesn't delete the Parquet files it stages in your S3 bucket. To remove them automatically, set up an S3 lifecycle policy on the bucket or prefix.
  • Each object, event type, or association pair can be included in one recurring Redshift Data Out sync per HubSpot account.
  • Sensitive data isn't supported yet. Sensitive properties may be excluded from exports.
  • Object-specific tables, such as OBJECTS_CONTACTS, aren't supported yet.

Understand the data you can export

You can sync the following data from HubSpot to Amazon Redshift:

  • Objects: standard and custom objects, such as contacts, companies, deals, tickets, and products.
  • Records: individual records for the selected objects.
  • Properties: selected property values and property history on records.
  • Associations: selected relationships between records, including association definitions.
  • Events: selected standard HubSpot events and custom behavioral events, including selected event properties.

Data for different objects is combined in the object tables. When you read an object table, use OBJECTTYPEID to filter to a specific object. For example, contacts use 0-1. Custom objects are assigned an ID when they're created and are identified as 2-{unique_id}, such as 2-12345.

Understand the export format

During setup, you choose:

  • The Redshift database and the cluster or Serverless workgroup where HubSpot will create tables.
  • The S3 bucket HubSpot uses to stage data before loading it into Redshift.
  • The data sources to sync: objects, events, associations, or a combination of these sources.
  • The sync schedule.

HubSpot exports the data as Parquet files, stages the files in your S3 bucket, and loads them into Redshift tables.

Please note: HubSpot doesn't delete data from the staging bucket. It's recommended to set a bucket lifecycle policy to automatically clean up the bucket.

Find your data in Redshift

HubSpot creates one table per data source in a HubSpot-managed schema named after your destination:

<database>.hubspot_data_out_<destination-id>.<table-name>

You can find the schema name on the configuration page of your Redshift sync. For example:

  • your_database.hubspot_data_out_456.OBJECT_WITH_OBJECT_PROPERTIES
  • your_database.hubspot_data_out_456.EVENTS_VISITED_PAGE
  • your_database.hubspot_data_out_456.ASSOCIATIONS_CONTACTS_TO_COMPANIES

Each sync replaces the table with the latest snapshot. If a table fails during a sync, its previous data stays in place until the next successful sync.

HubSpot stages Parquet files in your S3 bucket under a HubSpot-managed prefix, then loads them into Redshift:

s3://<bucket>/<prefix>/hubspot-dataout/<portal-id>/<destination-id>/<run-id>/<table-name>/

These staging files stay in your bucket until you remove them. To remove them automatically, configure an S3 lifecycle policy on the bucket or prefix.

Please note: table and column names come from the exported data. They may be shortened to meet Redshift's 127-character identifier limit. Column types follow the exported data.

Review object tables

If you select object data, HubSpot exports the following tables.

OBJECT_PROPERTIES

This table contains one row per property value. To read a specific object, filter by OBJECTTYPEID.

Column name Type Description
OBJECTTYPEID String The ID of the object. For example, contacts use 0-1.
OBJECTID Number The ID of the record.
NAME String The property name.
VALUE String The property value.
UPDATEDAT Timestamp The date and time when the property value was last updated in HubSpot.
INGESTEDAT Timestamp The date and time when the data was last ingested into the export source.

OBJECT_WITH_OBJECT_PROPERTIES

This table contains one row per record, with the selected property values grouped into a single PROPERTIES column. To read a specific object, filter by OBJECTTYPEID.

Column name Type Description
OBJECTTYPEID String The ID of the object. For example, contacts use 0-1.
OBJECTID Number The ID of the record.
PROPERTIES Object or JSON The selected property values for the record.
UPDATEDAT Timestamp The date and time when the selected properties of the record were last updated in HubSpot.
INGESTEDAT Timestamp The date and time when the data was last ingested into the export source.

OBJECT_PROPERTIES_HISTORY

This table contains property change history. Unlike OBJECT_PROPERTIES, which holds only the current value, this table has one row for each historical value of a property. To see the full timeline for a single record and property, order by UPDATEDAT.

Column name Type Description
OBJECTTYPEID VARCHAR The ID of the object.
OBJECTID BIGINT The ID of the record.
NAME VARCHAR The property name.
VALUE VARCHAR The property value at that point in time.
UPDATEDAT TIMESTAMP The date and time when the value was set in HubSpot.
INGESTEDAT TIMESTAMP The date and time when the data was last ingested into the export source.

Review association tables

If you select association data, HubSpot exports association records and association definitions.

ASSOCIATIONS

This table contains one row per selected association between two records.

Column name Type Description
COMBINEDASSOCIATIONTYPEID String The unique identifier for the association definition.
ASSOCIATIONCATEGORY String The origin of the association type. Values can include HUBSPOT_DEFINED, USER_DEFINED, or INTEGRATOR_DEFINED.
ASSOCIATIONTYPEID Number The identifier for the association definition within its category.
FROMOBJECTID Number The ID of the source record.
TOOBJECTID Number The ID of the destination record.
INGESTEDAT Timestamp The date and time when the data was last ingested into the export source.

ASSOCIATION_DEFINITIONS

This table contains one row per selected association definition.

Column name Type Description
COMBINEDASSOCIATIONTYPEID String The unique identifier for the association definition.
CATEGORY String The origin of the association type. Values can include HUBSPOT_DEFINED, USER_DEFINED, or INTEGRATOR_DEFINED.
ID Number The identifier for the association definition within its category.
FROMOBJECTTYPEID String The ID of the source object.
TOOBJECTTYPEID String The ID of the destination object.
NAME String The name of the association definition.
LABEL String The label of the association definition.
INGESTEDAT Timestamp The date and time when the data was last ingested into the export source.
ISMAINASSOCIATIONDEFINITION Boolean Whether HubSpot displays this association definition as the primary association on associated records.

ASSOCIATIONS_<FROM_OBJECT>_TO_<TO_OBJECT>

For selected association pairs, HubSpot can also export pair-specific association tables, such as ASSOCIATIONS_CONTACTS_TO_COMPANIES. These tables include association records together with association definition metadata.

Column name Type Description
COMBINEDASSOCIATIONTYPEID String The unique identifier for the association definition.
ASSOCIATIONCATEGORY String The origin of the association type. Values can include HUBSPOT_DEFINED, USER_DEFINED, or INTEGRATOR_DEFINED.
ASSOCIATIONTYPEID Number The identifier for the association definition within its category.
[FROMOBJECT]_OBJECTID Number The ID of the source record. For example, CONTACT_OBJECTID.
[TOOBJECT]_OBJECTID Number The ID of the destination record. For example, COMPANY_OBJECTID.
INGESTEDAT Timestamp The date and time when the data was last ingested into the export source.
TOOBJECTTYPEID String The ID of the destination object.
FROMOBJECTTYPEID String The ID of the source object.
NAME String The name of the association definition.
LABEL String The label of the association definition.
ISMAINASSOCIATIONDEFINITION Boolean Whether HubSpot displays this association definition as the primary association on associated records.

Review event tables

If you select event data, HubSpot exports one table per event type. Table names use the format EVENTS_<EVENT_NAME>, such as EVENTS_VISITED_PAGE.

Each event table contains standard event columns and one column for each selected event property.

Column name Type Description
EVENTTYPEID String The event type ID.
ID String The unique event ID.
OBJECTTYPEID String The ID of the object associated with the event.
OBJECTID Number The ID of the record associated with the event.
INGESTEDAT Timestamp The date and time when the event was ingested into the export source.
OCCURREDATDATEINT Number The event date as an integer in YYYYMMDD format.
OCCURREDAT Timestamp The date and time when the event occurred.
PROPERTY_<PROPERTY_NAME> String A selected event property. For example, a property named page_title is exported as PROPERTY_PAGE_TITLE.

Manage the sync schedule

You configure the sync schedule during setup in HubSpot. You can also manually trigger a re-sync from HubSpot. Each sync run produces a full snapshot of the selected data. To control data volume, choose which objects, events, associations, and properties to include.

Please note: during the beta, only a limited set of sync frequencies may be available, such as once, every 6 hours, every 12 hours, daily, weekly, and monthly. Additional frequency options may be added in future releases.

Monitor syncs and handle errors

You can monitor Amazon Redshift syncs in HubSpot. A sync can have one of the following states:

State Meaning
Syncing A sync run is currently in progress.
Synced The last sync completed successfully.
Failed The last sync run encountered an error.
Archived The sync configuration was archived or removed.

When a sync fails:

  • HubSpot shows a Failed status with per-table details showing which tables succeeded or failed.
  • A table is updated only after HubSpot finishes loading all of its data, so you never see a partially loaded table.
  • If a table fails, its previous data stays in place until the next successful sync.
  • The next scheduled sync automatically reattempts a full sync.
  • You can manually trigger a re-sync at any time in HubSpot.

Tables that succeeded in a previous run aren't modified when a later run fails.

FAQs

How do I query the data?

Query the tables in your destination schema with SQL. For example:

Read all contact records:

SELECT * FROM your_database.hubspot_data_out_456.OBJECT_WITH_OBJECT_PROPERTIES WHERE OBJECTTYPEID = '0-1';

Read a specific property from the PROPERTIES JSON column:

SELECT OBJECTID, JSON_EXTRACT_PATH_TEXT(PROPERTIES, 'email') AS email FROM your_database.hubspot_data_out_456.OBJECT_WITH_OBJECT_PROPERTIES WHERE OBJECTTYPEID = '0-1';

Can I export one data type in multiple Redshift syncs?

Each object, event type, or association pair can be included in one recurring Redshift Data Out sync per HubSpot account. For example, if contacts are already exported to one recurring Redshift destination, you can't add contacts to another recurring Redshift sync until you archive the first sync.

Are object-specific tables supported?

No. Object-specific tables, such as OBJECTS_CONTACTS, aren't supported yet. Use OBJECT_WITH_OBJECT_PROPERTIES and filter by OBJECTTYPEID to get records for a specific object.

Is sensitive data supported?

No. Sensitive data isn't supported for Data Out to Redshift yet. Sensitive properties may be excluded from exports.

Does HubSpot keep previous snapshots?

No. Each sync replaces the destination table with the latest snapshot, so previous snapshots aren't kept in Redshift. HubSpot also doesn't delete the temporary Parquet files it stages in your S3 bucket. Configure an S3 lifecycle policy to expire them automatically.

Was this article helpful?
This form is used for documentation feedback only. Learn how to get help with HubSpot.