HubSpot is an inbound marketing and sales software that helps companies attract visitors, convert leads, and close customers.
Featureslink
Feature Name | Supported | Notes |
---|---|---|
Capture deletes | check | COMPANY , CONTACT , CONTACT_LIST , DEAL , DEAL_PIPELINE , DEAL_PIPELINE_STAGE , FORM , TICKET_PIPELINE , and TICKET_PIPELINE_STAGE tables |
Custom data | check | COMPANY , CONTACT , DEAL , LINE ITEMS , and PRODUCT tables only . We support custom objects. |
Data blocking | check | Column level |
Column hashing | check | |
Re-sync | check | Connector level |
History | check | COMPANY_PROPERTY_HISTORY , CONTACT_PROPERTY_HISTORY , DEAL_PROPERTY_HISTORY , DEAL_STAGE , LINE_ITEM_PROPERTY_HISTORY , PRODUCT_PROPERTY_HISTORY and TICKET_PROPERTY_HISTORY tables *. |
API configurable | check | |
Priority-first sync | ||
Private networking | ||
Fivetran data models | check | Get the models: source / transform |
IMPORTANT: The HubSpot connector doesn’t support switching modes because we fetch history data directly from the APIs. We maintain two separate tables, one for live mode and one for history mode. For example, on the connector’s Schema tab, you will have two tables,
COMPANY
andCOMPANY_PROPERTY_HISTORY
. You can sync the history table only if you have included the live table in your syncs.
Supported productslink
Product Name |
---|
HubSpot CRM |
Marketing Hub |
Sales Hub |
Service Hub |
Setup guidelink
Follow our step-by-step HubSpot setup guide to connect HubSpot with your destination using Fivetran connectors.
Sync overviewlink
Sync strategylink
If during a sync, we find that there are more than 10,000 updated records for the following endpoints, we re-import the associated source tables in full to capture all the changes:
companies
deals
engagements
custom objects
For the above endpoints, we can either:
- retrieve the most recent 10,000 changes to the entities, or
- retrieve the entire dataset from an endpoint
Sync strategy for ENGAGEMENT tables
We do incremental syncs of the ENGAGEMENT
and ENGAGEMENT_*
tables according to the sync frequency you set in your Fivetran dashboard. We also do a full re-sync of these tables once a day because we noticed incomplete data when we performed incremental syncs alone.
Sync strategy for EMAIL EVENT tables
Once a day, we fetch data for the last 25 hours for all EMAIL_EVENT_*
tables. We do this to capture events that might have been missed in the last sync because of HubSpot’s event processing delays.
Capture deleteslink
We use different strategies to capture deletes because the HubSpot API doesn’t offer a mechanism to capture deletes:
-
Infer deletes for the following tables:
CONTACT_LIST
DEAL_PIPELINE
DEAL_PIPELINE_STAGE
FORM
TICKET_PIPELINE
TICKET_PIPELINE_STAGE
We compare the tables against their previous version and capture deletes using the
_fivetran_deleted
system column. -
Use webhooks to capture deletes for the
COMPANY
,CONTACT
, andDEAL
tables.NOTE: If you created the connector using our REST API, we don’t capture deletes for the
COMPANY
,CONTACT
, andDEAL
tables, because these connectors are not authorized using the Fivetran Hubspot application.
We do not capture deletes for tables that do not support the Capture deletes feature, though they still contain the is_deleted
or _fivetran_deleted
columns. Deleted records are marked as false
in the is_deleted
or _fivetran_deleted
columns.
Capture mergeslink
In HubSpot, you can merge two records into one record. For example, when you merge two contacts, the primary contact record remains after the merge and the secondary contact is merged into the primary record. For more information, see HubSpot’s documentation.
We capture merges for the COMPANY
, CONTACT
, and DEAL
tables.
-
To capture merges of the
CONTACT
table, we use a separate table,CONTACT_MERGE_AUDIT
.NOTE: You can also use our dbt Core-compatible data model to delete your merged contacts. Delete merged contacts using
hubspot_contact_merge_audit_enabled: TRUE
. The data model enables you to audit your merge contacts and removes any merged record from theCONTACT
table. -
To capture merges of the
DEAL
table, we add anis_merged
column in your destination table. We mark the deals that have been merged into another deal and no longer exist, asis_merged = TRUE
.NOTE: In your destination table, you may observe the missing
_fivetran_deleted
column. -
To capture merges of the
COMPANY
table, we mark the company records asis_deleted = TRUE
.
Deal stage calculationslink
The HubSpot API returns only the date_entered
value of the dealstage
properties data. We sync this data to the DEAL_STAGE
table.
Fivetran populates the date_entered
value in the _fivetran_start
column and sets the date_exited
value in the _fivetran_end
column. The date_exited
value for a deal stage is the date_entered
value of the next deal stage in chronological order.
You can calculate the time_in
value as the difference between the _fivetran_start
and _fivetran_end
column values in the DEAL_STAGE
table.
For example, in the DEAL_STAGE
table:
deal_id | deal stage | date_entered | _fivetran_start | _fivetran_end |
---|---|---|---|---|
10 | 123 | 11:00 | 11:00 | 12:00 |
10 | 145 | 12:00 | 12:00 | 13:00 |
10 | 157 | 13:00 | 13:00 | 14:00 |
10 | 173 | 14:00 | 14:00 | MAX_TIMESTAMP_VALUE |
-
For
deal_id
10 in deal stage 145:date_entered_145
=_fivetran_start
= 12:00date_exited_145
=date_entered_157
=_fivetran_end
= 13:00time_in_145
= 1 hour (_fivetran_end
-_fivetran_start
)
-
For
deal_id
10 in deal stage 173:date_entered_173
=_fivetran_start
= 14:00date_exited_173
=_fivetran_end
= MAX_TIMESTAMP_VALUEtime_in_173
= MAX_TIMESTAMP_VALUE - 14:00 (_fivetran_end
-_fivetran_start
)
HubSpot Tickets API limitationslink
HubSpot’s Tickets API endpoint returns a list of changes to the ticket objects. HubSpot limits the returned changes to the last 24 hours. To ensure data integrity, Fivetran triggers a re-sync of the TICKET
table if the incremental endpoint isn’t called in the last 24 hours.
Schema informationlink
Marketing Hub schemalink
This schema is applicable for the HubSpot Marketing Hub product.
To zoom, open the ERD in a new window.CRM and Sales Hub schemalink
This schema is applicable for the HubSpot CRM and Sales Hub products.
To zoom, open ERD in new window
Service Hub schemalink
This schema is applicable for the HubSpot Service Hub product.
To zoom, open ERD in new window
HubSpot Developer Preview APIlink
We maintain the following tables using the HubSpot developer preview API, so there are sometimes structural changes in these tables. Fivetran automatically handles structural changes, which might lead to some schema breaking changes. If that happens, we need to re-sync the affected tables. You can read more in the HubSpot Developer Preview API documentation.
LINE_ITEM
LINE_ITEM_PROPERTY_HISTORY
PRODUCT
PRODUCT_PROPERTY_HISTORY
Custom objectslink
You can sync custom objects from your HubSpot account to your destination. We create a destination table for each custom object. We follow our standard table naming conventions.
We sync the properties you define for the custom objects into the PROPERTY
table.
We create an association table in your destination to capture the associations between different custom objects and associations between a custom object and the following tables:
COMPANY
CONTACT
DEAL
EMAIL
ENGAGEMENT
LINE_ITEM
PRODUCT
TICKET
Negative timestamps from HubSpotlink
We automatically convert negative timestamps received from HubSpot to EPOCH, for example, 1st January 1970 00:00:00 UTC.