Skip to main content

HubSpot Source

Connect HubSpot CRM as a source to extract data from your marketing, sales, and service operations. Supaflow supports incremental sync for CRM objects (contacts, companies, deals, tickets) and full refresh for marketing and engagement data.

For an overview of capabilities and use cases, see the HubSpot connector page. To run pipelines natively inside Snowflake, see Snowflake Native ETL.

Prerequisites

Before you begin, ensure you have:

  • A HubSpot account with Admin access (required for OAuth authorization)
  • A configured destination in Supaflow (e.g., Snowflake or S3 Data Lake)

Supported Objects

Supaflow discovers objects automatically from your HubSpot account. The following categories of objects are supported:

CRM Objects

ObjectSync ModeCursor FieldDescription
ContactsIncrementalupdatedAtPeople in your CRM -- leads, customers, subscribers
CompaniesIncrementalupdatedAtOrganizations associated with contacts
DealsIncrementalupdatedAtRevenue opportunities in your sales pipeline
TicketsIncrementalupdatedAtSupport requests from your service hub
ProductsIncrementalupdatedAtItems in your product catalog
Line ItemsIncrementalupdatedAtIndividual items within deals
QuotesIncrementalupdatedAtSales quotes linked to deals
Custom ObjectsIncrementalupdatedAtAny custom objects defined in your HubSpot account

Marketing Objects

ObjectSync ModeDescription
Email EventsFull RefreshOpens, clicks, bounces, unsubscribes for marketing emails
Marketing EmailsFull RefreshEmail campaign definitions and metadata
FormsFull RefreshForm definitions used for lead capture
Form SubmissionsFull RefreshIndividual form submission records

Engagement Objects

ObjectSync ModeDescription
CallsFull RefreshLogged phone calls
EmailsFull RefreshLogged email interactions
MeetingsFull RefreshScheduled meetings
NotesFull RefreshNotes attached to CRM records
TasksFull RefreshTasks assigned to team members

Lookup Tables

ObjectSync ModeDescription
OwnersFull RefreshHubSpot users who own records
PipelinesFull RefreshDeal and ticket pipeline definitions
Pipeline StagesFull RefreshStages within each pipeline
Contact ListsFull RefreshStatic and dynamic list definitions
PropertiesFull RefreshProperty definitions for each object type

Sync Modes

Incremental sync is available for CRM objects. Supaflow uses HubSpot's Search API to query for records modified since the last sync. Only changed records are fetched, which reduces API usage and sync duration.

Full refresh is used for objects where the HubSpot API does not support filtered queries (marketing events, engagement objects, lookup tables). All records are fetched on each sync.

The sync mode is configured automatically per object based on API capabilities. You do not need to configure it manually.

Authentication

Supaflow uses OAuth 2.0 to connect to HubSpot. The OAuth flow requests the following scopes:

  • crm.objects.contacts.read -- Read contacts
  • crm.objects.companies.read -- Read companies
  • crm.objects.deals.read -- Read deals
  • crm.objects.custom.read -- Read custom objects
  • crm.schemas.custom.read -- Read custom object schemas
  • tickets -- Read tickets
  • content -- Read marketing content
  • forms -- Read forms and form submissions
  • e-commerce -- Read products and line items
  • crm.objects.owners.read -- Read owner information

If you add new scopes after the initial connection (e.g., HubSpot adds a new object type), you may need to reconnect the source to grant the additional permissions.

Configuration

Step 1: Authorize Connection

Click Authorize to connect to your HubSpot account using OAuth. You will be redirected to your HubSpot account.

Step 2: Select Account

  1. Log in to your HubSpot account, if not already logged in
  2. In the Choose an Account list, select the account you want to sync
  3. Click Connect

Step 3: Complete Setup

  1. You will be redirected back to your datasource form in Supaflow
  2. Click Test & Save to verify your connection and save the source

Step 4: Select Objects

After the connection is saved, Supaflow discovers your HubSpot schema automatically. In the pipeline wizard:

  1. Select the objects you want to sync
  2. For each object, review the fields and deselect any you don't need
  3. Supaflow will configure the sync mode automatically based on the object type

Rate Limiting

HubSpot enforces API rate limits that vary by plan:

HubSpot PlanRate Limit
Free / Starter100 requests per 10 seconds
Professional150 requests per 10 seconds
Enterprise200 requests per 10 seconds

Supaflow respects these limits automatically. If a rate limit is hit, the connector backs off and retries. For large accounts with many objects, consider:

  • Scheduling syncs during off-peak hours to avoid competing with other integrations
  • Syncing fewer objects per pipeline if you are close to your API limit
  • Upgrading your HubSpot plan for higher limits

Daily API call limits also apply (varies by plan). Check HubSpot Settings > Account > Usage & Limits for your current usage.

Schema Evolution

When you add new fields or custom objects in HubSpot, Supaflow detects the changes automatically on the next sync:

  • New fields are added to the destination table
  • New custom objects appear in the schema selection and can be enabled
  • Removed fields are not dropped from the destination (data is preserved)
  • Type changes (e.g., a text field changed to a number) are handled based on your schema evolution settings

Troubleshooting

OAuth authorization failed

Problem: Cannot complete OAuth flow, redirect fails, or "Access denied" error.

Solutions:

  1. Verify you have Admin permissions in HubSpot
  2. Clear browser cookies and cache, or try in incognito/private mode
  3. Disable popup blockers for this site
  4. Try a different browser (Chrome, Firefox, or Edge)

Objects not appearing

Problem: Some HubSpot objects don't appear in schema discovery.

Solutions:

  1. Verify your HubSpot user has access to the objects
  2. For custom objects, ensure they are published in HubSpot
  3. Check that OAuth scopes include the necessary permissions -- reconnect if scopes were added after the initial connection
  4. Force a schema refresh in Supaflow

Data not syncing

Problem: Data appears in HubSpot but not in the destination.

Solutions:

  1. Verify the objects are selected in the pipeline schema
  2. Review pipeline execution logs for errors or warnings
  3. For incremental objects, check that the cursor position is correct in the pipeline details
  4. Ensure the HubSpot user has read access to the relevant properties

Rate limit errors

Problem: "Rate limit exceeded" error or sync stops mid-process.

Solutions:

  1. Check your current API usage in HubSpot Settings > Account > Usage & Limits
  2. Schedule syncs during off-peak hours
  3. Reduce the number of objects synced simultaneously
  4. Consider upgrading your HubSpot plan for higher limits

Support

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