---
name: "hubspot_connect"
area: "hubspot"
title: "Connect HubSpot"
price: "free"
method: "POST"
url: "https://api.conecto.chat/v1/tools/hubspot_connect"
mcp_server: "https://api.conecto.chat/mcp/hubspot"
auth: "Authorization: Bearer <conecto_sk_ key>"
docs_url: "https://conecto.chat/tools/hubspot/hubspot_connect"
---

# Connect HubSpot (`hubspot_connect`)

Connects the company's HubSpot through its own private app's token.

Connect the company's own HubSpot, which stays the source of truth: the agent finds, reads and changes contacts, companies, deals and tickets there. The company makes a private app in HubSpot (Settings, Integrations, Private apps) with the CRM scopes the agent may use, and gives its access token, which is checked before anything is kept. On accounts with an owner, changing an existing record waits for the owner's approval by default. Free.

Price: Free. A call that fails costs nothing.

## Use it when

The company keeps its customers in HubSpot and wants the agent to work in them there.

## Say this to your agent

> Connect our HubSpot. Here is the private app's token.

## Inputs

| Name | Type | Required | Description | Allowed values | Default |
|---|---|---|---|---|---|
| `token` | string | yes | The private app's access token. Never shown again. 10 to 500 characters. Stored encrypted and shown only as [redacted]. |  |  |

## Example

Written for Hansen & Voss, a restaurant-equipment wholesaler in Hamburg with 60 staff.

MCP: call `hubspot_connect` on the MCP server `https://api.conecto.chat/mcp/hubspot` with these arguments:

```json
{
  "token": "pat-eu1-example-private-app-token"
}
```

REST:

```bash
curl https://api.conecto.chat/v1/tools/hubspot_connect \
  -H "Authorization: Bearer $CONECTO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"token": "pat-eu1-example-private-app-token"}'
```

## Response

```json
{
  "call_id": "5f0c8a2e-3b7d-4c1e-9a64-2d8e1f7b0c93",
  "tool": "hubspot_connect",
  "status": "succeeded",
  "replayed": false,
  "cost_usd": "$0.00",
  "balance_usd": "$19.75",
  "result": {
    "hubspot": {
      "connected_at": "2026-10-14T08:00:00+00:00"
    },
    "need_approval": [
      "hubspot_update"
    ]
  }
}
```

`result`: hubspot: connected_at; need_approval, the tools that now wait for the owner.

## Errors

| Code | Status | When | Fix |
|---|---|---|---|
| `vendor_rejected` | 502 | HubSpot refused the token. | Copy the private app's token again. |

The refusals every tool can give (401 key, 402 balance, 429 limits) are on the errors page: https://conecto.chat/docs/errors.md

## Related

- [hubspot_search](https://conecto.chat/tools/hubspot/hubspot_search.md): Contacts, companies, deals or tickets in HubSpot matching words. Free up to 1,000,000 reads a month.
- [hubspot_get](https://conecto.chat/tools/hubspot/hubspot_get.md): One HubSpot record by its id, with its usual properties or the ones named. Free up to 1,000,000 reads a month.
- [hubspot_create](https://conecto.chat/tools/hubspot/hubspot_create.md): Makes a contact, company, deal or ticket in HubSpot. $0.001 a call.
- [hubspot_update](https://conecto.chat/tools/hubspot/hubspot_update.md): Changes a HubSpot record's properties; waits for the owner by default. $0.001 a call.
- [hubspot_add_note](https://conecto.chat/tools/hubspot/hubspot_add_note.md): Adds a note to a HubSpot record's timeline, where the team sees it. $0.001 a call.
- [hubspot_disconnect](https://conecto.chat/tools/hubspot/hubspot_disconnect.md): Forgets the private app's token; nothing in HubSpot changes. Free.
