Skip to content

CPQ Architecture

Salesforce CPQ (Configure, Price, Quote) is one of the most architecturally significant managed packages in the Salesforce ecosystem. It extends the standard sales process with complex product configuration, multi-step pricing logic, and approval workflows. CPQ decisions in CTA scenarios are high-stakes - they affect data model, performance, governor limits, and long-term platform strategy.

The CPQ managed package introduces approximately 30+ custom objects under the SBQQ__ namespace, extending the standard Sales Cloud object model.

Core entity relationships from Opportunity through Quote, Quote Lines, and Order to Billing invoices, with subscription and bundle product linkages.
Figure 1. CPQ extends the standard Opportunity-to-Order path with Quote, QuoteLine, and QuoteLineGroup objects under the SBQQ namespace. The Subscription object is the foundation for renewals and amendments; the Order object bridges CPQ to Billing invoicing in the blng namespace.
ObjectAPI NamePurpose
QuoteSBQQ__Quote__cContainer for product selections and pricing; replaces standard Quote
Quote LineSBQQ__QuoteLine__cIndividual line item with product, quantity, and calculated price
Quote Line GroupSBQQ__QuoteLineGroup__cLogical grouping of lines (e.g., “Hardware”, “Services”)
Product OptionSBQQ__ProductOption__cDefines bundle components and their relationships
Product RuleSBQQ__ProductRule__cValidation, selection, filter, and alert rules for configuration
Price RuleSBQQ__PriceRule__cAutomates field updates and price calculations on quote lines
Discount ScheduleSBQQ__DiscountSchedule__cVolume-based and tiered discount definitions
SubscriptionSBQQ__Subscription__cTracks active subscriptions for renewals and amendments
ContractContract (standard)Extended by CPQ for contracted pricing and renewal tracking
OrderOrder (standard)Generated from ordered quotes; bridge to Billing

CPQ calculates prices through a sequential waterfall. Each step cascades into the next - understanding this sequence is essential for debugging pricing issues and designing price rules.

Sequential price calculation from list price through contracted, discount schedule, channel, and additional discount steps to net total.
Figure 2. Each waterfall step feeds the next, so a misconfigured contracted price silently propagates through every downstream calculation. Three special Quote and QuoteLine fields can alter the waterfall order, making sequence awareness critical when debugging unexpected net prices.
StepFieldHow It Is Set
List PriceSBQQ__ListPrice__cFrom PricebookEntry; starting point for all calculations
Contracted PriceSBQQ__ContractedPrice__cFrom active Contract when SBQQ__GenerateContractedPrice__c is set on the Quote Line (controls whether contracted prices are created; PreserveBundle__c controls bundle structure on renewals, not contracted pricing)
Special PriceSBQQ__SpecialPrice__cContracted price if exists, otherwise list price
Regular PriceSBQQ__RegularPrice__cAfter applying Discount Schedules (volume/tiered)
Customer PriceSBQQ__CustomerPrice__cAfter Partner Discount and Distributor Discount
Net Unit PriceSBQQ__NetPrice__cAfter Additional Discount (manual rep discount)

When a user clicks Calculate in the Quote Line Editor, CPQ runs a defined sequence of operations.

StageWhat HappensExtensibility
1. Before CalculatePrice Rules with Evaluation Event = “Before Calculate” firePrice Rules
2. Quantity CalculationCalculates effective quantities from MDQ segments, percent-of-totalAutomatic
3. On CalculatePrice Rules with Evaluation Event = “On Calculate” firePrice Rules
4. Price WaterfallList —> Contracted —> Special —> Regular —> Customer —> NetDiscount Schedules
5. After CalculatePrice Rules with Evaluation Event = “After Calculate” firePrice Rules
6. On InitializationQCP onInit method (first calculation only)QCP (JavaScript)
7. Before/After Price RulesQCP onBeforePriceRules and onAfterPriceRules methodsQCP (JavaScript)
8. After Calculate (QCP)QCP onAfterCalculate method - last in sequenceQCP (JavaScript)

CPQ provides three rule types that control product configuration and pricing without code.

Rule TypePurposeExample
ValidationBlock invalid configurations; prevents save”Cannot sell Support without a License product”
SelectionAuto-add, remove, show, or hide bundle options”Selecting Enterprise adds SSO option automatically”
FilterPre-filter dynamic lookup results”Show only products matching the selected region”
AlertWarn but allow override (soft validation)“This discount exceeds typical margin - confirm?”

Price Rules inject values into quote line fields during calculation. They consist of Price Conditions (when to fire) and Price Actions (what to update). Unlike Product Rules, Price Rules can target any quote or quote line field - not just pricing fields.

Advanced Approvals is a separate managed package (SBAA__ namespace) that extends CPQ with more capable approval workflows.

FeatureStandard ApprovalsAdvanced Approvals (SBAA)
Parallel approvalsNoYes - multiple approvers simultaneously
Approval chainsLimitedMulti-level sequential chains
Smart approvalNoSkips re-approval if unchanged fields
Dynamic approversNoAssigns approvers based on conditions
Recall and reassignBasicFull recall, delegate, reassign
Approval previewNoShows required approvers before submission

The Order object bridges CPQ and Salesforce Billing (blng__ namespace). When a quote is ordered, CPQ generates Order and OrderItem records that Billing picks up for invoicing and revenue recognition.

Order object bridges CPQ quote lines to Billing invoices, which feed revenue schedules and payment records into the ERP general ledger.
Figure 3. The Order object is the handoff point between CPQ and Billing: CPQ owns the quote-to-order process, Billing owns invoicing and payment collection, and the ERP remains the system of record for general ledger and financial reporting. The integration boundary must be clearly defined to avoid duplicate revenue recognition.

CPQ vs Custom Pricing: When to Recommend Each

Section titled “CPQ vs Custom Pricing: When to Recommend Each”

This is a frequent CTA scenario decision.

FactorRecommend CPQRecommend Custom
Product catalog50+ products with bundles and optionsSimple catalog, fewer than 20 products
Pricing modelMulti-dimensional: volume, tiered, contracted, subscriptionFlat pricing or single discount tier
Discount governanceApproval chains, floor prices, partner discountsSimple manager approval sufficient
Sales teamLarge team needing guided selling and guardrailsSmall team with pricing authority
Quoting volume100+ quotes/monthLow volume, manual quoting acceptable
ComplianceAudit trail for pricing decisions requiredMinimal compliance needs
TimelineCan invest 3-6 months in implementationNeed pricing in weeks
BudgetCan afford CPQ licenses ($75+/user/month)License cost is prohibitive
Existing stackAlready on Sales Cloud; Billing plannedNon-Salesforce CRM or ERP handles pricing

CPQ vs Agentforce Revenue Management (formerly Revenue Cloud) vs Industries CPQ

Section titled “CPQ vs Agentforce Revenue Management (formerly Revenue Cloud) vs Industries CPQ”

With the CPQ end-of-sale, CTAs must understand all three options.

DimensionLegacy CPQ (SBQQ)Agentforce Revenue Management (formerly Revenue Cloud)Industries CPQ (Vlocity)
ArchitectureManaged package (1GP)Core-native platformManaged package + OmniStudio
Product modelBundles, options, MDQProducts, offers, pricesEPC (Enterprise Product Catalog)
Pricing engineJavaScript QCP + Price RulesNative pricing engineCart-based pricing
New salesEnd-of-sale (March 2025)Actively soldSold with Industry Clouds
Best forExisting implementationsGreenfield deploymentsTelco, media, energy, utilities
ApprovalsSBAA Advanced ApprovalsBuilt-in approval flowsOmniStudio-based approvals
Order modelQuote to Order (separate)Integrated quote-to-orderAsset-based ordering
Migration pathMigrate to Agentforce Revenue ManagementN/A (target state)Separate trajectory

CPQ performance is the most common pain point in large implementations. The Quote Line Editor runs calculations client-side, and complex configurations can hit governor limits server-side.

MetricComfortable RangeCaution ZoneDanger Zone
Quote lines per quote< 100100-200> 200
Bundle options< 50 per bundle50-100> 100
Product rules< 50 active50-100> 100
Price rules< 30 active30-60> 60
Quote calculation time< 5 seconds5-15 seconds> 15 seconds
Product catalog size< 5,000 products5K-20K> 20K
StrategyImpactImplementation
Large Quote ThresholdReduces fields processedSet SBQQ__LargeQuoteThreshold__c on CPQ Package settings
Minimize formula fieldsReduces calculation overheadReplace formulas with Price Rule field updates
Reduce lookup relationshipsFewer cross-object queriesDenormalize frequently accessed data onto Quote Line
Async order generationPrevents timeout on orderingEnable SBQQ__AsynchronousOrderGeneration__c
Cacheable lookupsReduces redundant SOQLUse SBQQ__CacheDiscountSchedules__c
Lean quote line fieldsFaster QLE renderingRemove unused fields from QLE field sets
Batch product rule evaluationReduces rule processingGroup related rules; minimize rule scope

Scenario 1: Manufacturing Company - Configure-to-Order

Section titled “Scenario 1: Manufacturing Company - Configure-to-Order”

Situation: A manufacturer sells industrial equipment with 500+ configurable options across 12 product families. Sales reps currently use spreadsheets, leading to 15% error rate on quotes and 3-day average quote turnaround.

What you would present:

  • For a new implementation, recommend Salesforce Revenue Cloud (Agentforce Revenue Management) with product offers, pricing plans, and native approval flows. Verify feature parity for nested bundle depth and engineering constraint rules before committing
  • If Revenue Cloud does not yet support the required bundle complexity, fall back to legacy CPQ (SBQQ) with nested bundles - top-level bundle per product family, sub-bundles for option groups. Note that SBQQ is end-of-sale (March 2025) and plan a migration path to Revenue Cloud
  • Product Rules (validation type) to enforce engineering constraints (e.g., motor size must match frame size)
  • Price Rules to calculate shipping surcharges based on weight and destination
  • Advanced Approvals with chain: Sales Manager —> Engineering Review (if custom config) —> Finance (if discount > 20%)
  • Performance mitigation: Large Quote Threshold at 150 lines, async order generation, quote splitting for orders spanning multiple product families

Trade-off articulated: “Revenue Cloud is the strategic path for new implementations. If the bundle complexity exceeds what Revenue Cloud supports today, legacy CPQ is viable with a documented migration plan. Either way, the ROI justifies the investment - eliminating the 15% error rate and reducing quote turnaround from 3 days to under 1 hour.”

Scenario 2: SaaS Company - Subscription + Usage Billing

Section titled “Scenario 2: SaaS Company - Subscription + Usage Billing”

Situation: A SaaS company sells platform licenses (annual subscription) with usage-based API call pricing. They need mid-term amendments (add seats), auto-renewals, and integration with NetSuite for revenue recognition.

What you would present:

  • CPQ + Billing end-to-end: CPQ for quoting and configuration, Billing for invoicing and usage rating
  • MDQ (Multi-Dimensional Quoting) for subscription products with annual ramps
  • Amendment and Renewal flows using CPQ’s SBQQ__Subscription__c to track entitlements
  • Usage-based billing via Billing’s Usage Summary object for API call metering
  • NetSuite integration via middleware (MuleSoft) for invoice and payment sync to GL
  • Agentforce Revenue Management evaluation note: If this is a greenfield implementation, evaluate Agentforce Revenue Management for native usage rating and subscription management before committing to legacy CPQ + Billing

Trade-off articulated: “We chose the combined CPQ + Billing stack over NetSuite’s native quoting because the sales team lives in Salesforce, and quoting accuracy depends on CRM data (account tier, usage history). The trade-off is managing two managed packages (SBQQ + blng) with their combined governor limit footprint.”

Scenario 3: Channel Sales - Partner Pricing and Approvals

Section titled “Scenario 3: Channel Sales - Partner Pricing and Approvals”

Situation: A technology company sells through 200+ channel partners. Each partner tier (Gold, Silver, Bronze) gets different discount levels. Partners submit quotes through a portal that need headquarters approval above certain thresholds.

What you would present:

  • For a new implementation, evaluate Salesforce Revenue Cloud with Experience Cloud (formerly Community Cloud) for partner-submitted quotes. Revenue Cloud supports partner pricing tiers and approval flows natively
  • For existing SBQQ deployments, Partner Community with CPQ access provides the same capability but note the end-of-sale status and plan for migration
  • Partner and Distributor Discounts in the pricing waterfall, configured per partner tier
  • Advanced Approvals with dynamic approver assignment based on deal size and partner tier
  • Contracted Pricing for strategic partners with pre-negotiated rates
  • Floor pricing to prevent margin erosion - no quote can go below defined minimums regardless of stacked discounts

Trade-off articulated: “Partner portal with Revenue Cloud (or legacy CPQ for existing deployments) gives channel partners self-service quoting with guardrails. The trade-off is Experience Cloud licensing cost and the complexity of managing quoting permissions in a portal context. The alternative - emailing spreadsheets - creates an unacceptable error rate and 48-hour turnaround.”

Personal study notes for the Salesforce CTA exam. Content compiled from VJ's study notes, official Salesforce documentation, community sources, and online publicly available content, then organized and presented with AI assistance. Not affiliated with Salesforce. © 2025–2026 VJ Srivastava.