# How to connect HubSpot to AI agents?

Connect HubSpot to Sequel with OAuth and ask about contacts, companies, deals, tickets, and pipelines in natural language.

Connect **HubSpot** to Sequel and ask about your CRM — contacts, companies, deals, tickets, and pipeline — in plain English, from the Sequel app or any AI tool wired up to the [MCP server](/docs/install). Then join it with your product or revenue data for questions a single tool can't answer alone.

## What you'll need

- A **HubSpot account** (portal) with access to the CRM data you want to query.
- Nothing to copy or paste — HubSpot connects over **OAuth**. You authorize Sequel and pick the portal.

Sequel requests **read-only** scopes for CRM objects and their schemas: `crm.objects.{contacts,companies,deals,tickets}.read` and `crm.schemas.{contacts,companies,deals,tickets}.read`. No write scopes are requested, so Sequel cannot create, update, or delete records.

## Connect it

<Steps>
<Step title="Open a new connection">
In the Sequel dashboard, go to **Connections → New connection**, choose **HubSpot**, and give it a name.
</Step>

<Step title="Connect with HubSpot">
Click **Connect with HubSpot**. You'll be redirected to HubSpot's OAuth screen.
</Step>

<Step title="Pick a portal and authorize">
Choose the HubSpot portal you want Sequel to query and confirm the read-only CRM scopes. Connect additional portals later by repeating this flow — each portal is a separate Sequel data source.
</Step>

<Step title="Confirm">
Sequel verifies the token against your hub and the connection goes live.
</Step>
</Steps>

<Callout type="info" title="Custom properties just work">
The connector reads each object's property schema at query time, so your real custom property names (for example `ACV` or `Onboarding Status`) show up in answers without any manual setup.
</Callout>

## What you can query

Sequel exposes read tools over the HubSpot v3 CRM API:

- **Contacts** — search by any property combination, custom or default.
- **Companies** — segment by industry, lifecycle stage, or custom fields.
- **Deals** — filter and aggregate by stage, owner, pipeline, amount, or close date.
- **Tickets** — volume, priority, stage, and aging across pipelines.
- **Pipelines** and **properties** — enumerate deal/ticket pipeline + stage IDs and discover available property names per object type.

## Try it

- "How many open deals do we have, broken down by stage and owner?"
- "What's the win rate by lead source for deals closed this quarter?"
- "Show me deals over $50k that have been in 'Proposal Sent' for more than 30 days."
- "List the 20 most recently created tickets with their priority and pipeline."

## Join it with other sources

HubSpot gets more powerful alongside your other data. With a database also connected, ask:

> "For accounts in the 'Closed Won' stage in HubSpot, what's their current MRR and active seat count in our Postgres `subscriptions` table?"

## Troubleshooting

| Symptom | Likely fix |
| --- | --- |
| Authorization fails | Re-run the OAuth flow and confirm you grant the requested read-only CRM scopes. Tokens refresh automatically, but a revoked app needs reconnecting. |
| Missing object or property | The authorized portal may lack access to that CRM object, or the user who connected doesn't have permission — reconnect with an account that can see the data. |
| Data looks empty | Confirm the portal actually has records matching the filters and date range you're asking about. |

## Related

- [Connecting your first data source](/docs/connecting-your-first-data-source)
- [Chatting with your data](/docs/chatting-with-your-data)
- [Browse all integrations](/docs/integrations)
