# How to connect HubSpot to OpenClaw (no API keys)

> Connect HubSpot to OpenClaw with ClawLink in one click — 224 tools your AI agent can call from chat via hosted OAuth. No API keys, no manual setup.

Web version: https://claw-link.dev/openclaw/hubspot

The usual route to HubSpot access for OpenClaw is an MCP server you configure and keep running, plus your own OAuth app or API keys. ClawLink gives OpenClaw a more practical HubSpot setup: install one ClawHub skill, connect HubSpot in the browser, and OpenClaw can call real HubSpot actions from any chat surface with no auth, token refresh, or tool wiring to build yourself.

**Start here:** install the ClawLink plugin (`openclaw plugins install clawhub:clawlink-plugin`), pair it in the browser, then connect the app in the ClawLink dashboard. The interactive install prompt is on the web version of this page: https://claw-link.dev/openclaw/hubspot

## Setup

It takes three steps to connect OpenClaw to HubSpot.

1. **Install ClawLink** — add the plugin to OpenClaw once.
2. **Connect HubSpot** — one-click OAuth in the ClawLink dashboard.
3. **Use it from chat** — ask OpenClaw in plain English.

**Alternative for any agent (no plugin needed):** if the OpenClaw plugin route isn't available or doesn't work, any AI agent with shell access can use the ClawLink CLI instead:

```bash
npx -y @useclawlink/cli login          # sign in via browser — no API key to paste
npx -y @useclawlink/cli connect hubspot  # connect HubSpot (browser OAuth)
npx -y @useclawlink/cli actions hubspot  # list available actions
npx -y @useclawlink/cli run hubspot <action> --input '<json>'  # execute (add --confirm for writes)
```

### Install by command

The setup prompt above does all of this in one paste. By hand, it is one install command plus a browser approval:

```bash
openclaw plugins install clawhub:clawlink-plugin
```

Then ask OpenClaw to set up ClawLink. It starts browser pairing and prints an approval link — open it, approve the device, return to the chat, and say `done`. Finally, connect HubSpot in the [ClawLink dashboard](https://claw-link.dev/dashboard) — a one-click OAuth approval, no API keys.

Verify the connection by asking OpenClaw:

> Search HubSpot for a contact with the email \<email> using hubspot_search_contacts_by_criteria. If they exist, show me the record. Only if they do not, create them with hubspot_create_contact using the details above.

### Using a different agent?

The OpenClaw plugin is one client of ClawLink's MCP server. Claude Code, Cursor, Codex, or any agent that can run a shell command pairs with the same ClawLink account through the CLI:

```bash
npx -y @useclawlink/cli login
```

`login` opens the same browser approval and stores a credential locally. Once HubSpot is connected in the dashboard, that agent calls the same 224 HubSpot tools over MCP. Full setup for MCP clients and shell agents: [connect apps to any AI agent](https://claw-link.dev/learn/connect-apps-to-any-ai-agent).

## HubSpot MCP for OpenClaw

Looking for a HubSpot MCP server for OpenClaw? ClawLink connects HubSpot to OpenClaw and exposes 224 HubSpot tools your agent can call over [MCP](https://claw-link.dev/learn/what-is-an-mcp-server), with [hosted auth](https://claw-link.dev/learn/oauth-for-ai-agents) and nothing to run or maintain yourself. Using Hermes instead? The [Hermes HubSpot integration](https://claw-link.dev/hermes/hubspot) works the same way.

HubSpot changed how integrations authenticate, and the guides have not all caught up: API keys were retired in favour of private app tokens or OAuth, so a walkthrough that tells you to paste a HubSpot API key into a config file is describing something that no longer works. ClawLink connects through HubSpot's OAuth flow — you approve access in the browser once and OpenClaw can call the 224 HubSpot tools below, with no private app to create in HubSpot's developer settings and no token in `openclaw.json`. Your HubSpot permissions come with you: the agent sees the objects your user can see.

## What the OpenClaw HubSpot integration can do

224 HubSpot tools are ready for OpenClaw once the account is connected. The 30 below are the ones people reach for most; your agent can call all 224.

### 30 of 224 HubSpot tools for OpenClaw

| Tool | What it does |
|---|---|
| **Create company** `hubspot_create_company` | Create a HubSpot company |
| **Create contact** `hubspot_create_contact` | Create a HubSpot contact |
| **Create deal** `hubspot_create_deal` | Create a HubSpot deal |
| **Create task** `hubspot_create_task` | Create a HubSpot task |
| **Get company** `hubspot_get_company` | Get a HubSpot company by ID |
| **Get deal** `hubspot_get_deal` | Get a HubSpot deal by ID |
| **Get ticket** `hubspot_get_ticket` | Get a HubSpot ticket by ID |
| **Read contact** `hubspot_read_contact` | Get a HubSpot contact by ID |
| **Retrieve owners** `hubspot_retrieve_owners` | List HubSpot owners and users |
| **Search companies** `hubspot_search_companies` | Search HubSpot companies |
| **Search contacts by criteria** `hubspot_search_contacts_by_criteria` | Search HubSpot contacts |
| **Search CRM objects by criteria** `hubspot_search_crm_objects_by_criteria` | Search HubSpot CRM objects |
| **Search deals** `hubspot_search_deals` | Search HubSpot deals |
| **Search tickets** `hubspot_search_tickets` | Search HubSpot tickets |
| **Update contact** `hubspot_update_contact` | Update a HubSpot contact |
| **Audit pipeline changes** `hubspot_audit_pipeline_changes` | Retrieves a reverse chronological audit log of all changes for a specific, existing HubSpot CRM |
| **Batch read companies by properties** `hubspot_batch_read_companies_by_properties` | Batch-retrieves up to 100 HubSpot company records by their IDs in a single request |
| **Fetch import error details** `hubspot_fetch_import_error_details` | Fetches a paginated list of read-only error details for a specific HubSpot CRM import |
| **Fetch recording settings** `hubspot_fetch_recording_settings` | Fetches call recording settings for a specified, existing HubSpot calling extension app |
| **Get AB email variation** `hubspot_get_ab_email_variation` | Retrieves the alternate variation of a specified A/B marketing email; the `emailId` must |
| **Get account info** `hubspot_get_account_info` | Gets current HubSpot account info (email, hubId, user details) using access-token lookup |
| **Get active imports list** `hubspot_get_active_imports_list` | Retrieves a list of currently active import jobs in HubSpot for monitoring ongoing data |
| **Get aggregated statistic intervals** `hubspot_get_aggregated_statistic_intervals` | Retrieves aggregated statistics for marketing emails (e.g., send counts), grouped by specified |
| **Get aggregated statistics** `hubspot_get_aggregated_statistics` | Retrieves aggregated statistics for marketing emails, optionally within an ISO8601 formatted |
| **Get all marketing emails for a hub spot account** `hubspot_get_all_marketing_emails_for_a_hub_spot_account` | Fetches a list of marketing emails from a HubSpot account, with options for filtering, sorting |
| **Get contact IDS** `hubspot_get_contact_ids` | Fetches a list of contact IDs for a specific HubSpot campaign based on interaction type |
| **Get deals** `hubspot_get_deals` | Retrieves multiple HubSpot deals by their IDs in a single batch request |
| **Get emails** `hubspot_get_emails` | Retrieves multiple HubSpot email engagement records by their IDs in a single batch request |
| **Get import record information** `hubspot_get_import_record_information` | Retrieves a comprehensive summary of a specific HubSpot CRM import record by its `importId` |
| **Get marketing email draft** `hubspot_get_marketing_email_draft` | Retrieves the draft version of a marketing email by its `emailId`; if no draft exists, returns |

## Example prompts

**Look before you write**

> Search HubSpot for a contact with the email \<email> using hubspot_search_contacts_by_criteria. If they exist, show me the record. Only if they do not, create them with hubspot_create_contact using the details above.

**Review the pipeline**

> Use hubspot_search_deals to pull every open deal closing this quarter, then give me a table of deal name, amount, stage, and owner from hubspot_retrieve_owners, sorted by amount.

**Log a follow-up**

> Find the company \<name> with hubspot_search_companies, then create a task with hubspot_create_task to follow up next Tuesday, associated with that company. Confirm the task id.

**Audit recent pipeline changes**

> Use hubspot_audit_pipeline_changes to show me what moved stage in the last 14 days and who changed it. Flag anything that skipped a stage.

## How the HubSpot tools take their arguments

Details that decide whether a HubSpot prompt updates the right record instead of creating a new one.

- **Search before create, always.** `hubspot_search_contacts_by_criteria`, `hubspot_search_companies`, and `hubspot_search_deals` are the guard against duplicates. HubSpot dedupes on email for contacts and domain for companies, so anything else creates a second record.
- **Object ids are numeric and must be looked up.** `hubspot_read_contact`, `hubspot_get_company`, `hubspot_get_deal`, and `hubspot_get_ticket` all take real ids; an id from an example fails as a permission error rather than a clean not-found.
- **`hubspot_search_crm_objects_by_criteria` covers custom objects.** If your portal has objects beyond the standard set, that is the tool, rather than assuming there is no support.
- **Owners are their own lookup.** `hubspot_retrieve_owners` maps HubSpot owner ids to people. Assigning a record without it means guessing at an id.
- **Batch reads exist.** `hubspot_batch_read_companies_by_properties` pulls many records with chosen properties in one call, which is both faster and far easier on rate limits than looping.
- **Updates are partial.** `hubspot_update_contact` changes the properties you pass, so listing a property with an empty value clears it rather than leaving it alone.

## ClawLink vs. building it yourself

The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for OpenClaw. That is fine if you want to build and maintain the integration yourself. Most teams just want HubSpot working from chat.

| | Manual | ClawLink |
|---|---|---|
| **Connection flow** | Register a HubSpot app, configure redirect URLs, manage consent details, and reconnect users when auth settings drift. | Users connect HubSpot through the hosted browser flow and ClawLink keeps the token lifecycle out of your app code. |
| **Ongoing maintenance** | You own refresh logic, permission debugging, environment config, and every provider-specific edge case for HubSpot. | ClawLink handles the repetitive integration plumbing so your team can focus on the workflow instead of the infrastructure. |
| **Agent usability** | You still need to expose the right HubSpot actions to the runtime in a format your agent can reliably use. | 224 tools for HubSpot are already exposed through ClawLink, so the agent can read and act from chat immediately. |

## ClawLink vs. Composio

Composio also exposes HubSpot to AI agents. It is developer infrastructure: Python and TypeScript SDKs, an MCP server, and a catalog past 1,000 apps, aimed at teams shipping agent products. ClawLink is built for OpenClaw users instead. You install the plugin once, connect HubSpot in the browser, and the 224 tools above work from chat. There is no SDK, no config file, and no API key handling. Choosing between them? Read the full [Composio alternatives](https://claw-link.dev/hub/composio-alternatives) comparison.

### OpenClaw installed the HubSpot skill but can't call the tools
The ClawHub skill teaches OpenClaw about HubSpot, but the calls run through the ClawLink plugin and your connected account. Make sure HubSpot is connected in the dashboard, then start a fresh chat so OpenClaw reloads the tool catalog. If OpenClaw runs as a persistent gateway, restart it so the new tools register.

### Connection succeeds but no tools appear
Reconnect HubSpot from the dashboard, then start a fresh chat if the runtime still has the old tool catalog loaded.

### "Tool schema not loaded yet" error when calling HubSpot tools
HubSpot tool schemas load on demand the first time a tool runs and are cached after that, so this error usually clears on its own: wait a few seconds and retry the same request. If every HubSpot call keeps failing with it in a fresh chat, reconnect from the dashboard, and contact support if it still persists — that pattern points to a configuration problem on our side, not something you can fix by reconnecting again.

### HubSpot returns 403 or "permission denied" on one action while others work
Two usual causes. The connected account may not have access to the specific workspace, inbox, store, or project in the request — check that first. If access looks right, the agent may have sent a placeholder value (like "YOUR_ID" or an example id from documentation) instead of a real one: ask it to run a list or search tool first, then retry the action with a real id from those results. Most failures at this stage are one of these two, not ClawLink bugs.

### HubSpot returns 403 or a permission error although the account is connected
This is the case the search results answer worst and the one this page is asked about most. Work through it in order. First, user permissions: HubSpot's model is granular, so the connected user may lack access to that object type, that pipeline, or records owned by other people, and the failure looks like a broken integration while everything else works. Second, the scope of the grant — a partial approval leaves a connection that reads but cannot write, so if every create fails and every search succeeds, reconnect and accept the full set. Third, the portal, which is the sandbox-versus-production trap. Last, a placeholder: HubSpot object ids are numeric, and an id lifted from documentation fails as a permission error rather than a not-found, so have the agent search first and use a real id.

Ask the agent to diagnose it:

```text
Call hubspot_get_account_info and hubspot_retrieve_owners, and tell me which portal this connection is on and which user it acts as. Then run hubspot_search_contacts_by_criteria for anything at all and tell me if results come back. Do not retry the failed call yet.
```

### The agent created a duplicate contact or company
Creating is a single call and searching is not, so an agent told to "add this person to HubSpot" will often do exactly that without checking. HubSpot's own deduplication keys on email for contacts and domain for companies, which means a record created with a slightly different email address becomes a genuine duplicate rather than being merged. The prompt-level fix is to make the search explicit: ask for hubspot_search_contacts_by_criteria on the email first, then create only if nothing comes back. If duplicates already exist, merging is a HubSpot-side operation rather than something to ask the agent to improvise.

Ask the agent to diagnose it:

```text
Search HubSpot for this email with hubspot_search_contacts_by_criteria and show me every match, including the record ids and created dates, before creating anything.
```

### HubSpot search returns nothing for a record you can see in the CRM
Two causes. The first is the criteria shape: HubSpot's search filters on properties with specific operators, so a search that names a property the portal does not have, or uses a value in the wrong format, returns an empty set rather than an error. The second is record ownership and visibility — a user limited to their own records genuinely cannot see everyone's, so the agent's empty result is accurate for that user. Ask it to search on email or domain first, which are the most reliable keys, before assuming anything is wrong with the connection.

### OAuth finished in the browser but the account is still missing
Try reconnecting HubSpot and complete the consent flow in the same browser session. Partial OAuth approvals or switching accounts mid-flow can leave the connection incomplete.

### Is there a OpenClaw HubSpot integration?
Yes. ClawLink is the fastest way to connect OpenClaw to HubSpot: link your HubSpot account once in the browser and OpenClaw can call the HubSpot API through 224 ready-made tools — no custom code or token handling.

### How do I add HubSpot to OpenClaw with ClawLink?
Paste the setup prompt from this page into OpenClaw. It installs the ClawLink HubSpot skill from ClawHub, then you click Connect in the dashboard to authorize HubSpot. OpenClaw calls the tools from the next message — no config files or API keys to manage.

### How long does it take to connect HubSpot to OpenClaw?
About two minutes. Sign in, click Connect next to HubSpot in the dashboard, authenticate, and OpenClaw can use it from the next chat message.

### Why use ClawLink instead of wiring HubSpot up myself?
The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for OpenClaw. That is fine if you want to build and maintain the integration yourself. Most teams just want HubSpot working from chat.

### Do I need a HubSpot API key or a private app token?
Neither. HubSpot deprecated API keys, and the usual replacement is creating a private app in your HubSpot account, choosing scopes, and copying its access token into whatever is calling the API. ClawLink uses HubSpot's OAuth flow instead, so you approve the connection on HubSpot's own screen and the credential stays on the ClawLink server. The practical difference is what happens when things change: a private app token sits wherever you put it until someone rotates it, while an OAuth grant can be revoked from the ClawLink dashboard or from HubSpot's connected-apps settings and stops working immediately.

### Which HubSpot account and permissions does the agent get?
The portal you selected during the connect flow, with your user's permissions inside it. That matters more in HubSpot than in most tools because permissions there are genuinely granular — a user restricted to their own contacts, or without access to a particular pipeline, produces an agent with exactly those limits. If your organisation has several portals, for example a sandbox and production, check which one you approved before concluding that records are missing; a connection pointed at the sandbox looks completely healthy and finds nothing you recognise.

### Is it safe to connect HubSpot to an AI agent?
The connection is HubSpot's own OAuth flow, so the permissions are approved on HubSpot's screen, no password is handled, and access can be revoked from either side at any time. The risks worth planning for are about your CRM rather than the mechanism. The agent can create and update records, so a vague instruction can produce duplicate contacts or overwrite a field somebody curated — ask it to search before it creates, and to show you what it will change. And CRM notes contain text written by other people, so treat what it reads as untrusted input if you are going to let it act on that basis.

### Can it do more than contacts and deals?
Considerably more, and this is where the toolset differs from the small CRM connectors. Alongside contacts, companies, deals, tickets, tasks and owners, it reaches marketing email, A/B variations and aggregated statistics, imports and their error details, pipeline change audits, and generic CRM object search that covers custom objects. The practical consequence is that reporting questions and data-hygiene work are in scope, not just record creation — which is usually where an agent earns its place in a CRM.

### OpenClaw installed the HubSpot skill but can't call the tools
The ClawHub skill teaches OpenClaw about HubSpot, but the calls run through the ClawLink plugin and your connected account. Make sure HubSpot is connected in the dashboard, then start a fresh chat so OpenClaw reloads the tool catalog. If OpenClaw runs as a persistent gateway, restart it so the new tools register.

## Related

- [Connect CentralStationCRM](https://claw-link.dev/openclaw/centralstationcrm) — CentralStationCRM is an easy-to-use CRM software focusing on collaboration and long-term customer relationships.
- [Salesforce tools](https://claw-link.dev/openclaw/salesforce) — Manage CRM data and workflows
- [OpenClaw RepairShopr integration](https://claw-link.dev/openclaw/repairshopr) — RepairShopr is a comprehensive repair shop management software designed to streamline operations, manage customer relationships, and enhance business efficiency.
