RevOps HQ
← BACK TO BLOG
••
Implementation•RevOps Strategy & Frameworks

Best CPQ Software: Product Classes, Configuration Rules, Costs and Selection Procedure

Best CPQ software is chosen by where the quote record lives and how its rules are written, with the Salesforce CPQ end of sale and a test to run before buying.

P

Paul Maxwell, PhD

AUTHOR

GET WEEKLY REVOPS INSIGHTS

No spam. Unsubscribe anytime.

Where the quote record is stored and how a rule is written are absent from feature grids for the best CPQ software, and both surface after go-live. A rule meant to stop an unbuildable configuration cannot see the bill of materials when the quote sits in the CRM and the bill of materials in the ERP. An opportunity shows one amount and the accepted quote another when the quote lives in a third system and the sync carried an earlier revision. Salesforce has stopped selling Salesforce CPQ to new customers, and each existing org meets these questions when it decides whether to extend or leave.

This article classifies CPQ software by where the quote record lives and how its rules are written. It covers what each location lets a rule read and four rule forms, follows a sample Salesforce CPQ org to four destinations, compares nine products, and closes with costs, a selection procedure, symptoms and limits.

A quote record is the stored quote and its lines, in whichever system's database holds them. A CPQ product is CRM-resident when its quote is a CRM object, attached when the quote is stored in the vendor's own system and copied to the CRM, and ERP-resident when the quote is an ERP transaction. A rule form is the way a configuration rule is written down: a violation condition, a condition-action record, a constraint model, or an exclusion list. A rule is declarative when it is built from the product's own condition and action fields, and scripted when it runs code.

Quote Record Location and Rule Reach

The class that fits is settled by the records a business's rules must read, the product within a class by documentation and a trial, and the cost of leaving Salesforce CPQ by the org's own rule inventory.

A declarative configuration rule reads and writes only the records held where the quote lives, so the quote's location sets what configuration can enforce before any rule syntax is compared. A record held elsewhere arrives as a synchronised copy, carrying the sync interval into the rule, or through a scripted call at run time, carrying the other system's availability and latency instead. Oracle CPQ conditions can be written in BML, whose urldatabyget and urldatabypost functions call ERP systems, CRM systems and external databases directly, and SAP CPQ product scripts load WSDL web services through a Force Proxy Generation option.

HubSpot shows the CRM-resident case. Its quote rule syntax lists line item, quote, deal, company, contact, contract and current user among its example property scopes, and names none holding stock, a bill of materials or a routing step. Revenue Cloud, which Salesforce Help now names Revenue Management, is in the same position: its Visual Builder builds expressions from products, bundles, attributes, fields and the sales transaction header.

ERP-resident configurators reach the other way. A Dynamics 365 Supply Chain Management product configuration model produces a variant with its own bill of materials and route, and runs on sales quotations, which the ERP can create from its own opportunities. NetSuite CPQ runs on opportunities, estimates and sales orders, and its rules add materials and routing steps to work orders when the NetSuite CPQ Manufacturing SuiteApp is installed. The commercial and manufacturing records separate where the opportunity stays in another CRM: Salesforce, or Dynamics 365 Sales, which dual-writes quotations while price, discount, charge and tax columns are maintained in Supply Chain Management.

An attached CPQ holds the quote itself and reaches both sides by copy or by scripted call. With one parameter disabled, SAP CPQ's Salesforce integration creates only the SAP CPQ quote from an opportunity, and the Salesforce quote waits for the Create/Update Salesforce Opportunity action. Oracle's Salesforce connector creates quotes in Oracle CPQ and integrates quotes, parts and price books with Salesforce, and Oracle's bill of materials rules return a BOM string to an ERP.

Three places a quote record can live, and what a declarative rule reads in eachThree rows compare where the quote record is stored. In the first row, used by HubSpot CPQ, Revenue Cloud and Conga CPQ for Salesforce, the quote lives in the CRM beside the deal, the account, the contract and a copy of the catalogue, so its rules read deal, account and contract records; the ERP holds the order, the invoice, the bill of materials, stock, routes and the item master, and an integration carries orders to the ERP and the catalogue to the CRM. Two catalogue copies are kept in step. In the second row, used by SAP CPQ, Oracle CPQ and Conga's own platform, the quote lives in the CPQ vendor's own system with its rules and its own catalogue copy; the CRM holds the opportunity, a copy of the quote and another catalogue copy, and the vendor's system exchanges records with both the CRM and the ERP. Its rules read the vendor's copies, and three catalogue copies are kept in step. In the third row, used by Dynamics 365 Supply Chain Management, NetSuite CPQ and Odoo, the quote lives in the ERP beside BOM lines and routes, which its rules can select, and beside the opportunity unless a separate CRM holds it; that CRM, where one exists, receives a copy of the quote and its status and may keep a catalogue copy, so one or two copies are kept in step. A rule can also reach another system through a scripted call at run time, which the drawing does not show.QUOTE LIVESCRMCPQ VENDOR'S SYSTEMERPIn the CRMCatalogue copies: 2HubSpot CPQ,Revenue Cloud, CongaQuote and linesDeal, account, contractCatalogue copyRules read deal,account, contractno separate systemOrder, invoiceBill of materialsStock, routesItem masterorders to the ERP,catalogue to the CRMAttachedCatalogue copies: 3SAP CPQ, Oracle CPQ,Conga platformOpportunity, accountQuote copyCatalogue copyQuote and linesRulesCatalogue copyRules read thevendor's copiesOrder, invoiceBill of materialsStock, routesItem masterIn the ERPCatalogue copies: 1–2Dynamics 365,NetSuite CPQ, OdooOpportunityQuote copyCatalogue copy, if keptno separate systemQuote and linesOpportunity, where noseparate CRM holds itBOM lines, routesRules can select BOMlines and routesquote copy andstatus to a CRMHolds the quote record: the only records a declarative rule reads without a sync or a scriptAn integration, carrying records both ways: every copy listed in a box arrives through one
Three places a quote record can live: a declarative rule reads natively only the records of the system holding the quote, and an attached CPQ raises the catalogue copies kept in step to three

Configuration Rule Forms and Rule Order

The second property is the form a rule is written in, which decides whether order is part of its meaning and what a migration must test. Whether a rule acts before, during or after a seller's choice is set out in what is CPQ.

HubSpot writes each quote rule as a violation condition, true when the quote is wrong, ending in Show warning or Block publish. Such a rule judges an assembled quote and cannot add or remove a product. The documentation sets no order among rules; that none is needed is an inference from the design, not a documented behaviour, since a rule that only evaluates writes nothing another rule reads.

Condition-action rules pair a condition with an action that changes the configuration, and five products document their order as a setting. SAP CPQ calls a formula rule in essence an IF statement written in tags, with a Rank field setting its priority of execution. Oracle CPQ runs configuration rules in a fixed precedence that evaluates constraint rules twice, around recommendation rules, and warns that a calculated attribute listed before its source takes a stale value. NetSuite CPQ runs before-event actions by sequence number, then the other building blocks, then after-event actions, with scripts in JavaScript. Revenue Cloud's Business Rules Engine runs configuration rules scoped to a product, a bundle or a transaction, with actions such as Auto-Add and Exclude, and gives each rule a sequence, lower numbers first.

In Salesforce CPQ, an optional Evaluation Order field sequences selection rules, Salesforce lists "execution order dependencies" among CPQ customisations on its key differences page, and selection rules do not undo an action when their condition stops holding. Conga's pages document no execution order. Conga CPQ for Salesforce stores each constraint rule as a header, a condition and an action, and an action's Sequence field orders displayed messages. On Conga's own platform, a rule's Sequence value "is for display purposes only and does not control rule execution order".

Constraint models state relations and leave the solving to an engine. Revenue Cloud's Constraint Rules Engine, which Salesforce's training says uses a constraint-based model to evaluate all possible combinations of selections, takes rules in Constraint Modeling Language or from the Visual Builder. Dynamics 365 writes constraints in Optimization Modeling Language or as tables of allowed combinations, solved by Microsoft Solver Foundation, and the pages cited state no order among rules.

Exclusion lists need no rule language: Odoo stores an exclusion on the attribute value itself, in an Exclude for field.

Salesforce CPQ End of Sale and the Installed Base

Salesforce's end-of-sale page, dated 10 July 2026, states that Salesforce "is no longer selling new Salesforce CPQ licenses to new customers". Existing customers keep their licences, add users, renew and receive support and critical fixes but no new features, and no end-of-life date has been announced; what is Salesforce CPQ covers the contract records that make an exit costly. An org on the package sits in one cell of the classification, CRM-resident with ordered condition-action rules, and every destination except staying, Conga's package for Salesforce or Revenue Cloud's Business Rules Engine moves it along one axis or both.

Salesforce's own pages leave three pieces of work even on the route to its successor. The key differences page treats the move "as a redesign rather than a direct migration of existing configurations". The data model changes page says of price rules that "execution order logic differs significantly" and has no row for product rules. The migration tools page leaves QCP plug-ins to reimplementation and ERP and billing integrations to a separate strategy, and the end-of-sale page says one evaluated partner tool maps CPQ rules without saying which types or how. Choosing a destination therefore means choosing where the redesigned rules live and what they can read.

Inside the org, Revenue Cloud keeps the quote beside the opportunity and can coexist with CPQ under a Revenue Cloud Advanced licence. A quote's transaction processing type chooses between its two engines, and the Constraint Rules Engine is unavailable in Government Cloud and the EU Operating Zone. Conga CPQ for Salesforce, a set of managed packages, keeps the location and the form. SAP CPQ, Oracle CPQ and Conga's own platform, whose interface is embedded in the Salesforce quote page, keep the form and move the quote into the vendor's database.

CPQ products by quote record location and rule formA grid with three columns, for a quote record held in the CRM, in the CPQ vendor's own system, or in the ERP, and four rows of rule form. Violation conditions, which judge a finished quote: HubSpot CPQ, in the CRM, tagged new CRM and new form. Condition-action rules, which act on a condition: Salesforce CPQ in the CRM, drawn as the origin because it is at end of sale; Conga CPQ for Salesforce and Revenue Cloud's Business Rules Engine in the CRM, each tagged same org and same form; SAP CPQ, Oracle CPQ and Conga on its own platform, in the vendor's system, each tagged leaves org and same form; NetSuite CPQ in the ERP, tagged to ERP and same form. Constraint models, solved as a whole: Revenue Cloud's Constraint Rules Engine in the CRM, tagged same org and new form; Dynamics 365 Supply Chain Management in the ERP, tagged to ERP and new form. Exclusion lists, with no rule language: Odoo in the ERP, tagged to ERP and new form. Tags compare each product with Salesforce CPQ, and Revenue Cloud appears twice because it has two rule engines.RULE FORMIN THE CRMIN THE VENDOR'S SYSTEMIN THE ERPViolationconditionsjudge a finished quoteHubSpot CPQnew CRM · new form——Condition-actionrulesact on a conditionSalesforce CPQorigin · end of saleConga for Salesforcesame org · same formRevenue Cloudsame org · same formSAP CPQleaves org · same formOracle CPQleaves org · same formConga on its platformleaves org · same formNetSuite CPQto ERP · same formConstraintmodelssolved as a wholeRevenue Cloudsame org · new form—Dynamics 365 SCMto ERP · new formExclusionlistsno rule language——Odooto ERP · new formTags compare each product with Salesforce CPQ: org is where the quote record lives, form is how the rules are writtenRevenue Cloud appears twice: a quote's transaction type runs either its rules engine or its constraint engine
CPQ products placed by where the quote record lives and how a rule is written, each tagged with what it changes for an org leaving Salesforce CPQ; Revenue Cloud appears twice because it has two rule engines

Rule Inventory and Catalogue Copies on Sample Data

The org below is sample data, invented for checkable arithmetic, and describes no client. It runs Salesforce CPQ with 900 products mastered in an ERP item table, and holds 120 active product rules: 35 validation, 20 alert, 50 selection and 15 filter, plus 40 price rules and one Quote Calculator Plugin script.

Sample data: one Salesforce CPQ org with 900 products and 120 product rules, staying or moving to one of four destinations
Destination and rule formSalesforce CPQ, staying: condition-actionProduct records kept in step1,800 in Salesforce and the ERPRules re-authored, and those without a counterpartNone; no new features arrive
Destination and rule formRevenue Cloud, same org: Business Rules Engine rules or constraint modelProduct records kept in step1,800 in Salesforce and the ERPRules re-authored, and those without a counterpartUp to 120; none without a counterpart
Destination and rule formHubSpot CPQ, Revenue Hub Enterprise: violation conditionsProduct records kept in step1,800 in HubSpot and the ERPRules re-authored, and those without a counterpart120; 65 selection and filter rules without one
Destination and rule formOracle CPQ, attached: ordered condition-actionProduct records kept in step2,700 in Oracle CPQ, Salesforce and the ERPRules re-authored, and those without a counterpart120; none without a rule type
Destination and rule formNetSuite CPQ, in the ERP: sequenced rulesProduct records kept in step900 with NetSuite as the ERP, or 1,800 if Salesforce keeps line itemsRules re-authored, and those without a counterpart120; none without a rule type

The record column is multiplication: 900 × 2 = 1,800 where the quote stays in a CRM, and 900 × 3 = 2,700 where Oracle CPQ holds it, because its connector synchronises parts to Salesforce products while the ERP keeps the item master. The NetSuite row assumes NetSuite is the ERP holding the item master, since NetSuite CPQ runs inside it, and counts 900 when Salesforce opportunities carry only an amount.

The rule column is addition. The 35 validation and 20 alert rules only show a message, which a seller must fix or may ignore, so HubSpot's Block publish and Show warning give them a counterpart: 55 of 120, or 45.8 percent. The 50 selection and 15 filter rules, 65 or 54.2 percent, change which products are offered, which no HubSpot rule can do, so each becomes a Block publish check or moves to an attached configurator. A price book covers part of a filter rule's work, per deal. Revenue Cloud's rule actions, Oracle CPQ's rule types and NetSuite CPQ's added items, hidden building blocks and validation messages cover all four behaviours. Each moving route counts all 120 as re-authored, an upper bound for Revenue Cloud, since no page read says which rules the partner tool converts.

Price rules move the same way: Revenue Cloud turns them into pricing procedures, Oracle CPQ has pricing rules, NetSuite CPQ pricing records with rules, and HubSpot's product library flat and tiered prices rather than computed ones. QCP code is reimplemented in BML, IronPython in SAP CPQ or NetSuite's JavaScript.

CPQ Products Compared by Class

Paul Maxwell, who wrote this article, owns RevCPQ, a CPQ attached to HubSpot and not assessed here, and the publishing firm is a HubSpot Solutions Partner; both interests bear on the CRM-resident and attached rows below.

No product wins across businesses, so the table gives each product two conditions under which it is the stronger choice.

Nine CPQ products by quote record location and rule form, with two conditions under which each wins, as documented in October 2026
ProductHubSpot CPQ, Revenue Hub EnterpriseQuote record and rule formCRM; violation conditionsWins whereRules read deal, company and contract fields with no sync; an accepted quote creates its subscription or invoice in the CRM
ProductSalesforce Revenue CloudQuote record and rule formCRM; Business Rules Engine condition-action rules or constraint modelWins whereCPQ can run alongside during transition; rule-based configuration for simple-to-moderate products and a constraint engine for complex ones
ProductConga CPQ for SalesforceQuote record and rule formCRM; condition-actionWins whereA Salesforce CPQ org keeps its org and rule form; replacement rules substitute for discontinued products
ProductSalesforce CPQ, existing orgsQuote record and rule formCRM; ordered condition-actionWins whereCustomers keep their licences and renew; amendments and renewals priced from contract records keep working, with no rule rewritten
ProductSAP CPQQuote record and rule formAttached; ranked formula rulesWins whereMaterials replicate from SAP S/4HANA; quote revisions attach to a Salesforce opportunity, one marked primary
ProductOracle CPQQuote record and rule formAttached; condition-action in fixed precedenceWins whereBill of materials rules feed an ERP; a Salesforce connector syncs quotes, parts and price books
ProductDynamics 365 Supply Chain ManagementQuote record and rule formERP; solver constraintsWins whereEach configured variant gets its own BOM and route; table constraints state allowed combinations as a matrix
ProductNetSuite CPQQuote record and rule formERP; sequenced condition-actionWins whereRules add materials and routing steps to work orders with the CPQ Manufacturing SuiteApp; it runs on estimates, sales orders and opportunities
ProductOdooQuote record and rule formERP; attribute exclusionsWins whereSimple exclusions need no rule language; variants can be created only when a sales order uses them

The conditions select a class before a product: commercial facts select a CRM-resident product, an ERP-mastered catalogue sold through Salesforce an attached CPQ, and a configuration that must become a bill of materials an ERP-resident configurator. CPQ for a small business with a few incompatible options needs little more than Odoo's exclusions or HubSpot's quote rules, and a catalogue with no rules between products needs best quoting software.

Costs and Returns by Quote Record Location

A CRM-resident CPQ buys rules that read commercial records without a sync, and one quote record that pipeline reports read directly. It costs the edition holding the rule engine. HubSpot gates quote rules to Revenue Hub Enterprise, listed from $140 per seat per month, and a quoting user needs a Revenue Hub seat, so a sample team of 25 quoting users pays $42,000 a year. Salesforce lists Revenue Cloud Growth at $150 and Advanced at $200 per user per month, billed annually, as a paid add-on requiring a Sales Cloud, Service Cloud or CRM licence. The same team pays $45,000 or $60,000 a year on top of those licences, and the ERP integration is a separate cost on either route. The case is strongest where configuration follows commercial facts and weakest where validity depends on stock or routing.

An attached CPQ buys a rule engine independent of any one CRM, and SAP's integration guide covers both Salesforce and SAP Sales Cloud. It costs a third catalogue copy, two syncs whose intervals enter every rule that reads a copied field, and a licence whose terms the documentation read does not state. The case is strongest for an ERP-mastered catalogue sold through another vendor's CRM and weakest where one CRM's own rules already cover the catalogue.

An ERP-resident configurator buys rules over manufacturing records, and a configured variant that becomes a bill of materials, route or work order without a handoff. It costs ERP licences for everyone who quotes, as NetSuite requires, or a sync that carries quotes back to the CRM. The case is strongest for configure-to-order manufacturing and weakest for subscription and services selling, where no bill of materials exists for a rule to read.

Shortlist Procedure and Rule Rebuild Test

  1. Export the active rules from the Salesforce CPQ Product Rules tab with each rule's Type, Evaluation Event and Evaluation Order, the Tested Field or Tested Variable of its Error Conditions, and its Actions; add the price rules with their Evaluation Event and Evaluation Order, and the QCP script.
  2. Tag each rule by the records it reads and writes: commercial, such as deal and contract; the catalogue alone; or manufacturing, such as bill of materials, route and stock.
  3. Select the class from the tags: manufacturing tags point to an ERP-resident configurator or an attached CPQ that emits a bill of materials, and commercial tags to a CRM-resident product.
  4. Count dependent pairs, where one rule reads a value another rule sets. Many pairs favour a constraint model; few suit condition-action rules with the order written down.
  5. Shortlist products in the selected cell and obtain each vendor's rule syntax, its documented evaluation order, and the sync interval or scripted call behind every field a rule reads from another system.
  6. Rebuild ten rules in each candidate's trial or sandbox, including two dependent pairs and one rule for each tag. Set each pair's order in the product's own field: Rank on an SAP CPQ formula rule, the Reorder icon on an Oracle CPQ Rules page, Sequence and Run as after-event on NetSuite's Actions subtab at CPQ > Configurator > Product Maintenance, or a Revenue Cloud rule's sequence. HubSpot rules live at Settings > Data Management > Objects > Quotes, Rules tab, with no documented order field.
  7. Verify reach and order. Change a source field in its system of record and time how long the rebuilt rule takes to react, then reverse the order of each dependent pair and record whether any result changes. A delay is a sync interval that belongs in the rule's specification, and a changed result is an order dependency to document before go-live.

Symptoms After Go-Live and Their Causes

A configuration that passes the CPQ and is rejected downstream as unbuildable was checked by a rule reading a catalogue copy with no bill of materials or stock. The fix lies in placement: move the rule to an ERP-resident configurator, synchronise the needed fields into the CPQ and record the interval, or call the ERP from a script where the product supports one.

Options giving different results depending on which a seller picks first point to condition-action rules running in an unwritten order: Oracle documents a stale value when a calculated attribute precedes its source, and Salesforce CPQ selection rules leave their actions in place. The fix is an explicit rank in SAP CPQ, a sequence in NetSuite CPQ or Revenue Cloud, an Evaluation Order in Salesforce CPQ, a reordered attribute list in Oracle CPQ, or a constraint. Conga's pages offer no order to set, so a dependent pair there is tested in both orders.

An opportunity amount that differs from the accepted quote in an attached CPQ comes from a sync carrying another revision. In SAP CPQ, the Attach every revision of the quote to the same opportunity parameter decides whether all revisions or only the active one reach the opportunity, and Make quote primary decides which Salesforce treats as primary; both belong in the cutover test.

Boundaries of the Classification

This comparison classifies CPQ products and sets out a test for choosing among them; it does not rank products within a class or cover billing after acceptance, and HubSpot's native tools are treated in HubSpot CPQ. DealHub, PandaDoc, Tacton, Zuora and other products are left out without assessment.

Behaviour, editions and prices are as documented in October 2026, read on 7 October 2026. Conga's documentation, read through the CPQ for Salesforce Oct '26 release notes, does not state whether that package is still sold to new customers. No product was tested: the sample counts documented rule types, not converted rules, and a rule whose condition reads a field the destination does not hold fails to port whatever its type. No page read documents how a Salesforce CPQ product rule converts into another product's form, and the partner tool that Salesforce says maps rules was not examined.

In Summary

The best CPQ software for a business is decided by two properties that feature grids omit. Where the quote record lives sets what a declarative rule can read without a sync or a scripted call, and how many catalogue copies must agree. How a rule is written sets whether rule order is part of its meaning: HubSpot's violation conditions need none, and condition-action rules carry it as a rank or sequence.

For the Salesforce CPQ installed base, every route except staying re-authors or redesigns the rules: 120 on the sample org, 65 of them without a HubSpot counterpart. The procedure's inventory, with each rule tagged by the records it reads, names the class a business needs, and the ten-rule rebuild separates the products within it.

HubSpot services

Onboarding, implementation, integration, migration, administration and training, each scoped and priced before the work begins

WEEKLY PROGRAM

RevOps Office Hours

A recurring weekly RevOps operating program. Live support plus hands-on HubSpot implementation work.

$1,500/mo
Monthly Operating Program
  • →1 live Office Hours session per week
  • →4 hours of hands-on implementation work per month
  • →Hours allocated against priorities agreed at the start of each period
  • →Recurring monthly cadence