HubSpot writes: the deals desk gets hands
The second action on the framework — update a deal's stage, a contact's fields, a missing next-step — proposed by an agent, approved by a human, executed against the CRM.
Actions gave the runtime a gated way to touch the outside world, starting
with gmail.send. This release adds the one that moves revenue: hubspot.update (v1.41) — write
properties on a HubSpot deal, contact, or company.
One action, two jobs
POST /api/v1/reviews/decide # after an agent proposes it
# the pending action:
{ "action": "hubspot.update",
"objectType": "deals", "objectId": "8801",
"properties": { "dealstage": "presentationscheduled", "hs_next_step": "Send SOW Thursday" } }
It's deliberately general — set any properties on any of the three CRM objects — because two of the RevOps goals need exactly that:
- The deals desk moves deals forward: stage changes, next-step updates, owner assignment.
- The hygiene sweep keeps the funnel honest: fill a missing amount, fix a wrong lifecycle stage, correct a stale close date — across Lead → MQL → SQL → Opportunity.
Gated, like every write
Nothing here bypasses the model. An agent that spots a stale deal proposes the fix; it lands in the team queue routed to the right person; it executes against HubSpot only on approval, with the private-app token pulled from the encrypted vault. The CRM is the system of record — so the system of record only changes when a human says so.