Deal loss reasons in HubSpot
Business task
A sales manager needs to understand why the company is losing deals: prospects going to competitors, price objections, product fit issues, or long decision cycles. Analyzing loss reasons helps identify systemic problems (product-market misfit, overpriced offering) as well as situational ones (a specific manager losing deals at the negotiation stage). A breakdown by manager, product, and pipeline stage is required.
Connections
This report requires a HubSpot CRM connection.
- Connector:
hubspot - Required permissions: read access to deals, deal properties, and pipelines via the HubSpot API
- Connection status:
active - Entities: deals (
deal), pipelines (pipeline), stages (stage), users (user) - Specifics: HubSpot lets you customize loss reasons through deal properties. Make sure a required "Loss Reason" field is configured in HubSpot with a correct list of values
- Check: if the "Loss Reason" field isn't filled in by managers, the report will contain many deals with an empty reason — enforce required completion before running the report
Report settings
- Name:
HubSpot deal loss reasons - Report type: analytical report with loss categorization
- Data source: all
hubspotconnections - Date range:
last_quarter— a quarterly sample is enough to spot patterns - Grouping: by loss reason (
lost_reason), manager (responsible_user), pipeline (pipeline_name), and product (product_name) - Sorting: by lost deal amount, descending
- Timezone:
Europe/Moscow
Parameters
{
"date_range": "last_quarter",
"group_by": ["lost_reason", "responsible_user", "pipeline_name", "product_name"],
"sort": { "field": "lost_amount", "direction": "desc" },
"timezone": "Europe/Moscow",
"limit": 2000
}For a month-by-month view of loss reasons, add grouping by close date — you'll be able to see whether the share of price-related rejections is growing month over month.
Metrics
| Metric | Type | Description |
|---|---|---|
lost_deals_count | number | Number of lost deals |
lost_amount | currency | Total value of lost deals |
avg_lost_deal_amount | currency | Average value of a lost deal |
days_to_close | number | Deal duration from creation to loss, in days |
stage_at_loss | string | The stage at which the deal was lost |
Calculated metrics:
{
"calculated_metrics": [
{
"name": "lost_share",
"formula": "IF([total_lost_amount] > 0, ROUND([lost_amount] / [total_lost_amount] * 100, 1), 0)",
"type": "percent",
"description": "The reason's share of total losses"
},
{
"name": "preventable_loss",
"formula": "IF([lost_reason] == \"Price\" OR [lost_reason] == \"Competitors\", 0, [lost_amount])",
"type": "currency",
"description": "Preventable losses (excluding price and competitors)"
}
]
}The preventable_loss metric highlights losses that could theoretically be prevented: poor communication, slow response, a weak presentation, or product-need mismatch. Losses due to price and competitors are considered unavoidable given the current positioning.
Filters
{
"logic": "AND",
"conditions": [
{
"field": "deal_status",
"operator": "EQUAL",
"value": "lost"
},
{
"field": "lost_reason",
"operator": "NOT_EQUAL",
"value": ""
},
{
"field": "lost_amount",
"operator": "GREATER_THAN",
"value": 0
}
]
}deal_status = "lost"— lost deals onlylost_reason != ""— excludes deals with no reason specifiedlost_amount > 0— deals with a nonzero amount only
To focus on a specific reason: lost_reason EQUAL "Went to a competitor". To analyze preventable losses: lost_reason NOT_IN ["Price", "Competitors", "No budget"].
Write mode
Mode: Replace
Loss reasons are largely static data (once a deal is lost, the reason doesn't normally change retroactively under a healthy business process), but a full rewrite is recommended for consistency across the whole quarter. This also guarantees that corrections in HubSpot (a manager changing the loss reason) are reflected in the report.
If the volume of lost deals is very large (10,000+) and the data truly doesn't change, use AppendDedup for speed.
Schedule
{
"schedule": {
"enabled": true,
"interval": "weekly",
"time": "10:00",
"timezone": "Europe/Moscow",
"days_of_week": [1],
"retry_on_failure": true,
"max_retries": 3
}
}Weekly on Mondays at 10:00 AM. For a monthly report ahead of the sales review meeting, create a copy with interval: "monthly", day_of_month: 1, and time: "08:00".
Expected result
After a successful run:
- Status:
completed - Row count: reasons × managers × products × pipelines (typically 40-150 rows)
- Top reasons: a sorted list of loss reasons with amounts — immediately shows what the main problem is
- Preventable vs unavoidable:
preventable_lossshows how much money is being lost for reasons that could be fixed through process and training - By manager: one manager may have 80% of losses attributed to "Went to a competitor," another to "Price too high." Different problems require different solutions
- By product: if product X is losing on price and product Y on functionality, marketing and product teams have clear work to do
Screenshot
[Screenshot]
[Screenshot]