AI agents for HubSpot
The CRM your pipeline reporting depends on. AGNT connects to HubSpot so agents can read what happens there, reason about it, and act — with a receipt for every run.
Lead Researcher is a ready-made agent that works in HubSpot — free, and it runs on your machine.
HubSpot and AGNT, in brief
| What it does | Lets an AGNT agent read from and act in HubSpot. |
|---|---|
| Connects with | Bearer — held in the local vault |
| AGNT node | custom-api, or the zapier-action bridge |
| Runs when | A contact or deal is created |
| Typical build time | Ten minutes |
| Where data goes | Nowhere by default — AGNT runs on your machine and credentials never leave it. |
What you can automate
Reacts when…
- a contact or deal is created
- a stage changes
- a form submits
Agents can…
- create and enrich contacts
- update deals and notes
- log activity
Teams use it for
- every inbound lead researched and scored
- deal notes written from calls and threads
- pipeline reports narrated weekly
Build it: the HubSpot workflow
Design goal for HubSpot: every inbound lead researched and scored; deal notes written from calls and threads; pipeline reports narrated weekly. The template below supplies configurable nodes, not the complete logic for those goals.
Use this HubSpot setup template to arrange the schedule, input review and API operation. Configure the account-specific fields and add your own decision and approval controls before activation.
This is a schema-checked starting point, not an end-to-end tested automation. Replace every CONFIGURE_ value, choose the operations you intend, connect credentials and map source outputs into later inputs. An edge orders steps; it does not supply a condition, an approval gate or a field mapping. Add and test those controls explicitly before any write. Cloud APIs and model providers may receive data. Keep the workflow inactive until tested with fixtures.
{
"id": "d2752dbd-fcdc-461d-affc-0c1ad51b15b2",
"name": "HubSpot — read, decide, act",
"nodes": [
{
"id": "7c4d6c4d-2df5-4486-a4ad-4e83a59fe820",
"text": "Run on a schedule",
"x": 512,
"y": 144,
"isEditing": false,
"type": "trigger-timer",
"icon": "clock",
"category": "trigger",
"isSelected": false,
"parameters": {
"fireOnStart": "No",
"scheduleType": "Interval",
"schedule": "Every 15 Minutes"
},
"description": "Setup template for Timer Trigger. This trigger node fires the workflow at specified intervals or at a specific time. Configure credentials, inputs and output mapping before use.",
"error": null,
"isActive": false,
"output": null,
"outputs": {}
},
{
"id": "e1253e77-83e2-4be1-ac50-eda81addce96",
"text": "Review source and draft",
"x": 512,
"y": 336,
"isEditing": false,
"type": "agnt-agent",
"icon": "agnt",
"category": "action",
"isSelected": false,
"parameters": {
"agentId": "CONFIGURE_AGENTID",
"message": "Decide what needs to happen in HubSpot. Explain your reasoning.\nSource input: CONFIGURE_SOURCE_INPUT. Produce a reviewable draft only; do not take external actions."
},
"description": "Setup template for Agent Chat. Chat with an AI agent from your agent library. Select an agent and send messages to interact with it within your workflow. Configure credentials, inputs and output mapping before use.",
"error": null,
"isActive": false,
"output": null,
"outputs": {}
},
{
"id": "5e7febc1-4dd5-4ede-acdd-23a569738450",
"text": "Call the HubSpot API",
"x": 512,
"y": 528,
"isEditing": false,
"type": "custom-api",
"icon": "connect",
"category": "action",
"isSelected": false,
"parameters": {
"url": "https://api.hubapi.com/crm/v3/objects/contacts",
"method": "GET",
"authType": "None",
"headers": "{}",
"query": ""
},
"description": "Setup template for Custom API Request. This action node makes a custom API request to any endpoint with configurable method, headers, and authentication. Configure credentials, inputs and output mapping before use.",
"error": null,
"isActive": false,
"output": null,
"outputs": {}
}
],
"edges": [
{
"id": "85215fe8-c54a-4b75-aaba-2835b2d3b4c2",
"start": {
"id": "7c4d6c4d-2df5-4486-a4ad-4e83a59fe820",
"type": "output"
},
"end": {
"id": "e1253e77-83e2-4be1-ac50-eda81addce96",
"type": "input"
},
"startX": 800,
"startY": 168,
"endX": 512,
"endY": 360
},
{
"id": "2309414a-85b5-4ce8-a7e9-e34c6f539ac8",
"start": {
"id": "e1253e77-83e2-4be1-ac50-eda81addce96",
"type": "output"
},
"end": {
"id": "5e7febc1-4dd5-4ede-acdd-23a569738450",
"type": "input"
},
"startX": 800,
"startY": 360,
"endX": 512,
"endY": 552
}
],
"zoomLevel": 1,
"canvasOffsetX": 0,
"canvasOffsetY": 0,
"isTinyNodeMode": false
}
Configure Custom API Request
This action node makes a custom API request to any endpoint with configurable method, headers, and authentication.
- url — The URL of the API endpoint Current example:
https://api.hubapi.com/crm/v3/objects/contacts. - method — The HTTP method for the request Current example:
GET. - authType — The type of authentication Current example:
None. - query — Query parameters for the request (e.g., 'key1=value1&key2=value2') Current example:
. - headers — Optional headers for the request. e.g., {"Content-Type": "application/json"} Current example:
{}.
Install Lead Researcher — it runs on HubSpot
Lead Researcher is a working agent that uses HubSpot. Installing it drops the whole workflow onto your canvas — connected, editable, and yours to change.
Runs on your own machine · See what it does
Pipeline hygiene is a process problem
CRM data is bad everywhere for the same reason: entering it is manual work with a delayed payoff for the person doing it. When an agent writes notes from calls and threads and keeps fields current, hygiene becomes a property of the system rather than a recurring complaint.
Enrichment where reps actually work
Research is only useful if it appears in the record the rep opens. Writing enrichment back into HubSpot as structured fields with the reasoning attached puts it in front of the person who needs it, rather than in a report nobody reads.
How to reach HubSpot from a workflow
HubSpot has no dedicated node in AGNT so far. That is not a blocker — it authenticates with bearer, which the custom-api node handles directly, and the exact call is below.
| What you need | Value |
|---|---|
| Endpoint | https://api.hubapi.com/crm/v3/objects/contacts |
| Method | POST |
| Authentication | Bearer |
| Header | Authorization: Bearer {privateAppToken} |
| Reference | HubSpot API documentation |
Worth knowing: Private app tokens replaced API keys entirely; a key-based example found online will no longer authenticate.
One thing to know before you build
Private app tokens replaced API keys entirely; a key-based example found online will no longer authenticate.
Everything else about HubSpot behaves the way you would expect, so once that is handled the rest of the build is ordinary. The POST above is the shape every other call takes.
Connect HubSpot in two minutes
- Download AGNT Community Core — free, local-first, no account needed to run.
- Connect with one OAuth sign-in from AGNT’s vault — tokens are stored encrypted on your machine and never leave it.
- Drop the HubSpot node into a workflow or hand it to an agent — the first run produces a receipt you can read line by line.
HubSpot + AGNT — common questions
Can agents create and enrich contacts?
Yes, including scoring against your ICP with the reasoning recorded.
Will it overwrite what reps entered?
Only where you allow it. The usual setup fills empty fields and adds notes, leaving human-entered values alone.
Can a form submission trigger a run?
Yes — new contacts, deals, stage changes and form submissions can all start one.