Hubspot
H
Hubspot

tap-hubspot (meltanolabs variant)

HubSpot is a CRM platform that provides tools for marketing, sales, and customer service.

Prerequisites

To connect to HubSpot, you will need a Private App access token:

  1. In your HubSpot account, go to Settings → Integrations → Private Apps
  2. Create a new private app and grant the scopes required for the streams you want to sync (see Required Scopes below)
  3. Copy the generated access token

Setup

In Meltano:

  1. Enter your HubSpot access token
  2. Set a start date for the initial extraction
  3. Optionally configure custom_object_types if you want to sync HubSpot custom CRM objects (Enterprise plan required)
  4. Optionally configure associations if you want to sync associations between CRM object types (see Associations below)

Available Streams

| Stream | Replication | Description | |--------|-------------|-------------| | contacts | Incremental | People in your HubSpot CRM | | companies | Incremental | Company records in your CRM | | deals | Incremental | Sales opportunities and pipeline deals | | leads | Incremental | Individual sales leads (objectTypeId: 0-136) | | line_items | Incremental | Products attached to deals | | goal_targets | Incremental | Sales and activity goal records | | calls | Incremental | Call engagement records | | communications | Incremental | Communication engagement records | | emails | Incremental | Email engagement records | | meetings | Incremental | Meeting engagement records | | notes | Incremental | Note engagement records | | postal_mail | Incremental | Postal mail engagement records | | tasks | Incremental | Task engagement records | | owners | Full Table | HubSpot users who own CRM records | | users | Full Table | Users in your HubSpot account | | teams | Full Table | HubSpot Teams and their member user IDs | | products | Full Table | Product library items | | tickets | Full Table | Customer support tickets | | quotes | Full Table | Sales quotes | | feedback_submissions | Full Table | Customer feedback survey responses | | ticket_pipelines | Full Table | Ticket pipeline and stage definitions | | deal_pipelines | Full Table | Deal pipeline and stage definitions | | email_subscriptions | Full Table | Email subscription type definitions | | properties | Full Table | Property definitions for all CRM object types |

Custom CRM object streams are created dynamically based on the custom_object_types setting. Each configured object type becomes its own stream named after the object's fullyQualifiedName (e.g. p12345_patches). Schemas are discovered automatically at sync time. Incremental replication uses hs_lastmodifieddate; falls back to full-table refresh if the property is absent.

Associations

Association streams are opt-in. No association stream exists until you set the associations setting. The value maps a HubSpot object type to the object types you want its associations with, for example {"contact": ["company", "deal"]}.

Each from/to pair creates one full-table stream named <from_object_type>_<to_object_type>_associations (e.g. contact_company_associations). Records come from the CRM v4 associations batch/read endpoint and contain from_id, to_id, association_type_id, association_type_category and association_type_label.

HubSpot does not update hs_lastmodifieddate when an association changes, so these streams always do a full resync.

Use HubSpot object type names, not the stream names above: contact, company, deal, lead, line_item, product, ticket, quote, call, communication, email, meeting, note, postal_mail, task, feedback_submission, goal. Any other standard or custom object type name is also valid, including a custom object's fullyQualifiedName.

Stream Fields

teams

| Field | Description | |-------|-------------| | id | Unique HubSpot ID for the team | | name | Display name of the team | | userIds | Array of HubSpot user IDs who are primary members of the team | | secondaryUserIds | Array of HubSpot user IDs who are secondary members of the team |

Required Scopes

| Stream | Required Scope | |--------|----------------| | contacts | crm.objects.contacts.read | | companies | crm.objects.companies.read | | deals | crm.objects.deals.read | | leads | crm.objects.leads.read | | owners | crm.objects.owners.read | | users | settings.users.read | | teams | settings.users.teams.read | | feedback_submissions | crm.objects.feedback_submissions.read | | calls | crm.objects.calls.read | | communications | crm.objects.communications.read | | emails | sales-email-read | | meetings | crm.objects.meetings.read | | notes | crm.objects.notes.read | | postal_mail | crm.objects.postal_mail.read | | tasks | crm.objects.tasks.read | | line_items | e-commerce | | products | e-commerce | | tickets | tickets | | ticket_pipelines | tickets | | deal_pipelines | crm.objects.deals.read | | quotes | crm.objects.quotes.read | | goal_targets | crm.objects.goals.read | | email_subscriptions | content | | properties | same scopes as the corresponding object type | | custom objects | crm.objects.custom.read and crm.schemas.custom.read (Enterprise only) | | associations | the read scope of both object types in each configured pair |

Settings

Access Token

HubSpot Private App access token

Start Date

Earliest record date to sync

End Date

Latest record date to sync

Custom Object Types

List of HubSpot custom CRM object type names to sync (e.g. ['p12345_patches']). Use the fullyQualifiedName from HubSpot Settings → Objects → Custom objects. Requires a HubSpot Enterprise plan and the crm.objects.custom.read and crm.schemas.custom.read scopes.

Associations

Mapping of a HubSpot object type to the object types to sync associations with (e.g. {"contact": ["company", "deal"]}). Each from/to pair creates a full-table stream named <from_object_type>_<to_object_type>_associations. No association streams are created unless this is set.

Flattening Enabled

A boolean value indicating whether or not to flatten the response data.

Flattening Max Depth

An integer value indicating the maximum depth to flatten the response data.

Meltano Cloud Connector

Hubspot connector is available on Meltano. It is built, maintained, supported, and tested by Meltano.

Why Meltano?
Expert supportDirect access to the team that built and maintains Meltano Cloud. Same-day responses during UK business hours. When something breaks, we fix it fast because we know exactly how it works.
Rigorously testedEvery connector goes through comprehensive testing and quality checks before production. Daily monitoring catches issues before they hit your pipelines. We don't just wrap open-source taps and hope for the best. We validate, we test, we maintain.
No maintenance overheadAPI changes. Connector updates. Schema drift. Breaking changes from upstream sources. We handle it all. Your team focuses on using data. Our team focuses on making sure it's there when you need it.
Access to Meltano Slack communityJoin 5,500+ data engineers and analytics practitioners. The community is active, helpful, and always on. Good for quick questions, sharing patterns, and learning what others are building.