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
engagementsstream 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_metadatatable in the destination:- A
callengagement has a correspondingengagements_metadataobject with non-null values in thetoNumber,fromNumber,status,externalId,durationMilliseconds,externalAccountId,recordingUrl,body, anddispositioncolumns. - An
emailengagement has a correspondingengagements_metadataobject with non-null values in thesubject,html, andtextcolumns. In addition, there will be records in four related tables,engagements_metadata_from,engagements_metadata_to,engagements_metadata_cc,engagements_metadata_bcc. - A
meetingengagement has a correspondingengagements_metadataobject with non-null values in thebody,startTime,endTime, andtitlecolumns. - A
noteengagement has a correspondingengagements_metadataobject with non-null values in thebodycolumn. - A
taskengagement has a correspondingengagements_metadataobject with non-null values in thebody,status, andforObjectTypecolumns.
- 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,EngagementsRecentendpoint 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.