Connect
HubSpot uses OAuth. Start the connect, finish consent in a browser, and the Connector Pack skills install automatically.1
Begin the connection
POST /integrations/hubspot/connect returns an oauthUrl.2
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.3
Confirm
GET /integrations now lists hubspot with status: connected and an accountLabel. The
Connector Pack skills are compiled per-account against your connection at install.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.
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
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.