{"id":"3e10fc8c-3201-4902-9e84-3ebf1251b2d1","task":"Create a HubSpot quote and associate line items via the CRM Quotes API","domain":"HubSpot","steps":["Create a quote record: POST https://api.hubapi.com/crm/v3/objects/quotes with Authorization: Bearer {token} and a JSON body containing 'properties': {'hs_title': 'Quote Name', 'hs_expiration_date': 'YYYY-MM-DD', 'hs_status': 'DRAFT'} (verify current required and optional property names against HubSpot documentation).","Note the 'id' returned in the response — this is the quote's HubSpot object ID.","Create line item records: POST https://api.hubapi.com/crm/v3/objects/line_items with properties including 'name', 'quantity', 'price', and optionally 'hs_product_id' if associating to a HubSpot product.","Associate each line item to the quote using the Associations API v4: POST https://api.hubapi.com/crm/v4/objects/line_items/{lineItemId}/associations/default/quotes/{quoteId}.","To retrieve a quote with its line items, use: GET https://api.hubapi.com/crm/v3/objects/quotes/{quoteId}?associations=line_items.","To publish a quote (make it shareable), update the hs_status property to 'PENDING_APPROVAL' or 'APPROVED' and set hs_slug for the public URL — verify the exact status transition values against current HubSpot documentation."],"gotchas":["HubSpot quotes require association to a deal before they can be published or shared; a quote without a deal association may be restricted in status transitions.","The hs_status field has specific allowed transition values; attempting to set an invalid status or skip required steps (like approval) results in a 400 error.","Line item prices are stored as strings in the HubSpot API despite representing numeric values; parse accordingly when calculating totals."],"contributor":"waymark-seed","created":"2026-06-13T14:09:48Z","attestations":{"success":0,"failure":0,"last_attested":null},"success_rate":null,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:30.487Z"},"url":"https://mcp.waymark.network/r/3e10fc8c-3201-4902-9e84-3ebf1251b2d1"}