Last updated: July 22, 2026
Connect HubSpot and AWS S3
- In your HubSpot account, click the Marketplace icon
in the top navigation bar, then select HubSpot Marketplace. - In the search bar, search for and select Amazon S3.
- Click Install.
- Select your AWS IAM role, then click Install.
- Click Next.
- Enter the ARN value from the AWS IAM role in the Role ARN field.
- Click Connect to Amazon S3.
Configure bucket permissions
HubSpot needs the following permissions on an AWS S3 bucket and folder to access files in the folder and sub-folders:
- s3:GetBucketLocation
- s3:GetObject
- s3:GetObjectVersion
- s3:ListBucket
- s3:PutObject
- s3:DeleteObject
After connecting the app, grant HubSpot permission to sync data to your S3 bucket.
- In your HubSpot account, click the
settings icon in the top navigation bar. In the left sidebar menu, navigate to Integrations > Connected Apps. - Click Amazon S3.
- In the right panel, click Select for the Amazon S3 account you want to sync data to.
- On the Permissions page, click Copy to copy the example permission policy and attach it to the AWS IAM role you created earlier. Please note to update the permission policy with your bucket names.
- Log into the AWS Management Console.
- On the home dashboard, click Services > Security, Identity, & Compliance > IAM.
- On the left sidebar, click Account settings.
- In the Security Token Service (STS) section, look for the AWS region that corresponds to the region your AWS account is located in. Click to toggle the switch on to activate the region.
- On the left side panel, click Policies.
- Click Create policy.
- On the JSON tab, click Add new statement.
- Add the policy you copied in Step 4 that will give HubSpot the permissions it needs to load or unload data using a single bucket and folder path.
- Make sure to replace <bucket> and <prefix> with your actual bucket name and folder path prefix. The Amazon Resource Names (ARN) for buckets in government regions have an arn:aws-us-gov:s3::: prefix.
- Setting the s3:prefix condition to either ["*"] or ["<path> /*"] grants access to all prefixes in the specified bucket or path in the bucket respectively.
- Click Next.
- In the Review and create section, add the Policy name and an optional description.
- Click Create policy.
Configure the destination bucket
- Back on the Permissions page in HubSpot, in the Bucket field, enter the bucket name.
- Click Test connection.
- If the connection test is successful, click Next.
Configure the sync
- On the Data source page, select the data that you want to sync.
- Select the checkboxes for the objects, associations, and events you want to sync from HubSpot to Amazon S3.
- Click Next.
- On the Details page, click the Sync frequency dropdown menu and select the frequency that you want data to sync from HubSpot to Amazon S3.
- Click Start sync.
Manage the sync
After setting up a sync and data starts syncing from HubSpot to Amazon S3, you can review its status, identify errors, update settings, or archive the sync.
To review and manage the sync:
- In your HubSpot account, click More, then navigate to Data Management > Data Integration. If More doesn't appear in your account, navigate to Data Management > Data Integration directly.
- Navigate to the App syncs tab and locate your Amazon S3 sync in the table.
- Review the sync status:
-
- Syncing: a sync run is in progress.
- Synced: the last sync completed successfully.
- Failed: the last sync encountered an error.
- Archived: the sync configuration was removed.
- Click the sync name to view more details, including successfully synced and failed records.
To edit or remove a sync:
- In the table, click the Amazon S3 sync.
- In the top right, click the Actions dropdown menu, then select one of the following:
-
- Edit sync: update the sync settings.
- Archive sync: delete the sync configuration.
Data format for syncing between HubSpot and Amazon S3
Available data for syncing
You can sync the following data from HubSpot to AWS S3:
- Objects: standard and custom objects, such as contacts, companies, tickets, or products.
- Records: individual object records.
- Properties: properties and their values on the object records, including the property history.
- Associations: all association types and associated records.
- Events: selected standard HubSpot events and custom behavioral events, including selected event properties.
Object data of different types are organized and available in two ways:
- Individual: each object type is stored in its own table and has only records of the same object type. For example,
objects_contactscontains only contact records. - Combined: all records for all object types are combined into one database object. Thus, when querying, you need to specify a filter like “WHERE objectTypeId=’0-1’
Custom objects will be assigned an ID at the time of creation, and will be identified as 2-unique_ID. For example, 2-12345.
S3 folder structure
HubSpot writes each successful sync to a HubSpot-managed prefix in your Amazon S3 bucket using the following structure:
s3://<bucket-name>/hubspot-dataout/<account-id>/<run-id>/<table-name>/<file-name>
For example:
s3://my-company-hubspot-data/hubspot-dataout/12345678/98765/OBJECT_WITH_OBJECT_PROPERTIES/part-000.parquet
s3://my-company-hubspot-data/hubspot-dataout/12345678/98765/EVENTS_VISITED_PAGE/part-000.parquet
s3://my-company-hubspot-data/hubspot-dataout/12345678/98765/ASSOCIATIONS_CONTACTS_TO_COMPANIES/part-000.parquet
Each sync creates a new run-id folder. HubSpot doesn't delete data from previous sync runs.
If you want to automatically remove older sync, configure an Amazon S3 lifecycle policy for the bucket or prefix.
HubSpot generates file names for each sync run, and file names may differ between sync runs. Don't configure downstream processes to depend on specific file names. Instead, read all files in the appropriate table-name folder for the export run that you want to process.
Object files
If you select object data, HubSpot exports the following folders.
OBJECTS_PROPERTIES
One row per object property value.
| Column name |
Type |
Description |
|---|---|---|
| OBJECTTYPEID |
String |
The ID of the object type. 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
One row per object record, with selected property values grouped into a single PROPERTIES column.
| Column name |
Type |
Description |
|---|---|---|
| OBJECTTYPEID |
String |
The ID of the object type. For example, contacts use 0-1. |
| OBJECTID |
Number |
The ID of the record. |
| PROPERTIES |
Object or JSON |
The record’s selected property values. |
| UPDATEDAT |
Timestamp |
The date and time when the record’s selected properties were last updated in HubSpot. |
| INGESTEDAT |
Timestamp |
The date and time when the data was last ingested into the export source. |
To read a specific object type from this folder, filter by OBJECTTYPEID.
Association files
If you select association data, HubSpot syncs association records and association definitions.
ASSOCIATIONS
One row per selected association between two object 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 object record. |
|||
| TOOBJECTID |
Number |
The ID of the destination object record. |
|||
| INGESTEDAT |
Timestamp |
The date and time when the data was last ingested into the export source. |
|||
ASSOCIATION_DEFINITIONS
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 type. |
| TOOBJECTTYPEID |
String |
The ID of the destination object type. |
| NAME |
String |
The association definition’s name. |
| LABEL |
String |
The association definition’s label. |
| 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_TYPE>_TO_<TO_OBJECT_TYPE>
For selected association pairs, HubSpot also syncs folders for specific association pairs, such as ASSOCIATIONS_CONTACTS_TO_COMPANIES. These folders contain association records and the associated 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. |
| [FROMOBJECTTYPE]_OBJECTID |
Number |
The ID of the source object record. For example, CONTACT_OBJECTID. |
| [TOOBJECTTYPE]_OBJECTID |
Number |
The ID of the destination object 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 type. |
| FROMOBJECTTYPEID |
String |
The ID of the source object type. |
| NAME |
String |
The association definition's name. |
| LABEL |
String |
The association definition's label. |
| ISMAINASSOCIATIONDEFINITION |
Boolean |
Whether HubSpot displays this association definition as the primary association on associated records. |
Event files
If you select event data, HubSpot exports one folder for each event type. Folder names use the format EVENTS_<EVENT_NAME>, such as EVENTS_VISITED_PAGE.
Each event folder contains standard event columns and a column for each event property selected during setup.
| Column name |
Type |
Description |
|---|---|---|
| EVENTTYPEID |
String |
The event type ID. |
| ID |
String |
The unique event ID. |
| OBJECTTYPEID |
String |
The ID of the object type associated with the event. |
| OBJECTID |
Number |
The ID of the object 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. |