How to connect HubSpot to AskVault
What this integration unlocks
Three things plug in once HubSpot is connected:
- Lead sync. Leads captured by the
collect_leadskill auto-create as Contact records in HubSpot with the full conversation transcript attached as a note. - sdr_lead_qualifier skill. BANT-style qualification (Budget, Authority, Need, Timeline) attached to each lead before sync. The Contact lands in HubSpot already qualified.
- Bot reads HubSpot data. When an identity-verified visitor asks "what plan am I on?" or "when's my next renewal?", the bot looks up the live Contact + Deal records in HubSpot and responds.
Lead sync is on Growth and above. The qualifier and read flows are on Growth and Business. Growth+
Setup
Five minutes end-to-end.
- In AskVault, open Dashboard > Leads > Integrations. Find HubSpot, click Connect.
- OAuth flow opens. Sign in to your HubSpot account. If you have multiple HubSpot portals, pick the right one.
- Approve the requested scopes. AskVault asks for
crm.objects.contacts.read,crm.objects.contacts.write,crm.objects.deals.read,crm.objects.notes.write. Read-and-write because the integration creates contacts. - You're redirected back to AskVault. Connection shows active.
- Configure field mapping. AskVault auto-maps standard fields (name, email, phone). For custom properties (industry, company size, etc.), map them under Integrations > HubSpot > Field Mapping.
Test by collecting a test lead from the widget. Within 60 seconds the Contact should appear in HubSpot with the conversation transcript attached.
Scopes requested
crm.objects.contacts.read: look up existing contacts.crm.objects.contacts.write: create new contacts and update properties.crm.objects.deals.read: read deal stage and value for identity-verified visitors.crm.objects.notes.write: attach conversation transcripts as notes.
If your HubSpot setup uses custom objects (e.g., a Companies object beyond the default), you can grant additional scopes via the OAuth re-authorization flow.
Lead deduplication
By default AskVault checks for an existing Contact with the same email before creating a new one. Three behaviors when a match is found:
- Update existing. Default. Fields from the new conversation update the existing Contact. Conversation transcript appends as a new note.
- Skip. No update. Conversation transcript still attaches as a note for context.
- Create new. Disable dedup. Each conversation creates a separate Contact even if email matches.
Configure under Integrations > HubSpot > Deduplication.
sdr_lead_qualifier skill
Once HubSpot is connected, the sdr_lead_qualifier skill becomes useful. After collect_lead captures contact info, this skill asks 4 qualifying questions:
- Budget. "What's the budget range you're working with?"
- Authority. "Are you the decision-maker, or evaluating on behalf of someone?"
- Need. "What problem are you trying to solve?"
- Timeline. "When do you need this in place?"
Customize the question wording under AI Agents > Skills > sdr_lead_qualifier > Questions. The answers attach to the Contact as custom properties (configurable in HubSpot field mapping).
The skill is on Growth and above. Growth+
Bot reads HubSpot data
For identity-verified visitors, the bot can query HubSpot during the conversation:
- "What plan am I on?" Bot looks up the Contact's
plan_tiercustom property (or whichever field you've mapped) and responds. - "When's my next renewal?" Bot reads the Deal close date or the Contact's
renewal_datefield. - "Have I opened a support ticket recently?" Bot reads associated Ticket records.
This pattern works best when your HubSpot data is the source of truth for customer state. If you store the same data in Stripe (subscriptions, plans), the Stripe integration is usually a better fit.
ticketing_router (Zendesk only for now)
The ticketing_router skill creates tickets from chat. Today it routes to Zendesk natively. HubSpot Service Hub tickets are on the roadmap; you can use the custom_webhook skill as a workaround. Starter+
Webhooks (incoming events from HubSpot)
For real-time updates (deal stage changes, contact property updates), configure HubSpot webhooks to point at AskVault:
- In HubSpot, navigate to Settings > Integrations > Webhooks.
- Add a subscription pointing to the URL AskVault generates under Integrations > HubSpot > Webhooks.
- Subscribe to events:
contact.propertyChange,deal.creation,deal.propertyChange.
The bot then knows about state changes and can reference them in conversations.
Limits
- HubSpot API rate limits. 100 calls per 10 seconds per app for Free/Starter, 150 calls per 10 seconds for Professional/Enterprise. AskVault stays well under this for normal traffic.
- Custom property limit. HubSpot caps custom properties per object. The qualifier fields count toward this; budget about 4 to 6 properties for the integration.
- Multi-portal. One HubSpot portal per AskVault workspace.
Common pitfalls
Leads sync but conversation transcript is missing. Note-write scope wasn't granted during OAuth. Re-authorize.
Duplicate Contacts despite dedup enabled. Email-case mismatch. HubSpot is case-insensitive for emails but AskVault's lookup is case-sensitive. Force lowercase emails under Integrations > HubSpot > Email Normalization.
Bot says "I couldn't find your account" for known customers. Customer's email in your HubSpot doesn't match the email they're using in the widget. Common when customers sign up with foo@gmail.com but chat as foo+alias@gmail.com.
Custom field mapping doesn't persist. You're editing the mapping at the wrong portal. Confirm you're connected to the right HubSpot portal under Integrations > HubSpot > Status.
FAQ
Does this work with HubSpot Free plan?
Yes. The integration works on Free, Starter, Professional, and Enterprise HubSpot plans. Some advanced features (custom objects, workflow triggers) are gated by HubSpot's plan, not ours.
Can the bot update deal stages?
Yes, with the crm.objects.deals.write scope. We don't request it by default. Add via re-authorization if you need it. Most teams keep deal-stage updates manual for safety.
Will the bot mention HubSpot data to non-verified visitors?
No. Without identity verification, the bot doesn't reveal account-specific data. It can answer general product questions but won't say "your subscription renews on March 15".
Can I sync to Salesforce instead?
Yes. Same flow, different OAuth target. See the Salesforce integration setup.
Does this affect HubSpot's MCS (Marketing Contacts) count?
Lead-sync creates Contact records that count toward HubSpot's Marketing Contacts (MCS) only if you mark them as marketing contacts. By default AskVault creates non-marketing contacts, so they don't count toward MCS limits.
Related guides
- Collect lead skill
- SDR lead qualifier skill
- Stripe integration setup
- Salesforce integration setup
- Custom webhook skill