canonical: https://jentic.com/apis/hubspot.com/hubspot-crm-products

# HubSpot Products

The HubSpot CRM Products API manages the product catalogue inside a HubSpot portal - the master list of products that quotes, deals, and orders reference through line items. It supports the full CRM object pattern: read, list, patch, and archive single products, plus batch read, create, update, and archive of up to 100 products per call, and a search endpoint with filter groups and sort. Use it to seed a HubSpot portal from an external product database, keep prices and SKUs in sync with an upstream system of record, and build product pickers inside sales tools that talk straight to the live catalogue.

## For AI agents

Manage the HubSpot product catalogue with create, read, update, archive, and search across single records and batches of up to 100 products.

## Scope

Does not manage inventory levels, fulfilment, or storefront rendering - use for HubSpot CRM product catalogue records only.

## Capabilities

- Create a product with name, SKU, price, and custom properties
- Read a product record by ID with property selection
- Update product properties such as price or description without overwriting unrelated fields
- List products with cursor-based pagination
- Search products by SKU, price range, or any custom property
- Batch create, update, read, or archive up to 100 products per call

## Use cases

### Catalogue sync from a PIM

Keep the HubSpot product catalogue in lockstep with an upstream Product Information Management system. Use POST /crm/v3/objects/products/batch/create for new SKUs, POST /crm/v3/objects/products/batch/update for price and description changes, and POST /crm/v3/objects/products/batch/archive for discontinued items. Each call handles up to 100 products and the search endpoint can verify the change landed.

Example prompt: POST 100 products to /crm/v3/objects/products/batch/create with name, hs_sku, and price properties, and verify each returned a non-null id.

### Price update across SKUs

Run a bulk price update - for example a quarterly list-price refresh - across hundreds of products in a few calls. POST /crm/v3/objects/products/batch/update accepts up to 100 records per request, each with the product ID and the new price value.

Example prompt: POST /crm/v3/objects/products/batch/update with 50 entries, each setting the price property to the new list value.

### Product picker for a sales tool

Build a product picker inside a sales tool that searches the live HubSpot catalogue. POST /crm/v3/objects/products/search with a filter on SKU or name returns matching products with their price and custom properties so the rep selects the right SKU when building a quote.

Example prompt: POST a search to /crm/v3/objects/products/search filtering hs_sku CONTAINS_TOKEN 'AB-' and return the first 25 matching products.

### AI agent execution through Jentic

An agent that needs to manage the catalogue discovers this API via Jentic's intent search using a query like 'create a hubspot product' or 'find hubspot product by sku', loads the input schema for the chosen operation, and executes the call with credentials supplied from your Jentic One instance. The same flow handles batch and search.

Example prompt: Search Jentic for 'create a hubspot product', load POST /crm/v3/objects/products/batch/create, and execute with one product entry.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /crm/v3/objects/products/{productId} | Read a single product by ID |
| PATCH | /crm/v3/objects/products/{productId} | Update properties on a product |
| DELETE | /crm/v3/objects/products/{productId} | Archive a product |
| GET | /crm/v3/objects/products | List products with pagination |
| POST | /crm/v3/objects/products/batch/create | Create up to 100 products in one call |
| POST | /crm/v3/objects/products/batch/update | Update up to 100 products in one call |
| POST | /crm/v3/objects/products/batch/read | Read up to 100 products by ID |
| POST | /crm/v3/objects/products/batch/archive | Archive up to 100 products in one call |

## Key resources

- **Basic** — Single-product read, list, patch, and archive
- **Batch** — Bulk read, create, update, and archive of up to 100 products per call
- **Search** — Filtered search across products with sort and pagination

## Why Jentic

- **Setup:** Wiring Products by hand means implementing HubSpot's OAuth2 authorization-code flow (or managing a private-app header token), sending each call to api.hubapi.com with the catalogue property names it expects, and handling token refresh yourself. Through Jentic you install once, import Products from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** This API works against the products object collection, with the product id in the URL path (/crm/v3/objects/products/{productId}) on reads, updates, and deletes. Limit the agent to the operations it needs, such as reading and searching products, so destructive paths like product delete or batch archive are not included unless you add them.
- **Credential handling:** Your HubSpot token is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'create a HubSpot product' or 'find a product by SKU', and Jentic returns the matching Products operation with its input schema, including the property names the catalogue uses, so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **HubSpot CRM Line Items** — Creates the line items that bind products to deals, quotes, and orders
- **HubSpot CRM Quotes** — Generates customer-facing quotes that include products via line items
- **HubSpot CRM Objects** — Generic CRM record API that can also reach products via the objectType path

## FAQ

### What authentication does the HubSpot Products API use?

It accepts OAuth 2.0 access tokens and private app access tokens passed as a Bearer credential in the Authorization header. Through Jentic, the token is stored encrypted in the credential vault and attached at request time.

### Can I attach a product to a deal or quote through this API?

Not directly. Products are linked to deals and quotes via line items. Create the product here, then create a line item that references the product ID and associate the line item with the deal or quote.

### What are the rate limits for the HubSpot Products API?

Standard HubSpot account limits apply, typically 100 requests per 10 seconds for OAuth apps. Use the batch endpoints under /crm/v3/objects/products/batch/* to ingest or update up to 100 products in a single request.

### How do I find a product by SKU through Jentic?

Search Jentic with 'find hubspot product by sku', load POST /crm/v3/objects/products/search, and execute with a filterGroups payload setting propertyName=hs_sku and an EQ operator on the SKU value.

### Is the HubSpot Products API free?

It is included with HubSpot accounts that have CRM access enabled; there is no per-call charge. The Commerce Hub adds related capabilities (quotes, payments) but the products endpoints themselves are part of the standard CRM.

### How do I bulk-archive discontinued products?

POST /crm/v3/objects/products/batch/archive with an inputs array of up to 100 product IDs. Archived products no longer appear in the active list but can still be read by ID for historical reporting.

### Can I limit what my agent is allowed to do with the HubSpot Products API?

Yes. Jentic One runs self-hosted, so your own rules decide which Products operations and credentials the agent may use. You can allow only the calls it needs, such as reading a product at /crm/v3/objects/products/{productId} and searching the catalogue, while excluding destructive paths like product delete or batch archive. Because your HubSpot token is held by your own instance and attached at request time, the agent can reach only the operations you have permitted.
