
Configuring HubSpot as a Source
In the Sources tab, click on the “Add source” button located on the top right of your screen. Then, select the HubSpot option from the list of connectors. Click Next and you’ll be prompted to add your access.1. Add account access
Configure the following settings:- Authentication Mode: The authentication mode to use. You can select Sign in with HubSpot (OAuth) or use a HubSpot private app token. If you choose to Sign in with HubSpot, you’ll be prompted to log in with an account that has Super Admin permissions in order to install the Nekt app into the workspace.
- Start Date: The date of the first record you want to sync with.
- Enable Leads Stream (Optional): Enable to extract leads data (requires HubSpot Pro, Enterprise, or Enterprise Plus).
- Associations (Optional): Configure which associations to extract per object type. Each entry specifies a HubSpot entity name (e.g.
deals,contacts,companies,tickets,leads,calls,emails,meetings,notes,tasks,postal_mail,communication, or a custom object name) and a comma-separated list of associated entities to retrieve for that object. Custom object IDs (e.g.2-12345) are also supported in the association list. Enable only if necessary, since it significantly increases the extraction time. - Extract Contact Property History (Optional): Enable to track property changes for contacts. Enable only if necessary, since it significantly increases the extraction time.
- Contact Property History Fields (Optional): If enabled above, specify which properties to track (comma-separated). Default:
lifecyclestage, lead_status. - Extract Deal Property History (Optional): Enable to track property changes for deals. Enable only if necessary, since it significantly increases the extraction time.
- Deal Property History Fields (Optional): If enabled above, specify which properties to track (comma-separated). Default:
dealstage. - Extract Company Property History (Optional): Enable to track property changes for companies. Enable only if necessary, since it significantly increases the extraction time.
- Company Property History Fields (Optional): If enabled above, specify which properties to track (comma-separated). Default:
name. - Extract Ticket Property History (Optional): Enable to track property changes for tickets. Enable only if necessary, since it significantly increases the extraction time.
- Ticket Property History Fields (Optional): If enabled above, specify which properties to track (comma-separated). Default:
hs_pipeline_stage, hs_ticket_priority. - Property objects (Optional): Comma-separated list of HubSpot object types to fetch property definitions for. Default:
calls, communication, company, contacts, deals, email, line_item, meeting, notes, postal_mail, product, task, tickets. - Properties as JSON string (Optional): When enabled, the
propertiescolumn in CRM object streams (contacts, companies, deals, tickets, etc.) is emitted as a JSON string instead of a structured object. Enable this if your HubSpot account has a very large number of custom properties and you are hitting destination limits on nested fields (e.g. BigQuery’s 10,000 field limit). Default:false.
Enabling associations and property history options will increase extraction time. Enable only the object types and properties you actually need.
2. Select streams
Choose which data streams you want to sync. For faster extractions, select only the streams that are relevant to your analysis. You can select entire groups of streams or pick specific ones.Tip: The stream can be found more easily by typing its name.Select the streams and click Next.
3. Configure data streams
Customize how you want your data to appear in your catalog. Select the desired layer where the data will be placed, a folder to organize it inside the layer, a name for each table (which will effectively contain the fetched data) and the type of sync.- Layer: choose between the existing layers on your catalog. This is where you will find your new extracted tables as the extraction runs successfully.
- Folder: a folder can be created inside the selected layer to group all tables being created from this new data source.
- Table name: we suggest a name, but feel free to customize it. You have the option to add a prefix to all tables at once and make this process faster!
- Sync Type: you can choose between INCREMENTAL and FULL_TABLE. Read more about Sync Types here.
4. Configure data source
Describe your data source for easy identification within your organization, not exceeding 140 characters. To define your Trigger, consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times). Optionally, you can define some additional settings:- Configure Delta Log Retention and determine for how long we should store old states of this table as it gets updated. Read more about this resource here.
- Determine when to execute an Additional Full Sync. This will complement the incremental data extractions, ensuring that your data is completely synchronized with your source every once in a while.
5. Check your new source
You can view your new source on the Sources page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.Streams and Fields
Available streams
The table below lists every stream, its slug (the exact identifier to pass when creating the source via API) and a short description. Streams marked optional are only discovered when the corresponding setting is enabled.Fields by stream
Below you’ll find all available data streams from HubSpot and their corresponding fields:Alongside all the fields listed here, most of the streams have additional/custom fields from HubSpot, specific to each workspace and account type. These fields are dynamically included based on your HubSpot configuration.Additionally, if your HubSpot Private App Token lacks the required scopes to access a specific stream or object (such as Custom Objects), the connector will gracefully skip it during extraction instead of failing the sync. If you are missing expected streams, verify your token permissions in HubSpot.
Archived Deals
Archived Deals
Archived sales deals and opportunities. Fetches archived deals via the list endpoint.Note: This stream is full-table replication only, as HubSpot’s search API does not return archived records.
Archived Tasks
Archived Tasks
Archived task assignments and to-dos. Fetches archived tasks via the list endpoint.Note: This stream is full-table replication only, as HubSpot’s search API does not return archived records.
Audit Logs
Audit Logs
Account activity audit logs. Tracks user actions such as CRM object creation, property updates, and security activity.
Note: Requires a HubSpot Enterprise account and the
account-info.security.read scope.Calls
Calls
Call activity and engagement data.
Communications
Communications
Communication activities and engagements (SMS, WhatsApp, LinkedIn messages, etc.).
Companies
Companies
Company and organization records.
Contacts
Contacts
Individual contact records and their properties.
Custom Objects
Custom Objects
Custom objects defined in your HubSpot account. These are automatically discovered and extracted.Note: Each custom object will appear as a separate stream with its own name based on the object definition in HubSpot. The fields are dynamic and depend on the custom object schema configured in your HubSpot account.
Deals
Deals
Sales deals and opportunities.
Deal Pipelines
Deal Pipelines
Deal pipeline configurations and stages for sales workflows.
Emails
Emails
Email communications and messaging data.
Email Subscriptions
Email Subscriptions
Email subscription type definitions (e.g., marketing, legal basis) used for consent and preferences.
This stream is currently disabled and will not appear in the stream selection list.
Forms
Forms
Form definitions and configurations.
Form Submissions
Form Submissions
Submitted form data and responses.
Feedback Submissions
Feedback Submissions
Feedback and survey submissions from contacts.
This stream is currently disabled and will not appear in the stream selection list.
Goals
Goals
Goal targets and tracking for sales and marketing performance.
This stream is currently disabled and will not appear in the stream selection list.
Leads
Leads
Lead records for sales prospecting.Note: This stream is only available for accounts with HubSpot Pro, Enterprise, or Enterprise Plus. Enable via “Enable Leads Stream” in the source configuration.
Lead Pipelines
Lead Pipelines
Lead pipeline configurations and stages for sales workflows.Note: This stream is only available for accounts with HubSpot Pro, Enterprise, or Enterprise Plus. Enable via “Enable Leads Stream” in the source configuration.Key Fields:
Line Items
Line Items
Individual items within deals and quotes.
Marketing Emails
Marketing Emails
Marketing email campaigns and their performance statistics.
Meetings
Meetings
Scheduled meetings and appointments.
Notes
Notes
Notes and annotations on records.
Properties
Properties
Custom properties and field definitions for all HubSpot objects. This stream merges all individual property streams into a single comprehensive properties table. The
hubspot_object field indicates which object the property belongs to.Owners
Owners
HubSpot user and owner information.
Postal Mail
Postal Mail
Postal mail activities and engagements for direct mail campaigns.
Products
Products
Product catalog and inventory information.
Quotes
Quotes
Sales quotes and proposals.
Services
Services
HubSpot “Services” standard object records (objectTypeId 0-162).Note: This stream must be activated in your HubSpot account and granted via token scope. If the necessary permissions are missing, the stream will be automatically skipped without breaking the extraction.
Tasks
Tasks
Task assignments and to-dos.
Tickets
Tickets
Customer support tickets and service requests.
Ticket Pipelines
Ticket Pipelines
Ticket pipeline configurations and stages for customer support workflows.
Users
Users
HubSpot portal user information.
Users Properties
Users Properties
CRM Users object (HubSpot object type “users”). Distinct from the standard Key Fields:
Users stream which only exposes basic settings API fields (id, email, roles). This stream reads the CRM Users object and exposes its full property set.Requires the
crm.objects.users.read scope on the HubSpot private app, which is sensitive and must be granted explicitly by a Super Admin. Accounts/tokens without it will skip extracting this stream.Data Model
The following diagram illustrates the relationships between the core data streams in HubSpot. The arrows indicate the common links between different CRM entities.Common data transformations
Many streams from HubSpot send all the relevant data in a single column, calledproperties. For you to remove them from this single array and transform each one in a new and individual column, use the following template:
Common data transformations
Many streams from HubSpot send all the relevant data in a single column, calledproperties. For you to remove them from this single array and transform each one in a new and individual column, use the following template:
Use Cases for Data Analysis
HubSpot data can be leveraged for comprehensive business intelligence and analytics. Here are some common use cases with SQL transformations:1. Sales Performance Analytics
Objective: Track sales team performance, deal velocity, and revenue forecasting.SQL query
SQL query
Sales Performance Dashboard
2. Customer Journey Analysis
Objective: Understand customer lifecycle stages and conversion rates.SQL query
SQL query
Implementation Notes
- Stream Permissions: During the discovery phase, the connector verifies access to dynamic streams (such as custom objects). If the provided Private App Token lacks the necessary scopes for an object, the connector will gracefully skip that stream rather than failing the entire sync. If you notice missing streams, check your token’s scopes in HubSpot.
- API Limits & Performance: Extracting associations and property history involves an additional API call per record. The connector uses connection pooling to keep this efficient, but enabling associations for multiple object types simultaneously will still significantly increase sync duration. Enable these features only when necessary.
- Unified Associations Config: Associations are configured through a single
associationsarray. Each entry targets one object type (e.g.deals,contacts) and lists the associated entities to retrieve as a comma-separated string (e.g.contacts, companies, tickets). Custom object IDs such as2-12345are supported in the association list. - Custom Object Association Keys: To ensure compatibility with downstream systems, custom object association keys are sanitized. Keys that are custom object type IDs (e.g.,
2-12345) or fully qualified names containing portal IDs are normalized to a stable format prefixed withcustom_(e.g.,custom_2_12345). Standard association names (likecontactsorcompanies) remain unchanged. - Stream Discovery and Permissions: If the authenticated HubSpot account lacks the necessary scopes or subscription tier to access certain objects (e.g., Services, Leads), the connector will gracefully skip those streams during discovery and log a warning, rather than failing the entire setup.
- API Limits & Large Property Lists: HubSpot imposes a hard limit of 3,000 characters on
/searchAPI request bodies. For heavily customized objects (such as Contacts with hundreds of custom properties), the list of properties can exceed this limit. The connector dynamically evaluates the request size: if the limit would be exceeded, it falls back to a lean search strategy — first requesting only the replication keys via/search, then calling the/batch/readendpoint to hydrate the full property values in chunks of 100 records. This increases the number of API calls but guarantees all custom properties are extracted without failing due to HubSpot’s character constraints. - Audit Logs limit: The HubSpot API enforces a strict hard limit of 365 days for retrieving historical audit logs. To prevent extraction failures, if your source configuration has a Start Date older than 365 days, the connector will automatically adjust it to 364 days ago to safely fetch the maximum history allowed. Additionally, if the API rejects a payload for requesting data out of this limit bounds, the connector will skip the stream without failing the entire pipeline.
- Search API and
object_coordinatesproperties: HubSpot’s CRM Search API (which is used for Incremental syncs) does not support querying properties of typeobject_coordinates(such ashs_origin_object_coordinates). Due to this restriction, properties of this type are excluded from the extraction payload to prevent API errors during Incremental syncs. To extract these properties, you must perform an Additional Full Sync or set your Sync Type to Full table.
Skills for agents
Download HubSpot skills file
HubSpot connector documentation as plain markdown, for use in AI agent contexts.