HubSpot
Sync data from your warehouse to HubSpot CRM objects. Keep your HubSpot Contacts, Companies, and Deals enriched with the latest data from your data warehouse.
Prerequisites
- A HubSpot account (Marketing Hub, Sales Hub, or CMS Hub)
- For OAuth: A HubSpot user with super admin or app marketplace access
- For Private App Token: A private app created in HubSpot with the necessary scopes
Authentication
HubSpot supports two authentication methods:
OAuth 2.0
- Click Connect with OAuth in SignalSmith
- Sign in to your HubSpot account
- Select the HubSpot portal to connect
- Authorize the requested permissions
- You are redirected back to SignalSmith
OAuth scopes requested: crm.objects.contacts.read, crm.objects.contacts.write, crm.objects.companies.read, crm.objects.companies.write, crm.objects.deals.read, crm.objects.deals.write.
Private App Token
- In HubSpot, go to Settings > Integrations > Private Apps
- Create a new private app with the required scopes
- Copy the access token (starts with
pat-na1-...) - Paste it into the Private App Token field in SignalSmith
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
| Portal ID | Text | No | HubSpot portal ID (auto-populated from OAuth) |
Target Settings
| Field | Type | Required | Description |
|---|---|---|---|
| HubSpot Object | Select | Yes | The object to sync to: Contacts, Companies, Deals, or Custom Object |
| Custom Object Type | Text | Conditional | Fully qualified custom object name (e.g., p12345_my_custom_object). Required when object is Custom Object. |
| ID Property | Text | No | HubSpot property used to identify records for upsert/update (e.g., email for contacts, domain for companies) |
Supported Operations
Sync Modes
| Mode | Supported |
|---|---|
| Upsert | Yes |
| Insert | Yes |
| Update | Yes |
| Mirror | — |
Audience Sync Modes
| Mode | Supported |
|---|---|
| Add | Yes |
| Remove | Yes |
| Mirror | Yes |
| Upsert | Yes |
Features
- Field Mapping: Yes
- Schema Introspection: Yes — SignalSmith reads property definitions from the HubSpot Properties API
Required Mapping Fields
| Object | Required Fields |
|---|---|
| Contacts | |
| Companies | name |
| Deals | dealname, pipeline, dealstage |
Supported Objects
- Contacts — Individual people in your CRM
- Companies — Organizations and businesses
- Deals — Sales opportunities with pipeline stages
- Custom Object — Any custom object defined in HubSpot
Troubleshooting
Authentication failed: invalid or expired token
Re-authenticate via OAuth or generate a new private app token in HubSpot.
Insufficient permissions
If using OAuth, reconnect and ensure all required scopes are granted. For private apps, verify the app has read/write scopes for the target object type.
Property does not exist
The destination field in your mapping does not match a HubSpot property. Check the property’s internal name (not display name) in HubSpot Settings > Properties.
Rate limiting (429 errors)
HubSpot enforces API rate limits. SignalSmith automatically handles rate limiting with exponential backoff. If you see persistent rate limit errors, consider reducing sync frequency.
Custom object not found
Verify the custom object type name in HubSpot Settings > Objects > Custom Objects. The name must match exactly.