HubSpot
Overview
This page guides you through setting up the HubSpot source.
Features
Feature Name | Supported |
---|---|
Full Import | Yes |
Incremental Import | Yes |
Start Date Selection | Yes |
Supported streams
- Campaigns (opens in a new tab) (Client-Side Incremental)
- Companies (opens in a new tab) (Incremental)
- Contact Lists (opens in a new tab) (Incremental)
- Contacts (opens in a new tab) (Incremental)
- Contacts List Memberships (opens in a new tab)
- Deal Pipelines (opens in a new tab) (Client-Side Incremental)
- Deals (opens in a new tab) (including Contact associations) (Incremental)
- Records that have been deleted (archived) and stored in HubSpot's recycle bin will only be kept for 90 days, see response from HubSpot Team (opens in a new tab)
- Deals Archived (opens in a new tab) (including Contact associations) (Incremental)
- Email Events (opens in a new tab) (Incremental)
- Email Subscriptions (opens in a new tab)
- Engagements (opens in a new tab) (Incremental)
- Engagements Calls (opens in a new tab) (Incremental)
- Engagements Emails (opens in a new tab) (Incremental)
- Engagements Meetings (opens in a new tab) (Incremental)
- Engagements Notes (opens in a new tab) (Incremental)
- Engagements Tasks (opens in a new tab) (Incremental)
- Forms (opens in a new tab) (Client-Side Incremental)
- Form Submissions (opens in a new tab) (Client-Side Incremental)
- Goals (opens in a new tab) (Incremental)
- Line Items (opens in a new tab) (Incremental)
- Marketing Emails (opens in a new tab)
- Owners (opens in a new tab) (Client-Side Incremental)
- Products (opens in a new tab) (Incremental)
- Property History (opens in a new tab) (Incremental)
- Subscription Changes (opens in a new tab) (Incremental)
- Tickets (opens in a new tab) (Incremental)
- Ticket Pipelines (opens in a new tab) (Client-Side Incremental)
- Workflows (opens in a new tab) (Client-Side Incremental)
Custom CRM Objects will appear as streams available for sync, alongside the standard objects listed above.
Getting started
Requirements and prerequisites
- One of the following two types of credentials:
- OAuth 2.0 credentials
- A Private App to authenticate your HubSpot account
- If you are using either OAuth or Private App authentication, you need to configure the appropriate scopes (opens in a new tab) for the following streams:
Stream | Required Scope |
---|---|
campaigns | content |
companies | crm.objects.companies.read , crm.schemas.companies.read |
contact_lists | crm.objects.lists.read |
contacts | crm.objects.contacts.read |
contacts_list_memberships | crm.objects.contacts.read |
Custom CRM OBjects | crm.objects.custom.read |
deal_pipelines | crm.objects.contacts.read |
deals | crm.objects.deals.read , crm.schemas.deals.read |
deals_archived | crm.objects.deals.read , crm.schemas.deals.read |
email_events | content |
email_subscriptions | content |
engagements | crm.objects.companies.read , crm.objects.contacts.read , crm.objects.deals.read , tickets , e-commerce |
engagements_emails | sales-email-read |
forms | forms |
form_submissions | forms |
goals | crm.objects.goals.read |
line_items | e-commerce |
owners | crm.objects.owners.read |
products | e-commerce |
property_history | crm.objects.contacts.read |
subscription_changes | content |
tickets | tickets |
workflows | automation |
Set up guide
- Create a new source, select Hubspot (Airbyte) from the Source type dropdown and enter a name for it.
- On the source setup page, create a new Hubspot secret, enter a unique name for it.
- Select a Start date.
- You can use OAuth or a Private Apps to authenticate your HubSpot account.
- To authenticate using OAuth, ensure you have set the appropriate scopes for HubSpot, select OAuth option and click Authorise with Hubspot.
- To authenticate using a Private App, select Private App and enter the Access Token for your HubSpot account which you can obtain by following the instructions provided by Hubspot here (opens in a new tab).
Limitations
Engagements stream limitations:
- Objects in the
engagements
stream can have one of the following types:note
,email
,task
,meeting
,call
. Depending on the type of engagement, different properties is set for that object in theengagements_metadata
table in the destination:- A
call
engagement has a correspondingengagements_metadata
object with non-null values in thetoNumber
,fromNumber
,status
,externalId
,durationMilliseconds
,externalAccountId
,recordingUrl
,body
, anddisposition
columns. - An
email
engagement has a correspondingengagements_metadata
object with non-null values in thesubject
,html
, andtext
columns. In addition, there will be records in four related tables,engagements_metadata_from
,engagements_metadata_to
,engagements_metadata_cc
,engagements_metadata_bcc
. - A
meeting
engagement has a correspondingengagements_metadata
object with non-null values in thebody
,startTime
,endTime
, andtitle
columns. - A
note
engagement has a correspondingengagements_metadata
object with non-null values in thebody
column. - A
task
engagement has a correspondingengagements_metadata
object with non-null values in thebody
,status
, andforObjectType
columns.
- A
- In order to perform incremental sync for
Engagements
, it should be scheduled no rarer than once every 30 days, and should not sync more than 10k new records. If this is the case,EngagementsRecent
endpoint can be called. Otherwise, a different API endpoint is called (EngagementsAll
) and all records are synced.
Performance considerations
The connector is restricted by normal HubSpot rate limitations (opens in a new tab).
Some streams, such as workflows
, need to be enabled before they can be read using a source authenticated using an API Key
. If reading a stream that is not enabled, a log message returned to the output and the sync operation only sync the other available streams .
Example of the output message when trying to read workflows
stream with missing permissions for the API Key
:
_10{_10 "type": "LOG",_10 "log": {_10 "level": "WARN",_10 "message": 'Stream `workflows` cannot be proceed. This API Key (EXAMPLE_API_KEY) does not have proper permissions! (requires any of [automation-access])'_10 }_10}
Rate limits
HubSpot's API will rate limit (opens in a new tab) the amount of records you can sync daily, so make sure that you are on the appropriate plan if you are planning on syncing more than 250,000 records per day.