Connect
HubSpot uses OAuth. Start the connect, finish consent in a browser, and the Connector Pack skills install automatically.Grant access in a browser
Open the
oauthUrl while signed in to your dashboard and approve the HubSpot consent screen.
The browser-only callback finishes the connection — it cannot be completed with an API key.What installs: the Connector Pack
Connecting installs HubSpot’s Connector Pack — a curated set of skills, each compiled per account against your connection at install time. Re-installing is idempotent: a skill that already exists is skipped and returned withcreated: false.
| Skill | What it does |
|---|---|
find_contact | Recognize a caller by phone (find-or-nothing lookup) so the agent can greet them by name. |
find_company | Look up a company by name or website domain. |
find_ticket | Find a support ticket by subject or a keyword. |
create_contact | Capture a caller — find-or-create, deduped by phone, so a returning caller is never duplicated. |
update_contact | Edit a known contact by id (from a prior find_contact). |
create_ticket | Open a support request. |
create_deal | Open a sales opportunity. |
Write skills (
create_* / update_*) land gated — they confirm with the caller and never run
in parallel. Updating an existing record additionally requires a
verified caller identity.Interaction logging
Turn on interaction logging to write a record of every finished conversation back to the matched HubSpot contact’s timeline — a per-connection setting that is off by default and included free. A voice call becomes a Call engagement; a chat becomes a Note. Each carries an AI summary and, optionally, the full transcript — scrubbed of card and ID numbers before export. Nothing is exported until you enable it, and past conversations are never back-filled. When a conversation has no CRM match, theon_no_match policy decides what happens:
skip— the interaction is skipped and counted (the default).create— a contact is auto-created, then the interaction is logged to it.
mode is one of off, summary, or summary_transcript. onNoMatch (skip | create) is
optional and left unchanged when omitted.
Beyond the pack: any object or field
The pack covers the common flows, but HubSpot is fully open to author: bind any object and field — including custom objects — from the account’s discovered schema. Three ways in:- “Describe it” AI authoring — auto-map a plain-language goal to a validated binding with
POST /agents/{agentId}/integrations/hubspot/bindings/auto. For a REST CRM like HubSpot this authors reads and writes (create, update, find-or-create, list-many, multi-filter, latest-sort). - The manual builder — pick the object and fields yourself and map a binding with
POST /agents/{agentId}/integrations/hubspot/bindings. - The API — discover the schema, browse or search it, and author against the
restSearch(read) andrestWrite(create / update / find-or-create) grammars.
In the API
| Action | Endpoint | Scope |
|---|---|---|
| Connect (OAuth consent) | POST /integrations/hubspot/connect | integrations:connect |
| Get the Connector Pack | GET /integrations/hubspot/pack | integrations:read |
| Install the pack | POST /agents/{agentId}/integrations/hubspot/pack/install | skills:write |
| Discover the schema | POST /integrations/hubspot/discover | integrations:write |
| Browse objects | GET /integrations/hubspot/objects · GET /integrations/hubspot/objects/{object} | integrations:read |
| Search the schema | GET /integrations/hubspot/search | integrations:read |
| Author a binding | POST /agents/{agentId}/integrations/hubspot/bindings · POST /agents/{agentId}/integrations/hubspot/bindings/auto | skills:write |
| Read interaction logging | GET /integrations/hubspot/writeback | integrations:read |
| Set interaction logging | PATCH /integrations/hubspot/writeback | integrations:write |
Least privilege. The consent grant requests the scopes for the standard objects (contacts,
companies, tickets, deals). Custom-object scopes are optional and only requested / used when
you author a binding against a custom object.