HubSpot Integration
The HubSpot integration connects your AI voice agents to your HubSpot CRM. Calls are logged as engagements, contacts are created or updated automatically, and your post-call workflows can manage deals and book meetings.
The HubSpot integration requires a Growth plan or higher.
Prerequisites
- A HubSpot account with CRM access
- A BuildVoiceAI account on the Growth or Agency plan
Connecting HubSpot
HubSpot uses OAuth exclusively for authentication.
- Navigate to Integrations in the sidebar
- Find the HubSpot card and click Connect
- You will be redirected to HubSpot’s authorization page
- Review the permissions BuildVoiceAI is requesting
- Click Grant Access
- You will be redirected back to BuildVoiceAI with the connection confirmed
Required HubSpot Scopes
During authorization, BuildVoiceAI requests the following scopes:
crm.objects.contacts.readandcrm.objects.contacts.write— Read and create/update contactscrm.objects.deals.readandcrm.objects.deals.write— Read and manage dealscrm.schemas.contacts.read— Read contact properties including custom fieldssales-email-read— Read engagementstimeline— Create timeline events
If your HubSpot account restricts any of these scopes, certain features will not work.
Configuration
Default Agent
Select which agent handles calls triggered from HubSpot webhooks.
- On the HubSpot integration page, find Default Agent
- Select an agent from the dropdown
- Click Save
Webhook URL for Triggered Calls
To trigger outbound calls from HubSpot workflows:
- Copy the Webhook URL from the HubSpot integration page in BuildVoiceAI
- In HubSpot, navigate to Automations → Workflows
- Create a new workflow or edit an existing one
- Add a Send a webhook action
- Set the method to
POSTand paste the BuildVoiceAI webhook URL - Include the contact’s phone number in the request body
Features
Call Engagements
Every completed call is logged as a call engagement on the matching HubSpot contact. The engagement includes:
- Call direction and duration
- AI-generated call summary
- Sentiment analysis
- Full transcript (stored as a note)
BuildVoiceAI uses HubSpot’s association system to link records. The relevant association type IDs are:
| Association | Type ID |
|---|---|
| Call → Contact | 194 |
| Meeting → Contact | 200 |
| Note → Contact | 202 |
| Deal → Contact | 3 |
Contact Management
Post-call workflows can create new HubSpot contacts or update existing ones:
- Search by phone — BuildVoiceAI matches callers to existing contacts by phone number
- Create contacts — If no match is found, a new contact is created with the caller’s details
- Update properties — Custom and standard properties can be updated based on call data
Contact Tagging
HubSpot does not have a native tagging system for contacts. BuildVoiceAI uses a custom contact property called ai_call_tags to provide tag-like functionality.
- Tags are stored as a semicolon-separated string (e.g.,
interested;follow-up;demo-requested) - When adding tags through a workflow action, BuildVoiceAI fetches the existing tags, merges the new ones, and writes the combined list back
- This prevents overwriting tags set by previous calls or other processes
The ai_call_tags property is created automatically on your HubSpot account when the integration is first connected. You can view and edit it like any other contact property in HubSpot.
Deal Pipeline Updates
Workflow actions can create or update deals associated with a contact. You can:
- Create a new deal when a call meets certain criteria
- Move a deal to a different pipeline stage based on call outcome
- Update deal properties (amount, close date, etc.)
Meeting Bookings
If your voice agent collects scheduling information during a call, a workflow action can create a meeting engagement in HubSpot linked to the contact.
Troubleshooting
”Token Expired” or Authorization Errors
HubSpot OAuth tokens expire periodically. BuildVoiceAI refreshes them automatically, but if you see persistent auth errors:
- Go to Integrations → HubSpot
- Click Disconnect
- Click Connect to re-authorize
- Grant access again in HubSpot
HubSpot refresh tokens are single-use. BuildVoiceAI handles this with a singleton refresh pattern to prevent race conditions when multiple calls complete simultaneously.
Contacts Not Being Found
If calls are creating duplicate contacts instead of matching existing ones:
- Verify the caller’s phone number format matches what is stored in HubSpot
- Phone numbers should be in E.164 format (e.g.,
+15551234567) - Check that the
phoneproperty is populated on the HubSpot contact
Tags Not Appearing
If ai_call_tags values are missing or being overwritten:
- Confirm the
ai_call_tagscustom property exists on your HubSpot contacts - Check that your workflow action is set to merge tags, not replace them
- Review the workflow execution log for errors
Webhook Not Triggering Calls
- Verify the webhook URL is current (copy it fresh from the integration page)
- Ensure the HubSpot workflow is enrolled and active
- Confirm the payload includes a valid phone number
- Check that the default agent is set in the integration configuration