Linking Hubspot as a source
Contents
The HubSpot connector can link contacts, companies, deals, emails, meetings, quotes, and tickets to PostHog.
To link Hubspot:
- Go to the Data pipeline page and the sources tab in PostHog
- Click New source and select Hubspot
- Select the Hubspot account you want to link and click Connect app
- Optional: Add a prefix to your table names
- Select the tables you want to import
- Click Import
Sync modes
HubSpot tables support both full refresh and incremental syncing:
- Full refresh – Re-imports all records from HubSpot on every sync
- Incremental – Only imports records modified since the last sync
When you enable incremental sync for a table:
- The first sync performs a full import to establish a baseline.
- Subsequent syncs only fetch records modified since the last sync, using the
hs_lastmodifieddateproperty (orlastmodifieddatefor contacts).
Incremental syncing is more efficient for large HubSpot portals, reducing sync time and API usage. If a sync is interrupted, it resumes from where it left off.
Configuration
| Option | Description |
|---|---|
Hubspot accountType: oauth Required: True | |
Customize synced propertiesType: switch-group Required: False | Specify which properties to sync for each schema. Leave empty to use defaults. Changing properties requires a full resync. |
Customize synced properties
By default, PostHog syncs a standard set of properties for each HubSpot schema. To control which properties are synced, enable the Customize synced properties toggle during setup.
When enabled, a text field appears for each schema (contacts, companies, deals, tickets, quotes, emails, meetings). Enter a comma-separated list of HubSpot property names to sync. Leave a field empty to use the defaults.
The default properties for each schema are:
- contacts -
createdate,email,firstname,hs_object_id,hs_lead_status,lastmodifieddate,lastname,hs_buying_role - companies -
createdate,domain,hs_lastmodifieddate,hs_object_id,hs_csm_sentiment,hs_lead_status,name - deals -
amount,closedate,createdate,dealname,dealstage,hs_lastmodifieddate,hs_object_id,pipeline,hs_mrr - tickets -
createdate,content,hs_lastmodifieddate,hs_object_id,hs_pipeline,hs_pipeline_stage,hs_ticket_category,hs_ticket_priority,subject - quotes -
hs_createdate,hs_expiration_date,hs_lastmodifieddate,hs_object_id,hs_public_url_key,hs_status,hs_title - emails -
hs_timestamp,hs_lastmodifieddate,hs_object_id,hs_email_direction,hs_email_html,hs_email_status,hs_email_subject,hs_email_text,hs_attachment_ids,hs_email_headers - meetings -
hs_timestamp,hs_lastmodifieddate,hs_object_id,hs_meeting_title,hs_meeting_body,hs_internal_meeting_notes,hs_meeting_external_URL,hs_meeting_location,hs_meeting_start_time,hs_meeting_end_time,hs_meeting_outcome,hs_activity_type,hs_attachment_ids
Changing the synced properties after the initial import requires a full resync of your HubSpot data. Invalid properties are automatically filtered out. If all specified properties are invalid, the defaults are used instead.
The data warehouse then starts syncing your Hubspot data. You can see details, progress, and rows synced in the data pipeline sources tab.