HubSpot Deal & Pipeline Management
Overview
Deals in HubSpot represent sales opportunities -- potential or active revenue from clients. For MSPs, deals track managed services agreements, project engagements, hardware sales, or any revenue opportunity moving through the sales process. Each deal belongs to a pipeline (e.g., "Sales Pipeline" or "Renewals") and progresses through stages (e.g., "Discovery", "Proposal", "Closed Won"). Deals are associated with contacts and companies to provide full context on who is involved and which client the revenue belongs to.
Anti-triggers
- Building or pricing the quote behind the deal — a deal records that an
opportunity exists and what it is worth; the line items, catalog, and margin
live in
salesbuildr-quotesorconnectwise-cpq-quotes. - Sending the customer something to sign — use
pandadoc-documents. - Billing a won deal — moving a deal to Closed Won invoices nobody; use
xero-invoicesorqbo-invoices. - Salesbuildr opportunities — a different vendor's pipeline object with
identical vocabulary; use
salesbuildr-opportunities.
MCP Tools
Available Tools
| Tool | Description | Key Parameters |
|---|---|---|
hubspot_retrieve_deal |
Get a single deal by ID | dealId (required) |
hubspot_create_deal |
Create a new deal | dealname (required), amount, dealstage, pipeline |
hubspot_update_deal |
Update an existing deal | dealId (required), property fields to update |
hubspot_list_deal_properties |
List all available deal properties | None |
hubspot_search_deals |
Search deals by criteria | filterGroups, sorts, limit, after |
Search Deals
Call hubspot_search_deals with filter groups to find deals:
Search by deal name:
{
"filterGroups": [
{
"filters": [
{
"propertyName": "dealname",
"operator": "CONTAINS_TOKEN",
"value": "Managed Services"
}
]
}
],
"limit": 100
}
Search by deal stage:
{
"filterGroups": [
{
"filters": [
{
"propertyName": "dealstage",
"operator": "EQ",
"value": "proposalpendinng"
}
]
}
],
"sorts": [
{
"propertyName": "amount",
"direction": "DESCENDING"
}
],
"limit": 100
}
Search by close date range (upcoming closings):
{
"filterGroups": [
{
"filters": [
{
"propertyName": "closedate",
"operator": "GTE",
"value": "2026-02-01"
},
{
"propertyName": "closedate",
"operator": "LTE",
"value": "2026-03-31"
}
]
}
],
"limit": 100
}
Search for high-value open deals:
{
"filterGroups": [
{
"filters": [
{
"propertyName": "amount",
"operator": "GT",
"value": "10000"
},
{
"propertyName": "dealstage",
"operator": "NOT_IN",
"values": ["closedwon", "closedlost"]
}
]
}
],
"sorts": [
{
"propertyName": "amount",
"direction": "DESCENDING"
}
],
"limit": 100
}
Create a Deal
Call hubspot_create_deal with the deal's properties:
Example: Create a managed services deal:
dealname:Acme Corp - Managed IT Servicesamount:5000dealstage:appointmentscheduledpipeline:defaultclosedate:2026-04-15hubspot_owner_id:67890
Update a Deal
Call hubspot_update_deal with the dealId and the properties to change:
Example: Move deal to next stage:
dealId:54321dealstage:proposalpendingamount:6000
Retrieve a Deal
Call hubspot_retrieve_deal with the dealId:
Example:
hubspot_retrieve_dealwithdealId=54321
Key Concepts
Default Pipeline Stages
HubSpot's default sales pipeline includes these stages (your account may have custom stages):
| Stage ID | Display Name | Probability | MSP Context |
|---|---|---|---|
appointmentscheduled |
Appointment Scheduled | 20% | Discovery call booked |
qualifiedtobuy |
Qualified to Buy | 40% | Budget and authority confirmed |
presentationscheduled |
Presentation Scheduled | 60% | Demo or proposal meeting set |
decisionmakerboughtin |
Decision Maker Bought-In | 80% | Key stakeholder agrees |
contractsent |
Contract Sent | 90% | MSA or SOW sent for signature |
closedwon |
Closed Won | 100% | Deal signed, revenue booked |
closedlost |
Closed Lost | 0% | Deal did not close |
Multiple Pipelines
HubSpot supports multiple pipelines for different deal types. Common MSP pipelines:
| Pipeline | Use Case |
|---|---|
| Sales Pipeline | New client acquisition |
| Renewals | Annual contract renewals |
| Projects | One-time project engagements |
| Hardware | Hardware procurement deals |
Deal Amount
The amount field represents the deal's monetary value. For MSPs:
- Monthly recurring deals - Set amount to the monthly recurring revenue (MRR)
- Annual contracts - Set amount to the total contract value (TCV)
- One-time projects - Set amount to the project fee
- Be consistent within each pipeline to enable accurate forecasting
Forecast Categories
Deals can be categorized for forecasting:
| Category | Description |
|---|---|
omit |
Excluded from forecast |
pipeline |
In pipeline, not yet committed |
bestCase |
Best case scenario |
commit |
Committed, high confidence |
closed |
Closed won |
Field Reference
Core Fields
| Field | Type | Description |
|---|---|---|
dealname |
string | Deal name |
amount |
number | Deal amount (currency) |
dealstage |
enumeration | Current pipeline stage |
pipeline |
enumeration | Pipeline the deal belongs to |
closedate |
date | Expected or actual close date |
hubspot_owner_id |
number | Assigned owner (user ID) |
dealtype |
enumeration | Deal type (newbusiness, existingbusiness) |
description |
string | Deal description |
createdate |
datetime | Record creation date |
lastmodifieddate |
datetime | Last modification date |
notes_last_updated |
datetime | Last note timestamp |
hs_deal_stage_probability |
number | Stage-based close probability |
hs_forecast_amount |
number | Weighted forecast amount |
hs_forecast_probability |
number | Forecast probability |
hs_closed_amount |
number | Actual closed amount |
hs_is_closed |
boolean | Whether the deal is closed |
hs_is_closed_won |
boolean | Whether the deal is closed won |
num_associated_contacts |
number | Associated contacts count |
hs_num_associated_company |
number | Associated companies count |
Common Workflows
Search Deals by Stage
- Call
hubspot_search_dealswith a filter ondealstage - Sort by
amountdescending to see highest-value deals first - Review associated companies and contacts for context
Update Deal Stage
- Call
hubspot_retrieve_dealto confirm current stage and details - Call
hubspot_update_dealwith the newdealstagevalue - Optionally update
amountif the deal value has changed - Call
hubspot_create_noteto document why the stage changed
Pipeline Overview
- Call
hubspot_search_dealswith a filter excludingclosedwonandclosedloststages - Group results by
dealstage - For each stage, calculate:
- Number of deals
- Total value
- Average deal size
- Weighted value (total * stage probability)
- Sum weighted values for pipeline forecast
Revenue Forecast
- Call
hubspot_search_dealswith filters:dealstageNOT INclosedlostclosedatewithin the forecast period
- For closed-won deals, use actual
amount - For open deals, calculate weighted amount:
amount * hs_deal_stage_probability - Sum for total forecasted revenue
Create a Deal with Company Association
- Find the company - Call
hubspot_search_companieswith the company name - Find the contact - Call
hubspot_search_contactsfor the decision-maker - Create the deal - Call
hubspot_create_dealwith deal name, amount, stage, and close date - Associate with company - Call
hubspot_create_associationfrom deal to company - Associate with contact - Call
hubspot_create_associationfrom deal to contact - Log creation note - Call
hubspot_create_noteto document the deal context
Stale Deal Review
- Call
hubspot_search_dealswith filters:dealstageNOT INclosedwon,closedlostlastmodifieddateless than 30 days ago
- For each stale deal, note the owner, company, and amount
- Create tasks for deal owners to follow up
Response Examples
Single Deal:
{
"id": "54321",
"properties": {
"dealname": "Acme Corp - Managed IT Services",
"amount": "5000",
"dealstage": "proposalpending",
"pipeline": "default",
"closedate": "2026-04-15T00:00:00.000Z",
"hubspot_owner_id": "67890",
"dealtype": "newbusiness",
"hs_deal_stage_probability": "0.6",
"createdate": "2026-01-10T09:00:00.000Z",
"lastmodifieddate": "2026-02-20T11:30:00.000Z"
},
"createdAt": "2026-01-10T09:00:00.000Z",
"updatedAt": "2026-02-20T11:30:00.000Z"
}
Search Results:
{
"total": 15,
"results": [
{
"id": "54321",
"properties": {
"dealname": "Acme Corp - Managed IT Services",
"amount": "5000",
"dealstage": "proposalpending",
"closedate": "2026-04-15T00:00:00.000Z"
}
},
{
"id": "54322",
"properties": {
"dealname": "Beta Inc - Network Upgrade",
"amount": "12000",
"dealstage": "contractsent",
"closedate": "2026-03-01T00:00:00.000Z"
}
}
],
"paging": {
"next": {
"after": "54322"
}
}
}
Error Handling
Common Errors
| Error | Cause | Resolution |
|---|---|---|
| Deal not found | Invalid deal ID | Verify the ID with hubspot_search_deals |
| Invalid deal stage | Stage ID not valid for the pipeline | Use hubspot_list_deal_properties to check valid stages |
| Invalid pipeline | Pipeline ID not recognized | Check your HubSpot account for available pipelines |
| Invalid close date | Date format incorrect | Use ISO 8601 format (YYYY-MM-DD) |
| Rate limited | Too many requests | Wait 10 seconds and retry |
Best Practices
- Name deals consistently - Use format "Company Name - Service Type" for easy identification
- Always set close date - Forecast accuracy depends on close dates being realistic and updated
- Associate with company and contact - Every deal should be linked to both for full context
- Update stages promptly - Move deals through stages as conversations progress
- Track deal type - Distinguish new business from existing business for accurate reporting
- Review stale deals - Regularly check for deals that have not been updated recently
- Assign owners - Every deal should have a
hubspot_owner_idfor accountability - Separate pipelines - Use distinct pipelines for different deal types (new sales, renewals, projects)
Related Skills
- HubSpot API Patterns - MCP tools reference and connection info
- HubSpot Contacts - Contacts associated with deals
- HubSpot Companies - Companies associated with deals
- HubSpot Tickets - Support tickets (may relate to deal delivery)
- HubSpot Activities - Notes, tasks, and engagement tracking on deals