- Sources
- CRM
HubSpot
Overview
Section titled “Overview”Signals reads contacts, deals and lifecycle stage changes from HubSpot on a schedule and sends the fields you mapped on to your ad platforms.
Two HubSpot modules are supported: Contacts and Deals. Contacts holds the details destinations match on, and Deals holds the outcome.
This is the reverse of the HubSpot destination connector, which writes leads captured on an ad platform into your CRM.
Supported destinations
Section titled “Supported destinations”Destinations supported by HubSpot
| Category | Supported |
|---|---|
| Offline Conversions | |
| Lead Conversions | |
| Custom Audience |
Prerequisites
Section titled “Prerequisites”- A HubSpot account holding the records you intend to sync, in the module you intend to read: Contacts or Deals. The fields you intend to map must already exist.
- Administrator access to your HubSpot account, on a plan that includes API access. You need it to authorize Datahash and grant read access to the modules and records you map.
- A single-select property on the module you sync holding each record’s stage, such as New, Contacted, Qualified, Won or Lost. Each value maps to a conversion event, so a record left on a stale stage reports the wrong one.
Authentication
Section titled “Authentication”In Studio, open Sources, find the CRM category, and click the HubSpot tile. This connector uses single sign-on, so no HubSpot credentials are entered into Datahash.
- Click Sign in with HubSpot.
- Choose the account you want to connect and grant the requested permissions.
If you manage several portals, check which one you selected. The connection screen does not show the portal name again afterwards.
Configuration
Section titled “Configuration”Instance Setup
Section titled “Instance Setup”Select the Integration Type based on where the data needs to be sent. The options are Offline Events, Audience, Meta CAPI CRM, Google Leads, TikTok Leads, Snapchat Leads and LinkedIn Leads. The choice decides which fields you are asked to map and which destinations the connection can feed, so settle it first. Then choose the module Signals reads from, one of Contacts or Deals and give the instance a name.
Field mapping
Section titled “Field mapping”Map your HubSpot fields onto the schema Signals expects. Each field is a dropdown of your own fields, so nothing has to be renamed in the CRM. What you are asked to map depends on the integration type.
| Group | Fields |
|---|---|
| Configuration | Event name, event time, last modified date, lead lifecycle stage. |
| Personal information | Email, phone, first name, last name, city, state, country, postcode, gender, date of birth, Facebook click ID, Google click ID, OpenAI identifier, source URL. |
| Product | Total value, currency, product type, name, category, ID, brand, price, quantity, transaction ID, number of items. |
HubSpot asks one thing no other CRM source does. On the mapping step you choose an integration method, either webhook or API, and the choice changes what triggers a send. Webhook sends an update when the platform lead ID field changes. API sends an update whenever any value on the contact changes, which is simpler to set up and can produce more sends than you expect.
Test connection
Section titled “Test connection”Click Test Connection before finishing. It checks both that the credentials still work and that the mapped fields actually contain data, so a mapping pointed at an empty field fails here rather than silently later.
Manage instance
Section titled “Manage instance”One instance is configured for one module. To read another module, configure it on a new instance from the Manage existing instance table. To change an existing one, open it from the Manage existing instance table, click the edit option in the menu to the top right, update the fields and click Finish.
Data & identifiers
Section titled “Data & identifiers”Only the fields you map are read. Personal identifiers are normalized and SHA-256 hashed before they are sent to any destination.
Email, phone, name and location are what destinations match on. Value, currency and product fields describe the conversion rather than the person, so they do not affect match rates.
Best practices
Section titled “Best practices”- If you map a platform lead ID such as the Meta Lead ID, keep that field as text. A numeric field truncates long IDs, which is the most common cause of lead conversions never matching.
- Choose webhook rather than API unless you need it, since API sends on any field change and that can report the same record repeatedly.
- Ensure the module holds personal information such as email address and phone number. Destinations weight these highest, so records without them match at a much lower rate.
- Maintaining consistent formatting in HubSpot helps match rates: email addresses in lowercase, phone numbers in E.164 format, and no trailing spaces.
Troubleshooting & FAQ
Section titled “Troubleshooting & FAQ”Match rates are low. Map more identifiers and fix formatting at source. A hash only matches if both sides normalized the value the same way.

