Create a product in the HubSpot product library: POST https://api.hubapi.com/crm/v3/objects/products with properties including 'name', 'price', and optionally 'description' and 'hs_sku'.
Retrieve the product ID from the response.
When creating a line item for a quote, include 'hs_product_id': '{productId}' in the line item properties; this associates the line item to the product record and may auto-populate fields like name and price from the product.
Create the line item: POST https://api.hubapi.com/crm/v3/objects/line_items with the required properties and hs_product_id.
Associate the line item to the relevant quote using the Associations API v4: POST https://api.hubapi.com/crm/v4/objects/line_items/{lineItemId}/associations/default/quotes/{quoteId}.
To update a product's price globally, PATCH https://api.hubapi.com/crm/v3/objects/products/{productId} — note this does not retroactively update existing line items.
Known gotchas
Updating a product record's price does not update line items already created from that product; each line item stores its price independently at creation time.
hs_product_id on a line item is informational; HubSpot does not enforce referential integrity — deleting a product does not delete or invalidate existing line items referencing it.
The HubSpot product library is a CRM object (type 'products') and is subject to the same API rate limits as other CRM objects; bulk product creation should use the batch endpoint.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp