Skip to main content

HubSpot Source

Configure HubSpot as a source for supported CRM, marketing, engagement, commerce, list, and account data. Use OAuth for user-delegated access or a Private App access token managed by your team.

For capabilities and use cases, see the HubSpot connector page. For the Snowflake-specific workflow, see HubSpot to Snowflake.

Prerequisites

Before you begin, ensure you have:

  • A HubSpot account with access to the objects and properties you want to sync
  • For OAuth, a user allowed to authorize the Supaflow app for that HubSpot account
  • For Private App authentication, an active access token with read scopes for the required objects

HubSpot controls which objects are available to an account and which scopes a user or Private App can grant. The connection can discover only the supported objects and properties available to its grant.

Supported Objects

CRM Objects

ObjectSync ModeDescription
ContactsIncrementalPeople in the CRM
CompaniesIncrementalOrganizations associated with CRM work
DealsIncrementalSales opportunities in pipelines
TicketsIncrementalCustomer service records
ProductsIncrementalProduct catalog records
Line ItemsIncrementalProducts or services attached to commercial records
QuotesIncrementalSales quotes
LeadsIncrementalProspects in the sales workspace
GoalsIncrementalSales targets

Marketing and Engagement

ObjectSync ModeDescription
Marketing EmailsIncrementalMarketing email definitions and metadata
Email EventsIncrementalAvailable delivery and engagement events
Behavioral EventsFull RefreshBehavioral events associated with CRM records
CallsIncrementalLogged calls
EmailsIncrementalLogged one-to-one emails
MeetingsIncrementalScheduled meetings
NotesIncrementalNotes attached to CRM records
TasksIncrementalAssigned tasks
Postal MailIncrementalLogged postal-mail activities
CommunicationsIncrementalSupported logged messages

Commerce Objects

ObjectSync ModeDescription
InvoicesIncrementalIssued invoices
PaymentsIncrementalCommerce payment records
SubscriptionsIncrementalRecurring subscription records
CartsIncrementalShopping carts from connected stores
OrdersIncrementalCommerce orders

Lists and Lookup Data

ObjectSync ModeDescription
Contact Lists and MembershipsFull RefreshContact list definitions and membership rows
Company Lists and MembershipsFull RefreshCompany list definitions and membership rows
OwnersFull RefreshRecord owners
TeamsFull RefreshTeam definitions
UsersFull RefreshHubSpot users
RolesFull RefreshPermission roles
Deal, Ticket, and Lead PipelinesFull RefreshPipeline definitions
Pipeline StagesFull RefreshStages within supported pipelines

For selected objects, the discovered schema can also include configured association tables or property-history tables. These outputs follow the mappings and object features shipped with the connector; they are not automatic coverage of every portal-specific association or history type.

Not Yet Supported

  • Portal-specific custom objects — custom properties on supported objects are included, but automatic discovery of custom objects defined in the portal is not currently implemented.
  • Forms and form submissions — these records are not currently available as selectable objects.

Sync Behavior

Supaflow tracks progress separately for each incremental object. After an initial load, a scheduled run reads source rows after that object's saved position. An optional lookback can overlap the previous window to account for late-arriving updates.

Behavioral Events, lists, memberships, owners, teams, users, roles, and pipeline lookup data use full refresh. Their current rows are read again on each run.

For eligible objects, the connector can also request archived records that HubSpot still exposes. This is not hard-delete capture: once HubSpot permanently removes a record, an ordinary object read has no deleted row to return.

Authentication

OAuth

OAuth opens HubSpot's authorization flow and manages token refresh automatically. Select the HubSpot account to connect and approve the requested read access. If the account later gains access to more objects, reconnect OAuth so HubSpot can update the grant.

Private App Access Token

Use a Private App access token for a service-style connection managed by your team. Create the Private App in HubSpot, grant read scopes only for the objects the pipeline needs, and copy its access token into Supaflow.

Rotating or revoking the token requires updating the source connection before its next run.

Configuration

Authentication Type*

How Supaflow connects to HubSpot.
Options:

  • oauth — Browser-based authorization with automatic token refresh
  • private_app — Access token from a HubSpot Private App

Default: oauth

Private App Access Token*

Shown when Authentication Type is private_app. Enter the active token from the HubSpot Private App.
Stored encrypted

Rate Limit

Leave this setting at its default. HubSpot requests use Supaflow's built-in pacing, so this value does not change the request rate.

Page Size

Number of records requested per page. Keep the default unless support or a measured source constraint calls for a smaller value.

Schema Refresh Interval

How often Supaflow rediscovers supported objects and properties.
Options:

  • 0 — Refresh before every pipeline execution
  • -1 — Disable automatic schema refresh
  • Positive value — Refresh interval in minutes

Default: 60

Incremental Lookback

Number of seconds to overlap the previous incremental window. Use a small overlap when late-arriving HubSpot updates otherwise fall behind the saved position.
Default: 0

After configuring the connection, click Test & Save. Supaflow verifies the credential and discovers the supported schema available to it.

Rate Limiting

HubSpot applies API usage limits. Supaflow retries throttled requests with backoff and follows HubSpot retry timing when it is provided.

Large selections may take longer when other integrations use the same account. Narrow the selected object or field scope, avoid overlapping schedules, or run large jobs during a quieter period.

Troubleshooting

OAuth authorization fails

  1. Confirm the HubSpot user can authorize apps for the selected account.
  2. Confirm the account provides access to the required products and objects.
  3. Allow the HubSpot sign-in and redirect in the browser, then retry authorization.
  4. Reconnect the source if the previous grant was revoked.

A Private App token is rejected

  1. Confirm the token is active and was copied without extra spaces.
  2. Confirm the Private App has read scopes for the required objects.
  3. Confirm the HubSpot account still contains the Private App.
  4. Rotate the token in HubSpot and update the source if the old token was revoked.

Objects or properties are missing

  1. Confirm the item is in the supported catalog above.
  2. Confirm the connected user or Private App can read it.
  3. Reconnect OAuth after changing permissions or subscription access.
  4. Set Schema Refresh Interval to 0, then test and save the source again.
  5. Review Job Details when HubSpot rejects a specific object.

Portal-specific custom objects and forms are not currently selectable, even if they exist in the connected account.

A table runs full refresh

Check its sync mode in the supported-object tables above. Behavioral Events, lists, memberships, and lookup data intentionally use full refresh rather than the saved-progress path used by supported incremental objects.

An archived or deleted record is missing

Archived-record reads apply only to eligible objects while HubSpot still exposes the record. A record that has been permanently removed cannot be emitted as a hard-delete event by this connector.

A run is slowed by rate limiting

Supaflow retries throttled requests automatically. If contention persists, reduce object or field scope, avoid overlapping HubSpot schedules, or run large jobs during a quieter period.



Support

Need help? Contact us at support@supa-flow.io