What HubSpot adds to Halo
HubSpot is Halo’s most capable integration — it does ingest, actions, and notifications:| Mode | What it does |
|---|---|
| Ingest | Contacts, companies, deals, and engagements (emails, notes, calls, meetings, form submissions) sync into Halo. Engagement bodies become searchable knowledge. |
| Actions | Agents can create deals, update contact properties, log follow-up tasks, and attach free-form notes. |
| Notifications | Slack notifications fire on new HubSpot engagements (when both Slack and HubSpot notifications are enabled). |
Setup
Connecting
Click Connect HubSpot. You’ll be redirected to HubSpot’s OAuth consent screen. The required scopes:crm.objects.contacts.readandcrm.objects.contacts.writecrm.objects.companies.readcrm.objects.deals.readandcrm.objects.deals.writesales-email-readforms
Webhooks (optional but recommended)
For real-time engagement updates, configure HubSpot webhooks pointing at:orgId in Setup > Deploy.)
Halo verifies HubSpot’s v2 signature on every webhook payload and processes:
email.creationnote.creationcall.creationmeeting.creation
cronSync: true).
Ingest mode
When ingest is on, Halo syncs:| Data | Where it lands |
|---|---|
| Contacts | end_users table, linked to companies by HubSpot association |
| Companies | companies table, with industry/employee count/lifecycle stage |
| Deals | Internal deal records, accessible via segments |
| Engagements | hubspot_engagements table + indexed in your knowledge base under the hubspot: prefix |
Sync behavior
- First connect: full backfill of all data
- Cron: hourly incremental sync (when
last_syncedis set and ingest is on) - Webhooks: real-time engagement events
- Manual sync: button on the integration detail page; supports
full_resync,catch_up,email_catch_up, andbackfill_transcriptsoptions
AI actions
Four actions enable on a per-agent basis at AI Agents > [Agent] > Actions:create_deal
Opens a new HubSpot deal for the conversation’s contact. Use when the user expresses buying intent or asks for a quote.
Configuration: default pipeline, default stage, default owner, default deal type. The action associates the deal with the matched contact when an email match is found.
update_contact
Patches a single property on the contact. Use sparingly — only properties you’ve allowlisted can be modified.
Configuration: allowed_properties list. Defaults: lifecyclestage, hs_lead_status, jobtitle, phone. The agent must confirm the change with the user before invoking.
log_activity
Creates a follow-up task on the contact in HubSpot. Use for “send pricing PDF tomorrow” or “call back about renewal.”
Configuration: task type (TODO / CALL / EMAIL), priority, default due date offset.
create_note
Attaches a free-form note to the contact in HubSpot. Use for handoff context, customer preferences, or AI summaries of conversations.
Configuration: optional body_prefix prepended to every note (e.g. “Halo AI summary:”).
Notifications mode
When HubSpot notifications mode is on AND Slack is connected with thenew_hubspot_engagement notification type enabled, Halo posts a Slack message every time a HubSpot engagement is processed.
The notification includes:
- The engagement type (email, note, call, meeting)
- The contact name and company
- A snippet of the body
- A link to the engagement in HubSpot
Stats and status
The integration page shows:- Total contacts, companies, deals, engagements synced
- Linked engagements (those associated with known Halo contacts)
- Last sync time
- Auth error or sync error banners when applicable
Disconnecting
Click Disconnect on the integration page to remove access. All ingested data stays in Halo but no further sync happens. Reconnecting performs a fresh OAuth flow and triggers a new full sync.Where to go next
Agent Actions
Enable HubSpot actions per agent.
Slack
Set up Slack to receive HubSpot engagement notifications.
Learning Rules
Filter what gets learned from HubSpot engagement bodies.