Products overview

This API is part of our developer preview program, and should be considered as a non-stable release that will be subject to bugs and breaking changes while under development. Please take this into account as you build against a release. Please subscribe to our changelog for updates.

Products, along with contacts, companies and deals, are a foundational object in HubSpot CRM. Products represent goods or services sold by your company. They can be associated with deals through line items, allowing you to track sales performance using the HubSpot sales tools.

Product Properties

As with other CRM objects, products support custom properties. The properties for products are managed through the CRM Object Properties API.

Note: while products do not have any required properties that must be set, we recommend setting a few basic properties for all products, such as name, description, and price. Please see the CRM Object Properties API for getting further details for those properties.

Products and line items.

Products are associated to deals through line item objects. Line item objects have the hs_product_id property, which will be the objectId of a product object. The line item object is then associated with a specific deal object. See the line items overview for more details about line items.

Products will have the following data. Note that the specific properties included for your products may vary depending on which properties are actually set (properties with no value will never be included in a response) and which properties you are requesting. See the Contacts overview for more details about the property change source.

{
  "objectType": "PRODUCT",
  // String; The object type of this object, will always be 'PRODUCT' for products.
  "portalId": 62515,
  // Integer; The Portal or Hub ID that this object belongs to.
  "objectId": 1642767,
  // Integer; The internal ID for this product.
  "properties": {
  // A dictionary of properties for the product, keyed by the internal name of the property
    "price": {
    // String; The name of the property
      "versions": [
      // A list of historical values for the property. The current version is included in this list.
        {
          "name": "price",
          // String; The name of the property.
          "value": "27.50",
          // String; The value of the property for this version.
          "timestamp": 1525287096980,
          // Integer; A Unix timestamp in milliseconds representing when the property was updated.
          "source": "API",
          // String; The change source of the API. See the Contacts API overview for a list of possible sources
          "sourceVid": []
          // A list of integers representing contact VIDs. This will be populated if the property was updated as a result of a change to a contact record.
        }
      ],
      "value": "27.50",
      // String; The current value of the property.
      "timestamp": 1525287096980,
      // Integer; A Unix timestamp in milliseconds representing when the property was updated.
      "source": "API",
      // String; The change source of the API. See the Contacts API overview for a list of possible sources
      "sourceId": null
      // String or null; Additional details about the change source, may be null depending on the specific source.
    },
    "name": {
      "versions": [
        {
          "name": "name",
          "value": "A new product",
          "timestamp": 1525287096980,
          "source": "API",
          "sourceVid": []
        }
      ],
      "value": "A new product",
      "timestamp": 1525287096980,
      "source": "API",
      "sourceId": null
    },
    "description": {
      "versions": [
        {
          "name": "description",
          "value": "A description of this product.",
          "timestamp": 1525287096980,
          "source": "API",
          "sourceVid": []
        }
      ],
      "value": "A description of this product.",
      "timestamp": 1525287096980,
      "source": "API",
      "sourceId": null
    }
  },
  "version": 1,
  // Integer; The current version of the product. This is incremented each time the product is updated.
  "isDeleted": false
  // Boolean; whether or not the product is deleted. Deleted records will not be included unless you specifically request that deleted records be included.
}

Products API docs

Get all products
Get a product by ID
Get a group of product by ID
Create a product
Create a group of products
Update a product
Update a group of products
Delete a product
Delete a group of products
Get a log of changes for product

Docs for this section or API