HubSpot
H
HubSpot

target-hubspot (meltanolabs variant)

HubSpot is a CRM platform that provides tools for marketing, sales, and customer service. This loader writes records into HubSpot CRM objects through the CRM Imports API: each batch of up to 10,000 records becomes one CSV import, and the loader waits for HubSpot to finish it.

Prerequisites

You need a Private App access token:

  1. In your HubSpot account, go to Settings → Integrations → Private Apps
  2. Create a private app with the crm.import scope, plus write scopes for each object you load (for example crm.objects.contacts.write)
  3. Copy the generated access token

Data requirements

HubSpot maps CSV columns to properties through column_mapping:

  • Add one column_mapping entry for each stream property you want to load, with a columnName that matches the property name exactly. The loader fails the run when an entry names a property the stream does not have, and leaves properties without an entry out of the import.
  • column_mapping applies to every stream, so load one stream per pipeline.
  • Mark the column that identifies existing records with columnType: HUBSPOT_OBJECT_ID (the record ID) or HUBSPOT_ALTERNATE_ID (a unique property such as a contact's email).
  • Enable flattening_enabled when the stream has nested objects. Otherwise the loader writes them as JSON text.
  • The loader writes date values in date_format, and date and time values as UNIX timestamps in milliseconds.

An import that fails, or finishes with row errors, fails the run, and the loader logs the first ten row errors. Open Import history in HubSpot for the full list.

Example

[
  {"columnName": "email", "propertyName": "email", "columnObjectTypeId": "0-1", "columnType": "HUBSPOT_ALTERNATE_ID"},
  {"columnName": "first_name", "propertyName": "firstname", "columnObjectTypeId": "0-1"},
  {"columnName": "last_name", "propertyName": "lastname", "columnObjectTypeId": "0-1"}
]

Settings

Access Token

Your HubSpot private app access token. See the docs for more details.

Column Mapping

One object per stream property, with these keys:

  • columnName — the stream property name to load
  • propertyName — the internal name of the HubSpot property (in HubSpot, Settings → Data Management → Properties, then the code icon next to the property label)
  • columnObjectTypeId — the object type ID, for example 0-1 (contacts), 0-2 (companies), 0-3 (deals), 0-5 (tickets) or 2-123456 (a custom object)
  • columnType — optional; HUBSPOT_OBJECT_ID or HUBSPOT_ALTERNATE_ID for the column that identifies existing records

Date Format

The format the loader writes date values in, and HubSpot reads them in. Date and time values are written as UNIX timestamps in milliseconds.

Import Operations

Whether the import only creates records, only updates existing records, or does both. Applies to every object type in column_mapping.

Import Timeout Seconds

How long to wait for HubSpot to finish each import before failing the run.

Stream Maps

Config object for stream maps capability. For more information check out Stream Maps.

Stream Map Config

User-defined config values to be used within map expressions.

Flattening Enabled

'True' to enable schema flattening and automatically expand nested properties.

Flattening Max Depth

The max depth to flatten schemas.

Meltano Cloud Connector

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

Why Meltano Cloud?
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.
Ingest & transform data with AIConnect Claude or any MCP-compatible assistant to Meltano Cloud. Add connectors, run pipelines, build dbt models and diagnose failed runs in plain English, against the same Git-backed project your team works in.
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.