HubSpot custom objects allow organizations to represent and organize that data based on your business requirements with the custom objects API.
POST
request to crm/v3/schemas
. In the request body, include definitions for your object schema, including its name, properties, and associations.
When naming your custom object, keep the following in mind:
secondaryDisplayProperties
will be also added as a fourth filter on the object index page if it’s one of the following property types:
string
number
enumeration
boolean
datetime
type
is set to string
, and the fieldType
is set to text
. Below are the values you can use to create different types of properties.
type | Description | Valid fieldType values |
---|---|---|
enumeration | A string representing a set of options, separated by semicolons. | booleancheckbox , checkbox , radio , select |
date | An ISO 8601 formatted value representing a specific day, month, and year. | date |
dateTime | An ISO 8601 formatted value representing a specific day, month, year and time of day. The HubSpot app will not display the time of day. | date |
string | A plain text strings, limited to 65,536 characters. | file , text , textarea |
number | A number value containing numeric digits and at most one decimal. | number |
fieldType | Description |
---|---|
booleancheckbox | An input that will allow users to select one of either Yes or No. When used in a form, it will be displayed as a single checkbox. |
checkbox | A list of checkboxes that will allow a user to select multiple options from a set of options allowed for the property. |
date | A date value, displayed as a date picker. |
file | Allows for a file to be uploaded to a form. Stored and displayed as a URL link to the file. |
number | A string of numerals or numbers written in decimal or scientific notation. |
radio | An input that will allow users to select one of a set of options allowed for the property. When used in a form, this will be displayed as a set of radio buttons. |
select | A dropdown input that will allow users to select one of a set of options allowed for the property. |
text | A plain text string, displayed in a single line text input. |
textarea | A plain text string, displayed as a multi-line text input. |
objectTypeId
value. For example:
GET
request to /crm/v3/schemas
.
To retrieve a specific custom object, make a GET
request to one of the following endpoints:
/crm/v3/schemas/{objectTypeId}
/crm/v3/schemas/p_{object_name}
/crm/v3/schemas/{fullyQualifiedName}
.fullyQualifiedName
in its schema, which is derived from p{portal_id}_{object_name}
. You can find your account’s portal ID using the account information API.
For example, for an account with an ID of 1234
and an object named lender
, your request URL could look like any of the following:
https://api.hubapi.com/crm/v3/schemas/2-3465404
https://api.hubapi.com/crm/v3/schemas/p_lender
https://api.hubapi.com/crm/v3/schemas/p1234_lende
GET
request to crm/v3/objects/{objectType}/{recordId}
.Parameter | Description |
---|---|
properties | A comma separated list of the properties to be returned in the response. If the requested custom object record doesn’t have a value for a property, it will not appear in the response. |
propertiesWithHistory | A comma separated list of the current and historical properties to be returned in the response. If the requested custom object record doesn’t have a value for a property, it will not appear in the response. |
associations | A comma separated list of objects to retrieve associated IDs for. Any specified associations that don’t exist will not be returned in the response. Learn more about the associations API. |
POST
request to crm/v3/objects/{objectType}/batch/read
. The batch endpoint cannot retrieve associations. Learn how to batch read associations with the associations API.hs_object_id
), or by a custom unique identifier property. By default, the id
values in the request refer to the record ID, so the idProperty
parameter is not required when retrieving by record ID. To use a custom unique value property, you must include the idProperty
parameter.
For example, to retrieve a batch of custom object records, your request could look like either of the following:
PATCH
request to https://api.hubapi.com/crm/v3/schemas/{objectTypeId}
.
Once your custom object is defined:
requiredProperties
, searchableProperties
, primaryDisplayProperty
, and secondaryDisplayProperties
can be changed by updating the object’s schema. To set a new property as a required, searchable, or display property, you need to create the property prior to updating the schema.POST
request to /crm/v3/schemas/_{objectTypeId}_/associations
.
You can only associate your custom object with standard HubSpot objects (e.g. contact, company, deal, or ticket) or other custom objects. In the toObjectTypeId
field, identify custom objects by their objectTypeId
value and standard objects by their name. For example:
DELETE
request to /crm/v3/schemas/{objectType}
.
If you need to create a new custom object with the same name as the deleted object, you must hard delete the schema by making a DELETE
request to /crm/v3/schemas/{objectType}?archived=true
. You can only delete a custom object type after all object instances of that type, associations, and custom object properties are deleted.
secondaryDisplayProperties
) with the new property.
POST
request to /crm/v3/schemas
with the following request body:
{objectTypeId}
field, as they’ll use this for fetching and updating the object later. They can also use the {fullyQualifiedName}
value, if they prefer.POST
request to /crm/v3/objects/2-3465404
with the following request body:
id
value to later associate the car with an existing contact.
GET
request to https://api.hubapi.com/crm/v3/objects/2-3465404/181308?portalId=1234567&properties=year&properties=make&properties=model
181308
) and the ID of another record to associate a custom object record with a record of another object.
To create an association, make a PUT
request to /crm/v3/objects/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId}/{associationType}
. If the object relationship is already defined, to determine the associationType
value, make a GET
request to crm/v3/schemas/{objectType}
.
For example, with the contact ID 51
and the association type 75
, CarSpot can associate the car record with a contact. Using the above IDs, the request URL will be constructed as follows:
https://api.hubspot.com/crm/v3/objects/2-3465404/181308/associations/contacts/51/75
POST
request to /crm/v3/schemas/2-3465404/associations
with the following request body:
POST
request to /crm/v3/properties/2-3465404
with the following request body:
secondaryDisplayProperties
by making a PATCH
request to /crm/v3/schemas/2-3465404
with the following request body: