HubSpot holds your go-to-market: who your contacts are, which companies they belong to, and which deals are moving. Contextflo connects it to Claude and ChatGPT so you can ask about pipeline, lead sources and rep activity in plain English, next to the data in Stripe and your warehouse.
How it connects
HubSpot connects with an API key. You create a private app in HubSpot, give it read scopes on the objects Contextflo uses, and paste its access token into Contextflo. Private app tokens start with pat-.
Contextflo sends only read requests to the HubSpot CRM API.
What's covered
| Object | What you get | Filters |
|---|---|---|
| Contacts | Any contact property, including lifecycle stage, lead source and owner | Property filters, created and modified date |
| Companies | Any company property, including domain, industry and owner | Property filters, created and modified date |
| Deals | Any deal property, including pipeline, stage, amount, close date and owner | Property filters, created and modified date |
| Tickets | Any ticket property, including pipeline, status and priority | Property filters, created and modified date |
| Activities | Calls, emails, meetings, notes and tasks | Property filters, date |
| Associations | Which contacts and companies are linked to a deal, and the reverse | Object and record id |
| Properties, pipelines, owners | Field names and types, stage names, owner names, so ids read as words | Object type |
Permissions
Two layers:
- The token. The private app only has the read scopes you gave it. That is the ceiling: nothing in Contextflo can go past it.
- Groups in Contextflo. Admins allow or deny each HubSpot endpoint per group. Sales can see deals while support only sees tickets, for example.
Freshness
There is no sync. Every question calls the HubSpot API when you ask it, so a deal moved to Closed Won five minutes ago shows up in the answer. Nothing is copied into a table, and there is no schedule to wait for.
Set it up
- Create a private app. In HubSpot, go to Settings > Integrations > Private Apps and click Create a private app. Name it something like
contextflo-read. - Pick read scopes. On the Scopes tab, add the
.readscopes for contacts, companies, deals, tickets, owners and their schemas. Leave every write scope off, then click Create app. - Copy the token. Open the app's Auth tab and copy the access token.
- Paste it in Contextflo. Go to Settings > Data sources, add HubSpot, and paste the token. You need to be an admin.
- Set group access. Allow or deny the HubSpot endpoints for each group.
- Connect your AI tool. If Claude or ChatGPT isn't talking to Contextflo yet, add the connector: Claude or ChatGPT. Then ask your first question.
FAQ
Can Contextflo change anything in our HubSpot account?
No. You give the private app read scopes only, and Contextflo only sends read requests. It cannot create, edit or delete contacts, companies or deals.
Why a private app token?
A private app token only carries the scopes you pick when you create the app, so you decide exactly what Contextflo can read. You can rotate or delete it in HubSpot at any time.
Do you copy our HubSpot data into a warehouse?
No. Every question calls the HubSpot API at that moment and nothing is synced or stored as a table. The answer reflects your account as of the question.
Does it work with custom properties?
Yes. Claude can list the properties on each object, including custom ones, and ask for them by their internal name.
Can I join HubSpot data with Stripe or my warehouse?
Claude or ChatGPT can pull deals from HubSpot and then look up Stripe or run a query on your warehouse in the same conversation, matching on email, domain or an id you store on both sides. It is lookups side by side, not a single SQL join.