A product rule is defined by an SBQQ__ProductRule__c record with a Type field (Error Condition, Selection, Alert, or Validation — verify exact picklist values) and one or more SBQQ__ErrorCondition__c child records.
Create the product rule: POST /services/data/{apiVersion}/sobjects/SBQQ__ProductRule__c with Name, SBQQ__Type__c, SBQQ__Active__c, and SBQQ__EvaluationEvent__c (e.g., Save, Always — verify against current docs).
Create error conditions: POST /services/data/{apiVersion}/sobjects/SBQQ__ErrorCondition__c referencing the parent rule (SBQQ__Rule__c), and specifying the tested object, field, operator, and value.
For selection rules, associate the rule with a product feature or product option via the relevant lookup fields so CPQ knows which bundle context the rule governs.
Set SBQQ__Active__c to true on the rule and test by configuring the relevant bundle product in a sandbox quote.
For alert and error condition rules, set SBQQ__Message__c on the rule record to control the message shown to the user.
Known gotchas
Product rules interact with the bundle configuration lifecycle; an incorrectly scoped rule may fire at unexpected times or not at all — always test in a sandbox.
The distinction between 'Validation' and 'Error Condition' type rules affects when the rule fires (on save vs. during configuration); consult CPQ documentation for the difference.
Changing an active product rule in production can immediately affect in-progress quotes; consider deactivating, editing, then reactivating during low-usage windows.
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