HubSpot source connector for Airbyte that syncs CRM data including contacts, companies, deals, and marketing activities with support for OAuth and Private App authentication
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Core customer relationship management data streams including contacts, companies, deals, and tickets with full incremental synchronization support and property associations.
Contact records with properties, associations, and incremental sync support.
contacts:
primary_key: ["id"]
cursor_field: "updatedAt"
sync_mode: incremental
schema:
type: object
properties:
id:
type: string
description: "Unique contact identifier"
createdAt:
type: string
format: date-time
description: "Contact creation timestamp"
updatedAt:
type: string
format: date-time
description: "Last update timestamp"
archived:
type: boolean
description: "Whether contact is archived"
properties:
type: object
description: "Dynamic contact properties"
additionalProperties: true
# Flattened association fields
companies:
type: array
items:
type: string
description: "Associated company IDs"
deals:
type: array
items:
type: string
description: "Associated deal IDs"Usage Example:
streams:
- name: contacts
sync_mode: incremental
cursor_field: ["updatedAt"]
destination_sync_mode: append_dedupCompany records with properties, associations, and incremental sync support.
companies:
primary_key: ["id"]
cursor_field: "updatedAt"
sync_mode: incremental
schema:
type: object
properties:
id:
type: string
description: "Unique company identifier"
createdAt:
type: string
format: date-time
description: "Company creation timestamp"
updatedAt:
type: string
format: date-time
description: "Last update timestamp"
archived:
type: boolean
description: "Whether company is archived"
properties:
type: object
description: "Dynamic company properties"
additionalProperties: true
# Flattened association fields
contacts:
type: array
items:
type: string
description: "Associated contact IDs"
deals:
type: array
items:
type: string
description: "Associated deal IDs"Deal records with properties, associations, and incremental sync support.
deals:
primary_key: ["id"]
cursor_field: "updatedAt"
sync_mode: incremental
schema:
type: object
properties:
id:
type: string
description: "Unique deal identifier"
createdAt:
type: string
format: date-time
description: "Deal creation timestamp"
updatedAt:
type: string
format: date-time
description: "Last update timestamp"
archived:
type: boolean
description: "Whether deal is archived"
properties:
type: object
description: "Dynamic deal properties"
additionalProperties: true
# Flattened association fields
contacts:
type: array
items:
type: string
description: "Associated contact IDs"
companies:
type: array
items:
type: string
description: "Associated company IDs"
line_items:
type: array
items:
type: string
description: "Associated line item IDs"Archived deal records for comprehensive deal lifecycle tracking.
deals_archived:
primary_key: ["id"]
cursor_field: "archivedAt"
sync_mode: incremental
schema:
type: object
properties:
id:
type: string
description: "Unique deal identifier"
createdAt:
type: string
format: date-time
description: "Deal creation timestamp"
updatedAt:
type: string
format: date-time
description: "Last update timestamp"
archivedAt:
type: string
format: date-time
description: "Archive timestamp"
archived:
type: boolean
const: true
description: "Always true for archived deals"
properties:
type: object
description: "Dynamic deal properties at time of archival"
additionalProperties: trueSupport ticket records with properties and incremental sync support.
tickets:
primary_key: ["id"]
cursor_field: "updatedAt"
sync_mode: incremental
schema:
type: object
properties:
id:
type: string
description: "Unique ticket identifier"
createdAt:
type: string
format: date-time
description: "Ticket creation timestamp"
updatedAt:
type: string
format: date-time
description: "Last update timestamp"
archived:
type: boolean
description: "Whether ticket is archived"
properties:
type: object
description: "Dynamic ticket properties"
additionalProperties: true
# Flattened association fields
contacts:
type: array
items:
type: string
description: "Associated contact IDs"
companies:
type: array
items:
type: string
description: "Associated company IDs"Deal commission split records for revenue tracking.
deal_splits:
primary_key: ["id"]
cursor_field: "updatedAt"
sync_mode: incremental
schema:
type: object
properties:
id:
type: string
description: "Unique deal split identifier"
dealId:
type: string
description: "Associated deal ID"
ownerId:
type: string
description: "Owner receiving split"
percentage:
type: number
description: "Split percentage (0-100)"
updatedAt:
type: string
format: date-time
description: "Last update timestamp"Lead records for tracking potential customers.
leads:
primary_key: ["id"]
cursor_field: "updatedAt"
sync_mode: incremental
schema:
type: object
properties:
id:
type: string
description: "Unique lead identifier"
createdAt:
type: string
format: date-time
description: "Lead creation timestamp"
updatedAt:
type: string
format: date-time
description: "Last update timestamp"
properties:
type: object
description: "Dynamic lead properties"
additionalProperties: trueE-commerce line item records associated with deals.
line_items:
primary_key: ["id"]
cursor_field: "updatedAt"
sync_mode: incremental
schema:
type: object
properties:
id:
type: string
description: "Unique line item identifier"
createdAt:
type: string
format: date-time
description: "Line item creation timestamp"
updatedAt:
type: string
format: date-time
description: "Last update timestamp"
properties:
type: object
description: "Dynamic line item properties"
additionalProperties: true
# Flattened association fields
deals:
type: array
items:
type: string
description: "Associated deal IDs"Product catalog records for e-commerce functionality.
products:
primary_key: ["id"]
cursor_field: "updatedAt"
sync_mode: incremental
schema:
type: object
properties:
id:
type: string
description: "Unique product identifier"
createdAt:
type: string
format: date-time
description: "Product creation timestamp"
updatedAt:
type: string
format: date-time
description: "Last update timestamp"
archived:
type: boolean
description: "Whether product is archived"
properties:
type: object
description: "Dynamic product properties"
additionalProperties: trueUser/owner records for assignment tracking and reporting.
owners:
primary_key: ["id"]
cursor_field: "updatedAt"
sync_mode: incremental
schema:
type: object
properties:
id:
type: string
description: "Unique owner identifier"
userId:
type: string
description: "User ID"
email:
type: string
format: email
description: "Owner email address"
firstName:
type: string
description: "Owner first name"
lastName:
type: string
description: "Owner last name"
active:
type: boolean
description: "Whether owner is active"
updatedAt:
type: string
format: date-time
description: "Last update timestamp"Archived owner records for historical assignment tracking.
owners_archived:
primary_key: ["id"]
cursor_field: "updatedAt"
sync_mode: incremental
schema:
type: object
properties:
id:
type: string
description: "Unique owner identifier"
userId:
type: string
description: "User ID"
email:
type: string
format: email
description: "Owner email address"
firstName:
type: string
description: "Owner first name"
lastName:
type: string
description: "Owner last name"
active:
type: boolean
const: false
description: "Always false for archived owners"
updatedAt:
type: string
format: date-time
description: "Last update timestamp"Goal tracking records for performance monitoring and targets.
goals:
primary_key: ["id"]
cursor_field: "updatedAt"
sync_mode: incremental
schema:
type: object
properties:
id:
type: string
description: "Unique goal identifier"
name:
type: string
description: "Goal name"
createdAt:
type: string
format: date-time
description: "Goal creation timestamp"
updatedAt:
type: string
format: date-time
description: "Last update timestamp"
properties:
type: object
description: "Dynamic goal properties"
additionalProperties: truePipeline configuration for deals and tickets.
deal_pipelines:
primary_key: ["id"]
sync_mode: full_refresh
schema:
type: object
properties:
id:
type: string
description: "Unique pipeline identifier"
label:
type: string
description: "Pipeline display name"
stages:
type: array
items:
type: object
properties:
id:
type: string
description: "Stage identifier"
label:
type: string
description: "Stage display name"
displayOrder:
type: integer
description: "Stage sort order"
ticket_pipelines:
primary_key: ["id"]
sync_mode: full_refresh
schema:
type: object
properties:
id:
type: string
description: "Unique pipeline identifier"
label:
type: string
description: "Pipeline display name"
stages:
type: array
items:
type: object
properties:
id:
type: string
description: "Stage identifier"
label:
type: string
description: "Stage display name"
displayOrder:
type: integer
description: "Stage sort order"Lead records for tracking potential prospects and managing lead qualification processes.
leads:
primary_key: ["id"]
cursor_field: "updatedAt"
sync_mode: incremental
schema:
type: object
properties:
id:
type: string
description: "Unique lead identifier"
createdAt:
type: string
format: date-time
description: "Lead creation timestamp"
updatedAt:
type: string
format: date-time
description: "Last update timestamp"
archived:
type: boolean
description: "Whether lead is archived"
properties:
type: object
description: "Dynamic lead properties"
additionalProperties: trueContact list records for managing contact segmentation and marketing campaigns.
contact_lists:
primary_key: ["id"]
cursor_field: "updatedAt"
sync_mode: incremental
schema:
type: object
properties:
id:
type: string
description: "Unique contact list identifier"
name:
type: string
description: "Contact list name"
size:
type: integer
description: "Number of contacts in list"
createdAt:
type: string
format: date-time
description: "List creation timestamp"
updatedAt:
type: string
format: date-time
description: "Last update timestamp"
listType:
type: string
description: "Type of contact list (STATIC, DYNAMIC)"Deal commission split records for revenue tracking and sales team compensation.
deal_splits:
primary_key: ["id"]
cursor_field: "updatedAt"
sync_mode: incremental
schema:
type: object
properties:
id:
type: string
description: "Unique deal split identifier"
dealId:
type: string
description: "Associated deal identifier"
ownerId:
type: string
description: "Owner responsible for this split"
percentage:
type: number
description: "Percentage of deal value (0-100)"
amount:
type: number
description: "Split amount in deal currency"
updatedAt:
type: string
format: date-time
description: "Last update timestamp"All CRM streams support dynamic property mapping where HubSpot properties are accessible in two formats:
properties objectproperties_Example:
{
"id": "12345",
"properties": {
"firstname": "John",
"lastname": "Doe",
"email": "john@example.com"
},
"properties_firstname": "John",
"properties_lastname": "Doe",
"properties_email": "john@example.com"
}CRM streams automatically include associated object IDs as flattened array fields:
companies, dealscontacts, dealscontacts, companies, line_itemscontacts, companiesThese associations are populated by querying HubSpot's CRM v4 associations API.
Install with Tessl CLI
npx tessl i tessl/airbyte-airbyte-source-hubspot@6.0.1