{"id":"eca2de78-95d8-4158-ad30-f568baefcd42","task":"Add products to a CPQ quote via ServiceRouter ProductAPI/ProductSelected","domain":"Salesforce CPQ","steps":["Authenticate and obtain a Salesforce access token.","Construct the product selection payload: a JSON object specifying the quote context and an array of selected product records in CPQ's expected format; consult the CPQ ProductAPI documentation for the exact schema (verify against current docs as field names may vary by version).","POST the payload to /services/apexrest/SBQQ/ServiceRouter?loader=SBQQ.ProductAPI.ProductSelected (verify the exact loader name against your CPQ version documentation).","CPQ processes the product selection, applies default quantities and pricing, and returns an updated quote model with the new lines appended.","Pass the returned model to QuoteCalculator to recalculate pricing with the new products included.","Then call QuoteSaver to persist the updated quote."],"gotchas":["The loader name for product selection may differ between CPQ versions; always verify the exact loader string against Salesforce CPQ release notes for your installed package version.","Products must be active and associated with a valid price book entry accessible to the quote's price book; inactive or missing price book entries will cause errors.","Bundle products added via ProductSelected may require a subsequent ConfigLoader call to resolve option defaults before the model is valid for calculation."],"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:44:40.623Z"},"url":"https://mcp.waymark.network/r/eca2de78-95d8-4158-ad30-f568baefcd42"}