HubSpot integration summary

Stitch’s HubSpot integration replicates data using the HubSpot REST API. Refer to the Schema section for a list of objects available for replication.

HubSpot feature snapshot

A high-level look at Stitch's HubSpot (v2) integration, including release status, useful links, and the features supported in Stitch.

STITCH
Release status

Released on May 30, 2018

Supported by

Stitch

Stitch plan

Standard

API availability

Available

Singer GitHub repository

singer-io/tap-hubspot

REPLICATION SETTINGS
Anchor Scheduling

Supported

Advanced Scheduling

Supported

Table-level reset

Supported

Configurable Replication Methods

Unsupported

DATA SELECTION
Table selection

Supported

Column selection

Supported

Select all

Supported

TRANSPARENCY
Extraction Logs

Supported

Loading Reports

Supported

Connecting HubSpot

HubSpot setup requirements

To set up HubSpot in Stitch, you need:

  • For HubSpot CRM or Marketing products: Administrator permissions in HubSpot. Note: To replicate email events, you’ll need to have Super Admin permissions in HubSpot.

  • For the HubSpot Sales product: Sales Administrator permissions in HubSpot.

More information about HubSpot user roles and permissions can be found in HubSpot’s documentation.


Step 1: Add HubSpot as a Stitch data source

  1. Sign into your Stitch account.
  2. On the Stitch Dashboard page, click the Add Integration button.

  3. Click the HubSpot icon.

  4. Enter a name for the integration. This is the name that will display on the Stitch Dashboard for the integration; it’ll also be used to create the schema in your destination.

    For example, the name “Stitch HubSpot” would create a schema called stitch_hubspot in the destination. Note: Schema names cannot be changed after you save the integration.

Step 2: Define the historical replication start date

The Sync Historical Data setting defines the starting date for your HubSpot integration. This means that data equal to or newer than this date will be replicated to your data warehouse.

Change this setting if you want to replicate data beyond HubSpot’s default setting of 30 days. For a detailed look at historical replication jobs, check out the Syncing Historical SaaS Data guide.

Step 3: Create a replication schedule

In the Replication Frequency section, you’ll create the integration’s replication schedule. An integration’s replication schedule determines how often Stitch runs a replication job, and the time that job begins.

HubSpot integrations support the following replication scheduling methods:

To keep your row usage low, consider setting the integration to replicate less frequently. See the Understanding and Reducing Your Row Usage guide for tips on reducing your usage.

Step 4: Authorize Stitch to access HubSpot

  1. Next, you’ll be prompted to sign into your HubSpot account.
  2. After you log into HubSpot, a screen with a list of your HubSpot accounts will display. Click the account you want to connect to Stitch.

    Note that Stitch will only ever read your data. Stitch will never modify or delete any data in your HubSpot account.

  3. After the authorization process is successfully completed, you’ll be directed back to Stitch.
  4. Click All Done.

Step 5: Set objects to replicate

The last step is to select the tables and columns you want to replicate. Learn about the available tables for this integration.

Note: If a replication job is currently in progress, new selections won’t be used until the next job starts.

For HubSpot integrations, you can select:

  1. Individual tables and columns

  2. All tables and columns

Click the tabs to view instructions for each selection method.

  1. In the integration’s Tables to Replicate tab, locate a table you want to replicate.
  2. To track a table, click the checkbox next to the table’s name. A blue checkmark means the table is set to replicate.

  3. To track a column, click the checkbox next to the column’s name. A blue checkmark means the column is set to replicate.

  4. Repeat this process for all the tables and columns you want to replicate.
  5. When finished, click the Finalize Your Selections button at the bottom of the screen to save your selections.
  1. Click into the integration from the Stitch Dashboard page.
  2. Click the Tables to Replicate tab.

  3. In the list of tables, click the box next to the Table Names column.
  4. In the menu that displays, click Track all Tables and Fields:

    The Track all Tables and Fields menu in the Tables to Replicate tab

  5. Click the Finalize Your Selections button at the bottom of the page to save your data selections.

Initial and historical replication jobs

After you finish setting up HubSpot, its Sync Status may show as Pending on either the Stitch Dashboard or in the Integration Details page.

For a new integration, a Pending status indicates that Stitch is in the process of scheduling the initial replication job for the integration. This may take some time to complete.

Free historical data loads

The first seven days of replication, beginning when data is first replicated, are free. Rows replicated from the new integration during this time won’t count towards your quota. Stitch offers this as a way of testing new integrations, measuring usage, and ensuring historical data volumes don’t quickly consume your quota.


Removing the HubSpot integration

To completely disconnect Stitch from your HubSpot account, you need to delete the integration from Stitch, and uninstall the Stitch app from HubSpot.

Disconnecting HubSpot from Stitch will stop the replication of HubSpot data to your Stitch destination. There will be no impact to the HubSpot data, as Stitch is a read-only integration with HubSpot. All data that has already replicated to your Stitch destination will be maintained and under your control.

Step 1: Deleting your HubSpot integration

To delete your HubSpot integration from your Stitch account:

  1. Log in to your Stitch account and open the Integrations tab.
  2. Click your HubSpot integration and click Settings.
  3. Scroll down to the bottom of the page and click Delete.
  4. Click Delete to confirm.

Step 2: Uninstalling Stitch in your HubSpot account

To uninstall Stitch in your HubSpot account:

  1. Log in to your HubSpot account and click the Marketplaces account in the navigation bar.
  2. Under Manage, click Connected apps.
  3. Click the Actions drop-down menu in the Stitch app, and click Uninstall.
  4. In the dialog box that appears, enter uninstall in the text field and click Uninstall to confirm.

HubSpot table reference

Custom HubSpot field replication

Custom object properties, or fields, are supported by Stitch’s HubSpot integration. Stitch will query the properties list for each object and, if custom fields are available through HubSpot’s API, replicate them to your destination.

The data types of these fields will be the same as the data type in HubSpot. For example: A custom field containing date data will be a date field in your destination.

This is applicable to any object that supports custom fields in HubSpot.

HubSpot date/date-time values & UNIX timestamps

HubSpot uses UNIX-formatted timestamps in milliseconds to store date and datetime data. Stitch doesn’t perform any transformation during the replication process, meaning these values won’t be converted to timestamps before they’re loaded into your destination.

To account for this, consider creating a user-defined function to perform the conversion or building views on top of the raw data.


campaigns

The campaigns table contains info about the campaigns in your HubSpot account.

Replication Method

Full Table

Primary Key

id

Useful links

HubSpot documentation

campaigns schema on GitHub

HubSpot API method

Join campaigns with on
email_events
campaigns.id = email_events.emailCampaignId
forms
campaigns.id = forms.leadNurturingCampaignId

appId

INTEGER

appName

STRING

contentId

INTEGER

counters

OBJECT

bounce

INTEGER

click

INTEGER

deferred

INTEGER

delievered

INTEGER

delivered

INTEGER

dropped

INTEGER

forward

INTEGER

mta_dropped

INTEGER

open

INTEGER

print

INTEGER

processed

INTEGER

reply

INTEGER

sent

INTEGER

spamreport

INTEGER

statuschange

INTEGER

suppressed

INTEGER

unsubscribed

INTEGER

id

INTEGER

name

STRING

numIncluded

INTEGER

numQueued

INTEGER

subType

STRING

subject

STRING

type

STRING

companies

The companies table contains info about the companies your HubSpot contacts belong to.

Replication Method

Key-based Incremental

Primary Key

companyId

Useful links

HubSpot documentation

companies schema on GitHub

HubSpot API method

Join companies with on
contacts_by_company
companies.companyId = contacts_by_company.company-id
deals
companies.companyId = deals.associations.associatedCompanyIds
companies.portalId = deals.portalId
engagements
companies.companyId = engagements.associations.companyIds
companies.portalId = engagements.engagement.portalId
contact_lists
companies.portalId = contact_lists.portalId
contacts
companies.portalId = contacts.portal-id
companies.portalId = contacts.form-submissions.portal-id
email_events
companies.portalId = email_events.portalId
forms
companies.portalId = forms.portalId
owners
companies.portalId = owners.portalId
companies.portalId = owners.remoteList.portalId
subscription_changes
companies.portalId = subscription_changes.portalId
companies.portalId = subscription_changes.changes.portalId

companyId

INTEGER

portalId

INTEGER

contact_lists

The contact_lists table contains info about the contacts lists in your HubSpot account. Contact lists are used to segment contacts into groups, and there are two types: dynamic (smart lists) and static.

Replication Method

Key-based Incremental

Primary Key

listId

Replication Key

updatedAt

Useful links

HubSpot documentation

contact_lists schema on GitHub

HubSpot API method

Join contact_lists with on
contacts
contact_lists.listId = contacts.list-memberships.internal-list-id
contact_lists.portalId = contacts.portal-id
contact_lists.portalId = contacts.form-submissions.portal-id
engagements
contact_lists.listId = engagements.associations.contactIds
contact_lists.portalId = engagements.engagement.portalId
companies
contact_lists.portalId = companies.portalId
deals
contact_lists.portalId = deals.portalId
email_events
contact_lists.portalId = email_events.portalId
forms
contact_lists.portalId = forms.portalId
owners
contact_lists.portalId = owners.portalId
contact_lists.portalId = owners.remoteList.portalId
subscription_changes
contact_lists.portalId = subscription_changes.portalId
contact_lists.portalId = subscription_changes.changes.portalId

archived

BOOLEAN

createdAt

DATE-TIME

deleteable

BOOLEAN

dynamic

BOOLEAN

filters

ARRAY

checkPastVersions

BOOLEAN

filterFamily

STRING

operator

STRING

property

STRING

type

STRING

value

STRING

withinTimeMode

STRING

internalListId

INTEGER

listId

INTEGER

listType

STRING

metaData

OBJECT

name

STRING

parentId

INTEGER

portalId

INTEGER

readOnly

BOOLEAN

updatedAt

DATE-TIME

contacts

The contacts table contains info about individual contacts in HubSpot.

Contact properties

If properties have been set for the contact, additional fields beginning with properties__ will be included in the table. Note: Contacts will only have an entry for a property if that property has been set for the contact’s record.

HubSpot always types the value of properties fields as STRING despite the property type. Refer to HubSpot’s documentation for more info.

Replication Method

Key-based Incremental

Primary Key

vid

Replication Key

versionTimestamp

Useful links

HubSpot documentation

contacts schema on GitHub

HubSpot API method

Join contacts with on
contacts_by_company
contacts.canonical-vid = contacts_by_company.contact-id
contact_lists
contacts.list-memberships.internal-list-id = contact_lists.listId
contacts.portal-id = contact_lists.portalId
contacts.form-submissions.portal-id = contact_lists.portalId
engagements
contacts.list-memberships.internal-list-id = engagements.associations.contactIds
contacts.portal-id = engagements.engagement.portalId
contacts.form-submissions.portal-id = engagements.engagement.portalId
forms
contacts.form-submissions.form-id = forms.guid
contacts.portal-id = forms.portalId
contacts.form-submissions.portal-id = forms.portalId
companies
contacts.portal-id = companies.portalId
contacts.form-submissions.portal-id = companies.portalId
deals
contacts.portal-id = deals.portalId
contacts.form-submissions.portal-id = deals.portalId
email_events
contacts.portal-id = email_events.portalId
contacts.form-submissions.portal-id = email_events.portalId
owners
contacts.portal-id = owners.portalId
contacts.form-submissions.portal-id = owners.portalId
contacts.portal-id = owners.remoteList.portalId
contacts.form-submissions.portal-id = owners.remoteList.portalId
subscription_changes
contacts.portal-id = subscription_changes.portalId
contacts.form-submissions.portal-id = subscription_changes.portalId
contacts.portal-id = subscription_changes.changes.portalId
contacts.form-submissions.portal-id = subscription_changes.changes.portalId

associated-company

OBJECT

canonical-vid

INTEGER

form-submissions

ARRAY

conversion-id

STRING

form-id

STRING

page-url

STRING

portal-id

INTEGER

timestamp

DATE-TIME

title

STRING

identity-profiles

ARRAY

deleted-changed-timestamp

DATE-TIME

identities

ARRAY

timestamp

DATE-TIME

type

STRING

value

STRING

saved-at-timestamp

DATE-TIME

vid

INTEGER

is-contact

BOOLEAN

list-memberships

ARRAY

internal-list-id

INTEGER

is-member

BOOLEAN

static-list-id

INTEGER

timestamp

DATE-TIME

vid

INTEGER

merge-audits

ARRAY

canonical-vid

INTEGER

merged_from_email

OBJECT

selected

BOOLEAN

source-id

STRING

source-label

STRING

source-type

STRING

source-vids

ARRAY

timestamp

INTEGER

value

STRING

merged_to_email

OBJECT

selected

BOOLEAN

source-id

STRING

source-label

STRING

source-type

STRING

timestamp

INTEGER

value

STRING

num-properties-moved

INTEGER

timestamp

DATE-TIME

user-id

INTEGER

vid-to-merge

INTEGER

merged-vids

ARRAY

portal-id

INTEGER

profile-token

STRING

profile-url

STRING

versionTimestamp

DATE-TIME

vid

INTEGER

contacts_by_company

The contacts_by_company table contains contact and company ID pairs, allowing you to join contacts to relevant company data.

To replicate data from this table, you must also select the parent companies table.

Replication Method

Full Table

Primary Keys

contact-id

company-id

Useful links

HubSpot documentation

contacts_by_company schema on GitHub

Join contacts_by_company with on
contacts
contacts_by_company.contact-id = contacts.canonical-vid
companies
contacts_by_company.company-id = companies.companyId
deals
contacts_by_company.company-id = deals.associations.associatedCompanyIds
engagements
contacts_by_company.company-id = engagements.associations.companyIds

company-id

INTEGER

contact-id

INTEGER

custom_objects

Tables for custom CRM objects in your HubSpot account will have the same name as the object. For example, if you have a custom object named cars, the table will be named cars.

The fields listed below are standard fields; they are included in every custom object table. A field will be added for each property you select when configuring the table. The property names will be prefixed with property_. For example, if you have a property named model, it will appear as property_model.

Replication Method

Key-based Incremental

Primary Key

id

Replication Key

updatedAt

Useful links

HubSpot documentation

custom_objects schema on GitHub

archived

BOOLEAN

associations

OBJECT

calls

OBJECT

results

ARRAY

id

STRING

type

STRING

companies

OBJECT

results

ARRAY

id

STRING

type

STRING

contacts

OBJECT

results

ARRAY

id

STRING

type

STRING

conversation_session

OBJECT

deals

OBJECT

results

ARRAY

id

STRING

type

STRING

emails

OBJECT

results

ARRAY

id

STRING

type

STRING

meetings

OBJECT

results

ARRAY

id

STRING

type

STRING

notes

OBJECT

results

ARRAY

id

STRING

type

STRING

products

OBJECT

results

ARRAY

id

STRING

type

STRING

tasks

OBJECT

results

ARRAY

id

STRING

type

STRING

tickets

OBJECT

results

ARRAY

id

STRING

type

STRING

createdAt

DATE-TIME

id

STRING

updatedAt

DATE-TIME

deal_pipelines

The deal_pipelines table contains info about the deal stage and pipeline properties.

Replication Method

Full Table

Primary Key

pipelineId

Useful links

HubSpot documentation

deal_pipelines schema on GitHub

HubSpot API method

active

BOOLEAN

displayOrder

INTEGER

label

STRING

pipelineId

STRING

stages

ARRAY

active

BOOLEAN

closedWon

BOOLEAN

displayOrder

INTEGER

label

STRING

probability

NUMBER

stageId

STRING

staticDefault

BOOLEAN

deals

The deals table contains info about the deals in a HubSpot portal.

Replication Method

Key-based Incremental

Primary Key

dealId

Useful links

HubSpot documentation

deals schema on GitHub

HubSpot API method

Join deals with on
companies
deals.associations.associatedCompanyIds = companies.companyId
deals.portalId = companies.portalId
contacts_by_company
deals.associations.associatedCompanyIds = contacts_by_company.company-id
engagements
deals.associations.associatedCompanyIds = engagements.associations.companyIds
deals.dealId = engagements.associations.dealIds
deals.associations.associatedDealIds = engagements.associations.dealIds
deals.portalId = engagements.engagement.portalId
contact_lists
deals.portalId = contact_lists.portalId
contacts
deals.portalId = contacts.portal-id
deals.portalId = contacts.form-submissions.portal-id
email_events
deals.portalId = email_events.portalId
forms
deals.portalId = forms.portalId
owners
deals.portalId = owners.portalId
deals.portalId = owners.remoteList.portalId
subscription_changes
deals.portalId = subscription_changes.portalId
deals.portalId = subscription_changes.changes.portalId

associations

OBJECT

associatedCompanyIds

ARRAY

associatedDealIds

ARRAY

associatedVids

ARRAY

dealId

INTEGER

isDeleted

BOOLEAN

portalId

INTEGER

email_events

The email_events table contains info about email events and how recipients interact with content.

Email events and HubSpot permissions

Replicating this table requires Super Admin permissions in HubSpot. The Super Admin role is different than the Admin role, which you can read more about in HubSpot’s documentation.

If this table is selected and you don’t have Super Admin permissions in HubSpot, an error similar to the following will surface in the integration’s Extraction Logs:

tap - ERROR b'{"status":"error","message":"This oauth-token (**********) does not have proper permissions! (requires any of [email-access])", [...]

Replication Method

Key-based Incremental

Primary Key

id

Useful links

HubSpot documentation

email_events schema on GitHub

HubSpot API method

Join email_events with on
campaigns
email_events.emailCampaignId = campaigns.id
forms
email_events.emailCampaignId = forms.leadNurturingCampaignId
email_events.portalId = forms.portalId
companies
email_events.portalId = companies.portalId
contact_lists
email_events.portalId = contact_lists.portalId
contacts
email_events.portalId = contacts.portal-id
email_events.portalId = contacts.form-submissions.portal-id
deals
email_events.portalId = deals.portalId
engagements
email_events.portalId = engagements.engagement.portalId
owners
email_events.portalId = owners.portalId
email_events.portalId = owners.remoteList.portalId
subscription_changes
email_events.portalId = subscription_changes.portalId
email_events.portalId = subscription_changes.changes.portalId

appId

INTEGER

appName

STRING

browser

OBJECT

family

STRING

name

STRING

producer

STRING

producerUrl

STRING

type

STRING

url

STRING

created

DATE-TIME

deviceType

STRING

duration

INTEGER

emailCampaignGroupId

INTEGER

emailCampaignId

INTEGER

filteredEvent

BOOLEAN

from

STRING

hmid

STRING

id

STRING

ipAddress

STRING

linkId

INTEGER

location

OBJECT

city

STRING

country

STRING

state

STRING

portalId

INTEGER

recipient

STRING

response

STRING

sentBy

OBJECT

created

DATE-TIME

id

STRING

smtpId

STRING

subject

STRING

type

STRING

url

STRING

userAgent

STRING

engagements

The engagements table contains info about all the engagements in a HubSpot portal.

Replication Method

Key-based Incremental

Primary Key

engagement_id

Replication Key

lastUpdated

Useful links

HubSpot documentation

engagements schema on GitHub

HubSpot API method

Join engagements with on
companies
engagements.associations.companyIds = companies.companyId
engagements.engagement.portalId = companies.portalId
contacts_by_company
engagements.associations.companyIds = contacts_by_company.company-id
deals
engagements.associations.companyIds = deals.associations.associatedCompanyIds
engagements.associations.dealIds = deals.dealId
engagements.associations.dealIds = deals.associations.associatedDealIds
engagements.engagement.portalId = deals.portalId
contact_lists
engagements.associations.contactIds = contact_lists.listId
engagements.engagement.portalId = contact_lists.portalId
contacts
engagements.associations.contactIds = contacts.list-memberships.internal-list-id
engagements.engagement.portalId = contacts.portal-id
engagements.engagement.portalId = contacts.form-submissions.portal-id
owners
engagements.engagement.ownerId = owners.ownerId
engagements.engagement.ownerId = owners.remoteList.ownerId
engagements.engagement.portalId = owners.portalId
engagements.engagement.portalId = owners.remoteList.portalId
email_events
engagements.engagement.portalId = email_events.portalId
forms
engagements.engagement.portalId = forms.portalId
subscription_changes
engagements.engagement.portalId = subscription_changes.portalId
engagements.engagement.portalId = subscription_changes.changes.portalId

associations

OBJECT

companyIds

ARRAY

contactIds

ARRAY

dealIds

ARRAY

attachments

ARRAY

engagement

OBJECT

active

BOOLEAN

createdAt

DATE-TIME

id

INTEGER

lastUpdated

DATE-TIME

ownerId

INTEGER

portalId

INTEGER

timestamp

DATE-TIME

type

STRING

engagement_id

INTEGER

lastUpdated

DATE-TIME

metadata

OBJECT

bcc

ARRAY

email

STRING

body

STRING

cc

ARRAY

email

STRING

disposition

STRING

durationMilliseconds

INTEGER

endTime

INTEGER

externalAccountId

STRING

externalId

STRING

forObjectType

STRING

from

OBJECT

email

STRING

firstName

STRING

lastName

STRING

fromNumber

STRING

html

STRING

recordingUrl

STRING

startTime

INTEGER

status

STRING

subject

STRING

text

STRING

title

STRING

to

ARRAY

email

STRING

toNumber

STRING

forms

The forms table contains info about your HubSpot website forms.

Replication Method

Key-based Incremental

Primary Key

guid

Replication Key

updatedAt

Useful links

HubSpot documentation

forms schema on GitHub

HubSpot API method

Join forms with on
campaigns
forms.leadNurturingCampaignId = campaigns.id
email_events
forms.leadNurturingCampaignId = email_events.emailCampaignId
forms.portalId = email_events.portalId
contacts
forms.guid = contacts.form-submissions.form-id
forms.portalId = contacts.portal-id
forms.portalId = contacts.form-submissions.portal-id
companies
forms.portalId = companies.portalId
contact_lists
forms.portalId = contact_lists.portalId
deals
forms.portalId = deals.portalId
engagements
forms.portalId = engagements.engagement.portalId
owners
forms.portalId = owners.portalId
forms.portalId = owners.remoteList.portalId
subscription_changes
forms.portalId = subscription_changes.portalId
forms.portalId = subscription_changes.changes.portalId

action

STRING

campaignGuid

STRING

captchaEnabled

BOOLEAN

cloneable

BOOLEAN

createdAt

DATE-TIME

cssClass

STRING

deletable

BOOLEAN

deletedAt

INTEGER

editable

BOOLEAN

followUpId

STRING

formFieldGroups

ARRAY

default

BOOLEAN

fields

ARRAY

defaultValue

STRING

description

STRING

displayOrder

INTEGER

enabled

BOOLEAN

fieldType

STRING

groupName

STRING

hidden

BOOLEAN

isSmartField

BOOLEAN

label

STRING

labelHidden

BOOLEAN

name

STRING

options

ARRAY

description

STRING

displayOrder

INTEGER

doubleData

NUMBER

hidden

BOOLEAN

label

STRING

readOnly

BOOLEAN

value

STRING

placeholder

STRING

required

BOOLEAN

selectedOptions

ARRAY

type

STRING

unselectedLabel

STRING

validation

OBJECT

blockedEmailAddresses

ARRAY

data

STRING

message

STRING

name

STRING

useDefaultBlockList

BOOLEAN

isSmartGroup

BOOLEAN

richText

OBJECT

content

STRING

formType

STRING

guid

STRING

ignoreCurrentValues

BOOLEAN

inlineMessage

STRING

leadNurturingCampaignId

STRING

metaData

ARRAY

name

STRING

value

STRING

method

STRING

migratedFrom

STRING

name

STRING

notifyRecipients

STRING

performableHtml

STRING

portalId

INTEGER

redirect

STRING

submitText

STRING

tmsId

STRING

updatedAt

DATE-TIME

owners

The owners table contains info about the owners that exist in your HubSpot portal. Owners are created and updated in HubSpot when new users are added or when owners are synced from Salesforce to HubSpot.

Replication Method

Key-based Incremental

Primary Key

ownerId

Replication Key

updatedAt

Useful links

HubSpot documentation

owners schema on GitHub

HubSpot API method

Join owners with on
engagements
owners.ownerId = engagements.engagement.ownerId
owners.remoteList.ownerId = engagements.engagement.ownerId
owners.portalId = engagements.engagement.portalId
owners.remoteList.portalId = engagements.engagement.portalId
companies
owners.portalId = companies.portalId
owners.remoteList.portalId = companies.portalId
contact_lists
owners.portalId = contact_lists.portalId
owners.remoteList.portalId = contact_lists.portalId
contacts
owners.portalId = contacts.portal-id
owners.remoteList.portalId = contacts.portal-id
owners.portalId = contacts.form-submissions.portal-id
owners.remoteList.portalId = contacts.form-submissions.portal-id
deals
owners.portalId = deals.portalId
owners.remoteList.portalId = deals.portalId
email_events
owners.portalId = email_events.portalId
owners.remoteList.portalId = email_events.portalId
forms
owners.portalId = forms.portalId
owners.remoteList.portalId = forms.portalId
subscription_changes
owners.portalId = subscription_changes.portalId
owners.remoteList.portalId = subscription_changes.portalId
owners.portalId = subscription_changes.changes.portalId
owners.remoteList.portalId = subscription_changes.changes.portalId

activeUserId

INTEGER

createdAt

DATE-TIME

email

STRING

firstName

STRING

hasContactsAccess

BOOLEAN

isActive

BOOLEAN

lastName

STRING

ownerId

INTEGER

portalId

INTEGER

remoteList

ARRAY

active

BOOLEAN

id

INTEGER

ownerId

INTEGER

portalId

INTEGER

remoteId

STRING

remoteType

STRING

signature

STRING

type

STRING

updatedAt

DATE-TIME

userIdIncludingInactive

INTEGER

subscription_changes

The subscription_changes table contains info about changes made subscriptions.

Replication Method

Key-based Incremental

Primary Keys

recipient

portalId

timestamp

Useful links

HubSpot documentation

subscription_changes schema on GitHub

HubSpot API method

Join subscription_changes with on
companies
subscription_changes.portalId = companies.portalId
subscription_changes.changes.portalId = companies.portalId
contact_lists
subscription_changes.portalId = contact_lists.portalId
subscription_changes.changes.portalId = contact_lists.portalId
contacts
subscription_changes.portalId = contacts.portal-id
subscription_changes.changes.portalId = contacts.portal-id
subscription_changes.portalId = contacts.form-submissions.portal-id
subscription_changes.changes.portalId = contacts.form-submissions.portal-id
deals
subscription_changes.portalId = deals.portalId
subscription_changes.changes.portalId = deals.portalId
email_events
subscription_changes.portalId = email_events.portalId
subscription_changes.changes.portalId = email_events.portalId
engagements
subscription_changes.portalId = engagements.engagement.portalId
subscription_changes.changes.portalId = engagements.engagement.portalId
forms
subscription_changes.portalId = forms.portalId
subscription_changes.changes.portalId = forms.portalId
owners
subscription_changes.portalId = owners.portalId
subscription_changes.changes.portalId = owners.portalId
subscription_changes.portalId = owners.remoteList.portalId
subscription_changes.changes.portalId = owners.remoteList.portalId

changes

ARRAY

causedByEvent

OBJECT

created

DATE-TIME

id

STRING

change

STRING

changeType

STRING

portalId

INTEGER

source

STRING

subscriptionId

INTEGER

timestamp

DATE-TIME

portalId

INTEGER

recipient

STRING

timestamp

DATE-TIME

tickets

In HubSpot, tickets represents customer requests for help

Replication Method

Key-based Incremental

Primary Key

id

Replication Key

updatedAt

Useful links

tickets schema on GitHub

HubSpot API method

archived

BOOLEAN

associations

OBJECT

companies

OBJECT

results

ARRAY

id

STRING

type

STRING

contacts

OBJECT

results

ARRAY

id

STRING

type

STRING

deals

OBJECT

results

ARRAY

id

STRING

type

STRING

createdAt

DATE-TIME

id

STRING

updatedAt

DATE-TIME

workflows

The workflows table contains info about the workflows in your HubSpot portal.

Note: The workflows stream only supports contact-based workflows.

Replication Method

Key-based Incremental

Primary Key

id

Replication Key

updatedAt

Useful links

HubSpot documentation

workflows schema on GitHub

HubSpot API method

contactListIds

OBJECT

active

INTEGER

enrolled

INTEGER

steps

ARRAY

enabled

BOOLEAN

id

INTEGER

insertedAt

DATE-TIME

name

STRING

personaTagIds

ARRAY

type

STRING

updatedAt

DATE-TIME


Questions? Feedback?

Did this article help? If you have questions or feedback, feel free to submit a pull request with your suggestions, open an issue on GitHub, or reach out to us.