Extract HubSpot CRM and marketing data
The HubSpot connector extracts data from your HubSpot account: contacts, companies, deals, tickets, pipelines, forms, marketing emails, and more
Objective
The HubSpot connector extracts data from your HubSpot account: contacts, companies, deals, tickets, pipelines, forms, marketing emails, and more.
25 endpoint types covering the full HubSpot API: CRM, Marketing, CMS, Automation, and Settings.
The connector returns raw JSON from the HubSpot API. The platform automatically flattens nested objects into columns and stores the result in the lakehouse. No manual schema definition needed.
Prerequisites: A HubSpot account (the free plan is sufficient for API access. No paid plan required) with at least a few test records (contacts, companies) so you have data to extract. Sign up at app.hubspot.com/signup-hubspot/crm.
1. Get an API Token
Create a Private App
- Log in to HubSpot
- Go to Settings (gear icon) > Integrations > Private Apps
- Click Create a private app
- Give it a name (e.g.
data-connector) - Go to the Scopes tab and select the required permissions (see next section)
- Click Create app > Continue creating
- Copy the generated token (starts with
pat-na1-...orpat-eu1-...)
Note: Private Apps may appear under a "Legacy" section in HubSpot's UI, but they remain the standard for server-side API integrations. "Personal Access Keys" only work for the HubSpot CLI, NOT for the REST API.
Configure Credentials
Paste your token in the HubSpot API Key field:
2. Recommended Scopes
Minimum scopes (basic CRM)
To extract contacts, companies, deals, and tickets:
Additional scopes (as needed)
Start with minimum scopes. You can always add more later in your Private App settings.
3. Available Endpoint Types
CRM (relational data)
Marketing
CMS (content)
Automation
Settings / Admin
4. Add a HubSpot source on Data Platform
- In the Data Platform Connectors, find HubSpot in the source store and click Select.
- Paste the Private App token from step 1 into the HubSpot API Key field.
- Click Connect to verify the credentials.
- Click Add an Endpoint, choose an endpoint type from the dropdown (e.g.
crm_objects), then fill in the parameters that endpoint requires (for exampleobject_type: contacts, an optionalproperties_filter, and an optionalmax_items). - Repeat step 4 for every additional endpoint you want to ingest in this source. Each endpoint becomes a separate table in the lakehouse.
- Name the source and click Create.
The technical name cannot be changed after the source is created. It is used when opening the source via the Data Platform SDK.
5. Quick Example: Extract Contacts
- Endpoint:
crm_objects - Object Type:
contacts - Properties Filter:
email, firstname, lastname, phone, company, jobtitle - Max Items:
100(or empty to extract all)
The connector returns raw JSON from the HubSpot API. The platform automatically flattens nested objects (e.g. properties.email becomes a column properties_email) and stores the result in the lakehouse.
6. Best Practices
Use the properties filter
By default, the connector uses HubSpot's native default set (6 core fields for contacts: email, firstname, lastname, createdate, lastmodifieddate, hs_object_id). Use properties_filter to pick a specific list of properties.
Start with max_items
When setting up, set max_items to 10 or 100 to test quickly. Remove the limit once you're satisfied with the output.
Pipelines as a reference table
Extract pipelines separately to get a reference table. You can then join with deals/tickets on the pipeline and stage fields.
Use properties_meta to discover fields
The properties_meta endpoint returns the full data dictionary for any object type. Useful to find out which fields exist and their types.
7. HubSpot Plan Limits
Some endpoints require paid plans:
Endpoints not available on your plan or missing the required scope return a 403 error. The connector does not catch these errors. The extraction will fail with an HTTPError. Make sure your Private App has the necessary scopes enabled before selecting an endpoint.
Note: The plan classification above is approximate. Some 403 errors may be caused by missing scopes on your Private App rather than plan limitations. If an endpoint returns 403, check your Private App's scope configuration first.
For detailed technical information (auth internals, full endpoint reference, scopes, pagination, output format, limitations), see the HubSpot Technical Reference.
Go further
If you need training or technical assistance to implement our solutions, contact your sales representative or click on this link to get a quote and ask our Professional Services experts for a custom analysis of your project.
Ask questions, give your feedback and interact directly with the team building the Data Platform on the dedicated Discord channel.
If you need support with your OVHcloud services, create a request in our Help Centre.
Join our community of users.

