HubSpot Destination
Overview
The HubSpot destination writes evaluation results to your HubSpot Contact and Company objects. TrailSpark maps scores, reasoning, and evaluation dates to custom properties you define in HubSpot, and optionally pushes buying-group coverage and role data when you enable that section.
Prerequisites
- HubSpot integration connected (Settings > CRM Integration > Connect tab)
- Custom properties created in HubSpot for TrailSpark data
- Admin or Owner role in TrailSpark
- HubSpot admin access to create properties
Custom Properties in HubSpot
Create these custom properties on the Contact object:
| Property Label | Suggested Internal Name | Field Type |
|---|---|---|
| TrailSpark Score | trailspark_score | Single-line text (values: hot, warm, cold) |
| TrailSpark Evaluation Date | trailspark_evaluation_date | Date picker |
| TrailSpark Reasoning | trailspark_reasoning | Multi-line text |
For company propensity, create on the Company object:
| Property Label | Suggested Internal Name | Field Type |
|---|---|---|
| TrailSpark Propensity | trailspark_propensity | Single-line text (values: high_propensity, medium_propensity, low_propensity) |
Buying-group properties are documented below — add them only if you plan to use that feature.
Create a "TrailSpark" property group in HubSpot to keep all TrailSpark properties organized together.
Configuration
Go to Settings > CRM Integration > Destinations tab.
Destination Settings
- Send Evaluations to HubSpot -- Toggle to enable/disable the destination
- HubSpot Integration -- Select which connected HubSpot instance to use
- Create Records if Not Found -- When enabled, creates new Contact records if no match exists. Filter by score level (Hot, Warm, Cold)
Contact Field Mapping
Map three required fields to HubSpot Contact properties:
| UI Label | Description |
|---|---|
| Score Field | Where the evaluation score is stored |
| Evaluation Date Field | Where the evaluation timestamp is stored |
| Reasoning Field | Where the AI reasoning is stored |
TrailSpark loads your HubSpot property metadata automatically. Select properties from the dropdown. If a previously mapped property no longer exists in HubSpot, the field resets to blank.
Company Propensity Score
The propensity score card configures where account-level propensity (high/medium/low) is written:
- Company Propensity Field (primary) -- Written to the Company object when a linked Company exists
- Contact Propensity Field (fallback) -- Written to the Contact object when no Company is linked
Both fields are optional.
Buying Group Fields
Enable the Push buying-group fields toggle to push coverage and role data alongside evaluation scores. All fields in this section are optional — they write only when you map them.
Contact properties
| UI Label | Written to | What it contains |
|---|---|---|
| Buying-group roles | Contact | The contact's assigned role names, semicolon-separated |
| CRM Role Source Field | Read from Contact | TrailSpark reads this field from your HubSpot contacts. Set it to a field where you've recorded a role; TrailSpark uses it as the authoritative assignment. |
Account properties (company-level)
| UI Label | Written to | What it contains |
|---|---|---|
| Buying-group stage | Company | Dormant, Forming, or Complete |
| Engagement completeness (%) | Company | Share of required roles with an actively engaged person |
| Known completeness (%) | Company | Share of required roles with any person assigned |
| People still needed | Company | Count of additional people needed to complete the group |
| Missing roles | Company | Role names not yet filled (semicolon-separated) |
| Engaged roles | Company | Role names currently active (semicolon-separated) |
| Propensity as-of date | Company | Date the propensity score was last evaluated |
| At-risk status | Company | "At Risk" when high propensity meets stalled engagement; otherwise "Current" |
| Renewal health | Company | Health signal for renewal-ICP accounts: Healthy, Cooling, Fading, Cold, or Pending |
For what these values mean, see Account coverage.
You do not need to map every buying-group property. Map only the ones you plan to act on in HubSpot workflows or lists.
Troubleshooting
| Issue | Resolution |
|---|---|
| Property not in dropdown | Verify the property exists on the Contact object and the internal name is correct |
| Data not writing | Check that the destination is enabled and integration is still connected |
| Contact not found | TrailSpark matches by email address -- ensure the contact exists in HubSpot |
| Buying-group fields not writing | Confirm the "Push buying-group fields" toggle is on and the property is mapped |
Next Steps
- Salesforce Destination
- Airtable Destination
- Account coverage -- Understand the values being pushed
