Supported products
Supported products
Requires one of the following products or higher.
Please note: this phase of the beta provides read-only endpoints for your forecasts. You cannot currently create, update, or delete forecasts using this API.
Scope requirements
To use the forecast endpoints, you’ll need to authorize thecrm.objects.forecasts.read scope for your app.
Retrieve forecast data
To retrieve all forecast submissions in your account, make aGET request to /crm/objects/v3/forecasts and provide any comma-separated properties that you want included in the response using the ?properties query parameter.
For example, a GET request to https://api.hubspot.com/crm/objects/v3/forecasts?properties=hs_created_by_user_id,hs_milestone,hs_team_id,hs_year,hs_included_deal_ids would result in a response that resembles the following:
GET request to crm/objects/v3/forecasts/{id}.
The table below provides some common properties you might want to query for when using these APIs.
| Property | Type | Description |
|---|---|---|
hubspot_owner_id | String | The owner ID for user-level forecasts. |
hs_amount | Number | The forecasted revenue amount for this submission. |
hs_created_by_user_id | String | The ID of the HubSpot user who created the forecast. You can use this user provisioning endpoint to get user data from your account. |
hs_deal_pipeline_id | String | The ID of the specific pipeline set up for the forecast. This field will be null if All pipelines was selected when you submitted your forecast. |
hs_fiscal_month | String | The month number (1-12) for monthly forecasts, if applicable. |
hs_fiscal_quarter | String | The fiscal quarter (1-4) for quarterly forecasts, if applicable. |
hs_forecast_fiscal_offset | String | The start month offset to the fiscal year (e.g., 0 = January, 1 = February, etc). |
hs_forecast_start_date | String | Start date of the forecast, provided as a Unix timestamp (in milliseconds). |
hs_forecast_end_date | String | End date of the forecast, provided as a Unix timestamp (in milliseconds). |
hs_forecast_type | String | The ID of the forecast type being used. This value will be set to 0 or null for the default forecast type. To retrieve the forecast types available in your account, check out the section below. |
hs_is_all_pipelines | String | A boolean that indicates whether the forecast applies to all pipelines. |
hs_milestone | String | An enumeration that denotes the period for which a forecast is submitted. Values include monthly, quarterly, or yearly. |
hs_submission_notes | String | Optional notes provided by the submitter. |
hs_included_deal_ids | String | A string that includes a semicolon-delimited list of submitted deals. |
hs_team_id | String | The ID of the contributing team, if applicable. You can use this user provisioning endpoint to get team data from your account. |
hs_year | String | The forecast’s year. |
Retrieve forecast types
Forecast types define how HubSpot calculates and displays revenue projections in the forecasting tool. Each forecast type requires two properties:- Amount property: the aggregate value used in the forecast (e.g., a deal amount, ARR, or a custom revenue field).
- Date property: the time-based field to use for filtering (e.g., a close date or a custom date property).
amount and closedate deal properties. You can create up to four additional custom forecast types to forecast on different revenue metrics, such as forecasting on a Services Amount property for one-time or ongoing professional services revenue.
- When you create a custom forecast type, HubSpot automatically generates the supporting calculated properties to provide multi-currency support and probability-weighted projections.
- If your account has deal splits enabled, a matching set of properties will also be created on the deal split object.
GET request to /forecasting-settings/v3/forecast-types.
For example, to get all available forecast types, you’d make a GET request to https://api.hubspot.com/forecasting-settings/v3/forecast-types. A successful response will resemble the following:
GET request to /forecasting-settings/v3/forecast-types/{id}.
The table below provides the properties available for each forecast type:
| Property | Type | Description |
|---|---|---|
objectTypeId | String | The CRM object type this forecast applies to. Currently only deals (0-3) are supported. |
amountInHomeCurrencyProperty | String | The property containing the amount converted to the account’s home currency. For multi-currency accounts, this enables consistent aggregation across deals in different currencies. |
updatedAt | String | The date when the forecast type was last updated (as an ISO 8601 date). |
updatedBy | Number | The ID of the HubSpot user who last updated the type. |
weightedAmountProperty | String | The property containing the amount multiplied by the deal’s win probability. Used to calculate probability-weighted pipeline projections. |
updatedTimestamp | Number | The date when the forecast type was last updated (as a Unix timestamp in milliseconds). |
defaultType | Boolean | Whether this is the account’s default forecast type. The default type uses the standard amount and closedate properties and cannot be deleted. |
createdAt | String | The date when the forecast type was last created (as an ISO 8601 date). |
dealSplitProperties | Object | When deal splits are enabled, contains the corresponding deal split object properties for amount, date, and currency calculations. null if deal splits are not configured. |
createdAtTimestamp | Number | The date when the forecast type was created (as a Unix timestamp in milliseconds). |
amountProperty | String | The deal property used as the revenue value for forecasting (e.g., amount, arr, or a custom currency property). This is the primary value that gets rolled up in forecast views. |
createdBy | Number | The ID of the HubSpot user who created the type. |
forecastTypeId | Number | The ID of the forecast type (represented as a number). |
dateProperty | String | The deal property used to determine which time period a deal falls into (e.g., closedate or a custom date property). Deals are included in a forecast period based on this date. |
id | String | The ID of the forecast type. |
amountOrDatePropertyRestrictedForUser | Boolean | A boolean that indicates whether any of the properties in forecast type is restricted for users who aren’t super admins. If true, these users won’t be able to access this forecast type. |
forecastName | String | The name of the forecast type. |
weightedAmountInHomeCurrencyProperty | String | The name of the property used to calculate the weighted amount in the account’s home currency. |
Deal split properties
When deal splits are enabled for an account, the returned forecast type includes a populateddealSplitProperties object. Deal splits allow a single deal’s revenue to be divided among multiple owners based on percentages.
Because deal splits are stored as a separate CRM object type, forecasts require additional properties to aggregate split amounts correctly. The dealSplitProperties property in the response maps the forecast type’s amount and date properties to their corresponding deal split equivalents.
Based on whether the forecast type is aggregated from the deal object or the deal split object, the following properties are provided within dealSplitProperties:
Deal related properties
The following properties are used when aggregating from the deal object:
| Property | Type | Description |
|---|---|---|
dealCustomAmountProperty | String | The calculated property on the deal object that stores the custom amount value. Used as the source for deal split calculations. |
dealCustomDateProperty | String | The date property on the deal object used for time-based filtering. Typically matches the forecast type’s dateProperty. |
dealCustomAmountPropertyInHomeCurrency | String | The calculated property on the deal object containing the custom amount converted to home currency. |
| Property | Type | Description |
|---|---|---|
dealSplitCustomAmountProperty | String | The property on the deal split object containing each owner’s portion of the custom amount (amount * split percentage). |
dealSplitCustomAmountPropertyInHomeCurrency | String | The property on the deal split object containing each owner’s portion converted to home currency. |
dealSplitWeightedCustomAmountProperty | String | The property on the deal split object containing each owner’s portion multiplied by win probability. |
dealSplitWeightedCustomAmountPropertyInHomeCurrency | String | The property on the deal split object containing each owner’s weighted portion in home currency. |
- HubSpot will query the corresponding
deal_splitobject instead of thedealobject. - HubSpot will use the
dealSplitCustomAmountPropertyfield to get each sales rep’s portion of the revenue. - Currency conversion will use the value defined in the
dealSplitCustomAmountPropertyInHomeCurrencyfield. - Weighted projections will use the value defined in either the
dealSplitWeightedCustomAmountPropertyordealSplitWeightedCustomAmountPropertyInHomeCurrencyfields.
GET request to /forecasting-settings/v3/forecast-types with the dealSplitProperties property populated: