AI Agents for HubSpot: 5 Workflows That Actually Earn Their Keep

Five AI agents for HubSpot that actually earn their keep, built around deal-stage tracking, post-call CRM updates, and at-risk-deal Slack digests. Plus a worked example you can fork.

Major TeamUpdated
Major X Hubspot
📌 Key takeaways
• Start from the workflow you want. The agent is just how you ship it.
• Trigger HubSpot agents with webhooks. Polling a CRM for deal changes wastes quota and adds lag.
• Webhook subscriptions are scoped per object type. A deal subscription ignores associated contact edits.
• Read widely, write narrowly. Gate every CRM write-back behind human approval.

What an AI agent for HubSpot is, and what it isn't

Three different things get called an "AI agent for HubSpot," and only one of them is what this article is about.

The first is HubSpot Breeze, HubSpot's own in-product AI: the Breeze Assistant copilot, Breeze Agents (Prospecting, Customer, Data) for high-volume in-product tasks, and Breeze Intelligence for enrichment and conversation features. Breeze is good at what lives inside HubSpot. It is not built to span Gong, DocuSign, and Slack with logic you define.

The second is a website chatbot that logs to HubSpot. Useful, narrow, not the thing.

The third is worth your time. An agent here is event-triggered and multi-step: it wakes on a HubSpot event, calls the HubSpot API plus at least one other system, makes a decision from instructions you wrote, and acts. A HubSpot Workflow fires deterministic if-this-then-that rules. An agent reads context a rule can't encode, like the sentiment of last week's Gong call. If you're new to agents, start here.

When an AI agent over HubSpot actually helps

An agent earns its place when a decision sits between two systems and a human keeps doing it by hand. A deal slips backward a stage and someone reads the call notes to find out why. A rep finishes a call and retypes the outcome. The pattern is the same every time: judgment plus context-gathering across tools, repeated dozens of times a week. The five below are the ones we've seen pay for themselves first.

The 5 workflows

  • Deal-stage tracker
    • Trigger: Deal stage change (webhook)
    • Connectors used: HubSpot, Gong, DocuSign, Slack
    • Time saved/week: ~0.75-2 hrs
    • Best for: Sales Manager/GTM Manager
  • Post-call CRM update
    • Trigger: Gong call ended
    • Connectors used: HubSpot, Gong, Slack
    • Time saved/week: ~1-2.5 hrs
    • Best for: Account executive
  • Inbound lead enrichment
    • Trigger: Form submission (webhook)
    • Connectors used: HubSpot, Apollo, Slack
    • Time saved/week: ~3-5 hrs
    • Best for: Sales / marketing ops
  • At-risk deal digest
    • Trigger: Daily schedule
    • Connectors used: HubSpot, Gong, Slack
    • Time saved/week: ~1.5-3 hrs
    • Best for: Sales Manager
  • Quote-to-contract handoff
    • Trigger: DocuSign envelope signed
    • Connectors used: HubSpot, DocuSign, Stripe, Slack
    • Time saved/week: ~2-3.5 hrs
    • Best for: Account Executive

1. Deal-stage tracker with Gong and DocuSign cross-reference

When a deal moves backward a stage, this agent assembles the story. It triggers on a HubSpot deal-stage change, pulls the most recent Gong call for the associated contact and the DocuSign envelope status, then posts a short Slack brief: what changed, what the last call sounded like, whether paper is stuck. The hard part is association resolution: the deal webhook hands you a deal ID, not the contact, so you fetch associations before you can ask Gong anything. Time saved per rep: roughly 45 minutes to 2 hours a week.

2. Post-call CRM update agent

After a Gong call ends, this agent drafts the deal-note update a rep would otherwise type from memory. It reads the transcript, summarizes outcome and next step, and posts the draft to the rep in Slack with an Approve button. Approve writes the note to HubSpot. Ignore it, and nothing happens. The real work is the summarization prompt: a transcript is long, and most of it isn't a deal note.

3. Inbound lead enrichment with intent scoring

A form submission comes in with an email and not much else. This agent enriches it against a provider like Apollo (Clearbit's data now lives inside Breeze Intelligence), scores intent from the firmographics and the form context, writes the enrichment fields back to the HubSpot contact, and routes hot leads to the right rep in Slack. Enrichment fields are additive and easy to correct, one of the few cases where unattended write-back is reasonable.

4. At-risk deal digest

Every morning, this agent posts one Slack message: deals stalled past your threshold, plus deals where the last Gong call carried negative sentiment. It runs as a scheduled report rather than a change trigger, so a daily cadence is right here, which is different from polling HubSpot to detect edits. The trap is threshold tuning: set "stalled" too tight and the digest becomes noise people ignore. Time saved per manager: roughly 1.5 to 3 hours a week.

5. Quote-to-contract handoff

When a deal hits closed-won and its DocuSign envelope is signed, this agent closes the loop: confirm the signature, update the deal record, optionally start billing in Stripe, and tell revenue ops in Slack the contract is real. The awkward part is timing. Closed-won in HubSpot and signed in DocuSign rarely happen in the same instant, so the agent keys off the DocuSign signature event and reconciles back to the deal.

What you need to build one

The HubSpot API in 200 words

Authenticate with a private app token. For an internal agent, a private app is simpler than OAuth: you create it in your HubSpot account, grant scopes, and get a token you store as a secret. OAuth is for apps you distribute into other people's portals, which an internal RevOps agent isn't.

Three endpoint groups cover most agents. The CRM Objects API reads and writes deals, contacts, companies, and their properties. The Webhooks API lets your app subscribe to events like a deal property changing. The Engagements API handles notes, calls, and tasks, where deal-note write-backs land.

Rate limits are generous. Private apps on Free and Starter get 100 requests per 10 seconds; Professional and Enterprise get 190, with daily caps from 250,000 up to a million calls (see HubSpot's usage details). An event-driven agent rarely comes close. That's the argument for webhooks over polling: you spend a request when something happened, not every five minutes on the chance it did.

A webhook event arrives as a JSON array of one or more changes. A deal-stage change looks like this:

[
{
"eventId": 1903851567,
"subscriptionId": 25,
"portalId": 1234567,
"appId": 1160452,
"occurredAt": 1716304869364,
"subscriptionType": "deal.propertyChange",
"attemptNumber": 0,
"objectId": 9876543210,
"propertyName": "dealstage",
"propertyValue": "contractsent",
"changeSource": "CRM"
}
]

You get the object ID and the property that changed, and nothing else. To learn the deal's amount or its associated contact, you call the CRM API with that objectId. Plan for the extra fetch.

Honest pros and cons of the HubSpot API

What's good: the webhooks are reliable and retry on delivery failure, the OpenAPI spec matches the real API, and there's a sandbox for building without touching production data.

What will bite you: webhook subscriptions are scoped to a single object type. A deal.propertyChange subscription fires on deal property changes and stays silent when an associated contact's email or title changes. If your agent cares about that contact, register a separate contact.propertyChange subscription and resolve the association yourself. HubSpot did add association-change events, but those fire when the link between two records changes, not when a property on the related record does. The associations API is clumsier than you'd expect, and custom objects need Enterprise. Read the official Webhooks API docs before you design around them, not a third-party summary. If you're on Salesforce instead, the same patterns apply, with different webhook semantics.

A worked example: building the deal-stage tracker in Major

Here's the deal-stage tracker from workflow one, end to end. In Major you compose deterministic and AI nodes into one workflow with the connectors wired in, so this is the whole build, down to the node types.

The trigger is a HubSpot webhook on the hs_pipeline_stage property. A filter keeps only the deals worth a human's attention: amount over $25,000 and a stage that moved backward, say contract-sent dropping to negotiation.

  1. HubSpot trigger node. A Deal Property Change webhook on hs_pipeline_stage, filtered to amount over $25,000 and a backward stage move.
  2. HubSpot CRM node. Fetch the deal and its associated contact through the associations API, since the webhook only handed you an objectId.
  3. Gong node. Get the latest call for that contact in the last 14 days. If no call exists, skip the Gong context and continue.
  4. DocuSign node. Fetch the latest envelope for the deal and flag it if it was sent but left unsigned for more than 7 days.
  5. AI node (LLM). Summarize the deal in 80 words from the deal record, the Gong summary, and the DocuSign status, with structured output: sentiment, blocker, suggested next step.
  6. Slack node (Block Kit). Post to #revops with deal name, ARR, AE, the 80-word context, and three buttons: Approve next step, Hand to manager, Snooze 7 days. Approve triggers a HubSpot Engagements node that writes a deal-note; Hand to manager triggers a Slack node that tags the AE's manager in-thread. Both writes are human-gated.

Scope the agent tightly. HubSpot gets crm.objects.deals.read and a write scope limited to notes, nothing that can move a stage. Gong is read-only, DocuSign is envelope-read, Slack can post but not read. Redact PII from the Slack output and keep both writes behind the buttons, with a human in the loop for anything that touches the record. For how to observe what your agent actually decided, that's a separate piece.

⚠️ What this article doesn't cover: none of these patterns let the agent write free-form, AI-generated text into HubSpot fields on its own. Generating prose straight into deal notes or properties is a riskier problem with its own guardrails, and it needs the governance scaffolding this article doesn't cover. We'll take on unattended write-back in a follow-up.

Build this in Major

You just read what this agent does and how its nodes wire together. The connectors, the webhook trigger, the AI node, the Slack buttons are already there to compose. Fork this workflow in Major and have the deal-stage tracker running against your own HubSpot by the afternoon. Start here. If it earns its keep, the other four are the same shape.

Frequently asked questions

Does HubSpot have its own AI agent?
Yes. HubSpot Breeze includes Breeze Agents (Prospecting, Customer, and Data agents), the Breeze Assistant copilot, and over 100 embedded AI features. Breeze works well for tasks that live inside HubSpot. For workflows that span Gong, DocuSign, or Slack with logic you define, you build a custom agent against the HubSpot API instead.
Can AI agents update HubSpot records automatically?
Yes, through the HubSpot API. The safer design routes any write through a human-approval gate, or scopes the agent to low-risk fields like enrichment data rather than deal stage or amount. Writing AI-generated text straight into deal notes without review is where teams get into trouble, so most production agents read freely and gate every write.
What's the difference between a HubSpot Workflow and an AI agent?
A HubSpot Workflow runs deterministic rules: if a property equals X, do Y. An AI agent reads context a rule can't encode, like the sentiment of a call transcript or the gist of a Slack thread, decides based on instructions you wrote, then acts. Use Workflows for fixed flows. Use an agent when the next step depends on judgment.
Do AI agents for HubSpot require coding?
AI agents run on code but do not require you to write code to build anymore. A vibe-code agent builder like Major lets you compose HubSpot triggers, AI nodes, and connector actions visually, with deterministic and AI steps in one workflow. Knowing JSON and REST still helps when you map a webhook payload or shape an API call, but you no longer write the integration plumbing by hand.