Scope requirements
Scope requirements
Default properties
Each object has a unique set of default properties. To learn more about default properties for different objects, refer to an object’s definition page (e.g, contacts definition page). You can also retrieve all an object’s properties via API.Property groups
Property groups are used to group related properties into categories. Groups are primarily used to organize properties and know from where they originated. For example, if your integration creates custom properties, a custom property group will make it easy to identify that data.Property type and fieldType values
When creating or updating properties, bothtype and fieldType values are required. The type value determines the type of the property, i.e. a string or a number. The fieldType property determines how the property will appear in HubSpot or on a form, i.e. as a plain text field, a dropdown menu, or a date picker.
Types
In the table below, learn about the available propertytype and corresponding fieldType values.
Field types
Valid values forfieldType include:
Date, number, and text display formats
Fordate, number, and text field types, add an optional display field to specify how the values should be rendered in HubSpot. Learn more about how different formatting types are displayed.
Please note: To render a number value as a currency, include the field
showCurrencySymbol and set the value as true.Create a property
To create a property, make aPOST request to /crm/properties/2026-03/{objectType}. In your request body, include the following required fields:
groupName: the property group the property will be in.name: the internal name of the property (e.g., favorite_food).label: the name of the property as it appears in HubSpot (e.g., Favorite Food).type: the type of property.fieldType: the field type of the property.
Create unique identifier properties
When a record is created in HubSpot, a unique ID (hs_object_id) is automatically generated and should be treated as a string. These IDs are unique only within that object type, so there can be both a contact and company with the same ID. For contacts and companies, there are additional unique identifiers, including a contact’s email address (email) and a company’s domain name (domain).
In some cases, you want may to create your own unique identifier property so that you can’t enter the same value for multiple records. You can have up to ten unique ID properties per object. To create a property requiring unique values via API:
- Make a
POSTrequest to/crm/properties/2026-03/{objectType}. - In your request body, for the
hasUniqueValuefield, set the value totrue.
abc for the system_a_unique property, your request URL would be: /crm/objects/2026-03/deals/abc?idProperty=system_a_unique.
You can then use this unique identifier property value to identify and update specific records in the same way you could use hs_object_id, email (contacts), or domain (companies).
When cloning a record with a unique property value, the value will not be copied to the new record. This is because uniqueness is enforced across all records of that object type, and copying the value would cause a conflict. To set unique property values on cloned records, update the new record after creation.
Create calculation properties
Calculation properties define a property value based on other properties within the same object record. They are defined using a formula, which may include operations like min, max, count, sum, or average. You can use the properties API to read or create calculation properties in your HubSpot account, using a field type ofcalculation_equation and a type of number, bool, string, or enumeration.
You can define the property’s calculation formula with the calculationFormula field. Using calculationFormula, you can write your formula with arithmetic operators, comparison operators, logic operators, conditional statements, and other functions.
Literal syntax
- String literal: constant strings can be represented with either single quotes (
'constant') or double quotes ("constant"). - Number literal: constant numbers can be any real numbers, and can include point notation.
1005and1.5589are both valid constant numbers. - Boolean literal: constant booleans can be
trueorfalse.
Property syntax
- String property variables: for an identifier string to be interpreted as a string property, it must be wrapped in the
stringfunction. For example,string(var1)will be interpreted as the value for the string property var1. - Number property variables: all identifiers will be interpreted as number property variables. For example,
var1will be interpreted as the value for the number property var1. - Boolean property variables: for an identifier to be interpreted as a bool property, it must be wrapped in the
boolfunction. For example, the identifierbool(var1)will be interpreted as the value for the boolean property var1.
Operators
Operators can be used with literal and property values. For arithmetic operators, you can use prefix notation to multiply, and parenthesis can be used to specify the order of operations.Functions
The following are supported functions:
There are also two parsing functions:
number_to_string: tries to convert the input number expression to a string.string_to_number: tries to convert the input string expression to a number.
"Number of cars: " + num_cars is not a valid property because you can’t add a string with a number, but "Number of cars: " + number_to_string(num_cars) is.
Conditional statements
You can also write your formula with conditional statements usingif, elseif, endif, and else.
For example, a conditional statement could look like: if boolean_expression then statement [elseif expression then statement]* [else statement | endif] where the [a] brackets represent that a is optional, the a|b represent that either a or b will work, and * means 0 or more. endif can be used to finish a conditional statement prematurely, ensuring that the parser can identify which if the next elseif belongs to.
Example formulas
The following are examples you can use to help define your own calculation formulas:Retrieve properties
You can retrieve information for individual properties or all properties within an object.- To retrieve an individual property, make a
GETrequest tocrm/properties/2026-03/{object}/{propertyName}. For example, to retrieve thefavorite_foodproperty, your request URL would be/crm/properties/2026-03/contacts/favorite_food. - To retrieve all properties for an object, make a
GETrequest to/crm/properties/2026-03/{objectType}.
Update or clear a property’s values
To update a property value for a record, make aPATCH request to crm/objects/2026-03/{objectType}/{recordId}. In your request body, include the properties and their values in an array. Learn more about updating records via the object APIs.
The following sections explain how to set or update property values where unique formatting or steps are required.
Add values to date and datetime properties
Time values are represented in ISO 8601 format in responses, but HubSpot APIs will accept either of two formats for date and time values:- ISO 8601 formatted strings: depending on the type of data, these will be one of two different formats:
- For values that represent a specific date, the complete date format will be used: YYYY-MM-DD (e.g.
2020-02-29) - For values that represent a specific date and time, the complete date plus hours, minutes, seconds, and a decimal fraction of a second format will be used: YYYY-MM-DDThh:mm:ss.sTZD (e.g.
2020-02-29T03:30:17.000Z). All times are represented in UTC, so the values will always use the UTC designator “Z.”
- For values that represent a specific date, the complete date format will be used: YYYY-MM-DD (e.g.
- UNIX-formatted timestamps in milliseconds: timestamp values in milliseconds, which are represented in UTC time. For example, the timestamp value
1427997766000translates to 02 Apr 2015 18:02:46 UTC, or April 2nd, 2015, 2:02:46 PM EDT (Eastern Daylight Saving Time).
date and datetime) which also affect how you format values:
dateproperties store the date, not the time.dateproperties display the date they’re set to, regardless of the time zone setting of the account or user. Fordateproperty values, it is recommended to use the ISO 8601 complete date format. If you use the UNIX timestamp format, you must use an EPOCH millisecond timestamp (i.e. the value must be set to midnight UTC for the date). For example, to represent May 1, 2015 in either format:- IOS 8601: 2015-05-01
- UNIX millisecond timestamp: 1430438400000
datetimeproperties store both the date and time. Either timestamp format will be accepted. In HubSpot,datetimeproperties are displayed based on the time zone of the user viewing the record, so the value will be converted to the local time zone of the user.
Add values to checkbox type properties
When updating values for a record’s checkbox type properties, format the values in the following ways:- Boolean checkbox property: to display as Yes, or checked in HubSpot, your value must be
true. To display as No or not checked in HubSpot, your value must befalse. - Multiple select checkbox property: to add or append values to a multiple checkboxes property, add a semicolon before the first value, and separate the values with semicolons without a space between. If the property has an existing value, the leading semicolon will append the values instead of overwriting the value. For example, a contact has the existing value
DECISION_MAKERfor thehs_buying_roleproperty. To add additional values without replacing the existing value, your request would look like this:
Assign record owners with user properties
When assigning users to CRM records via API, your value must be user’s ownerid, which you can find in your property settings or via the owners API.
For example, to assign a user as owner of a contact, send a PATCH request to crm/objects/2026-03/contacts/{contactId}, with the body { "properties":{ "hubspot_owner_id": "41629779"}}.
Clear a property value
You can clear an object property value via the API by setting the property value to an empty string. For example, to clear thefirstname from a contact object, send a PATCH request to /crm/objects/2026-03/contacts/{contactId} with the body { "properties": { "firstname": ""}}.