Quote & Order Management
An architect-level deep-dive comparing how Salesforce CPQ (SteelBrick origin) and Salesforce Revenue Cloud each handle the full quote-to-order lifecycle — from the data model and persona journeys through automation engines, configuration effort, and common customization patterns.
Use Case, User Journey & Personas
When to use this section · who drives it · step-by-step journeys on both platforms
When to use — Quote & Order Management
Core Use Cases
- Generating, versioning, and presenting commercial quotes to prospects and customers
- Applying discounts, bundles, and special pricing terms before deal acceptance
- Managing e-signature and formal quote acceptance workflows
- Converting accepted quotes into activated orders that trigger fulfillment
- Producing order line items that downstream Billing, RevRec, or ERP systems can consume
- Creating Assets (entitlements) that represent what the customer owns post-order
Internal Personas
Sales Representative
Owns quote creation, product selection, and initial discount requests. Primary user of the quote configurator.
Sales Manager
Reviews and approves discount levels above rep authority. Monitors quote pipeline via reports.
Order Management Team
Activates orders, coordinates with fulfillment, and resolves order exceptions post-acceptance.
Deal Desk
Structures complex, non-standard deals. Manages multi-year ramps, custom terms, and exception pricing.
Finance / RevRec
Reviews order integrity, validates pricing against policies, and ensures orders are billing-ready.
External Personas
Customer (E-Sign)
Reviews the rendered quote document and signs electronically via DocuSign, Conga, or built-in RC e-sign.
Channel Partner (PRM)
Submits deal registrations or quotes through the Partner Community. Subject to partner pricing rules and approval gates.
CPQ — Quote-to-Order Journey
SBQQ__Quote__c record linked to the OpportunitySBQQ__QuoteDocument__cSBQQ__Primary__c set to true; triggers sync of Amount and Close Date back to OpportunityOrder and OrderItem records from quote linesRevenue Cloud — Quote-to-Order-to-Asset Journey
Quote record in Draft lifecycle stateOrder with full lifecycle management; OrderItems generated from QuoteLineItemsAsset and AssetLineItem records created — customer's entitlements are liveSBQQ__Quote__c) — it does not extend or replace the standard Quote object, which creates a data model fork.
Revenue Cloud Quote is the enhanced standard Quote object — platform-native, supported by standard reports, flows, and all ecosystem tools without object translation.
This difference cascades into every integration pattern, migration path, and governor limit profile downstream.
Key Takeaway — 3.1
- Both platforms follow the same conceptual arc: Opportunity → Quote → Document → Sign → Order → Activation
- CPQ's journey is battle-tested for complex B2B sales but ends at Order activation; Billing/RevRec require the CPQ Billing add-on or a separate platform
- RC extends the journey natively to Assets and (with SOM) Fulfillment Orders — making it a true order-to-cash platform without add-ons
- Partner quoting via PRM is supported on both; headless quoting via API is an RC-native pattern not available in stock CPQ
Licensing Requirements
Which licenses unlock which quoting and order capabilities
CPQ — License Stack
- ✓Salesforce CPQ (Base) — core quoting: SBQQ__Quote__c, line editor, product configurator, PDF generation, approval engine
- ✓Salesforce CPQ+ (Advanced) — adds multi-dimensional quoting, contracted pricing, advanced approvals, and co-term management
- ~CPQ Billing Add-on — required for order-to-invoice automation, subscription management, and revenue recognition within the CPQ stack
- ✗E-Signature (DocuSign / Conga) — no native e-sign; third-party ISV license required at additional cost per envelope or user
- ✗Salesforce Order Management (SOM) — separate product license for fulfillment orchestration; CPQ does not include SOM
Revenue Cloud — License Stack
- ✓RC Base — quoting (enhanced standard Quote), product catalog, pricing engine, quote-to-order conversion, and Asset creation are all native
- ✓RC Advanced — adds advanced approvals, complex bundling, headless quoting API, and extended lifecycle management
- ~E-Signature — Salesforce-native eSign available; DocuSign connector bundled in some SKUs. Full Conga integration still requires separate license
- ~Salesforce Order Management (SOM) — required for FulfillmentOrder and advanced order routing; available as add-on to RC or as standalone. Billing & RevRec functionality native to RC
- ✓Headless Order API — included with RC Advanced; no separate ISV license needed for API-first quoting patterns
Feature Availability by License Tier
| Capability | CPQ Std | CPQ+ | RC Base | RC Advanced | SOM Add-on |
|---|---|---|---|---|---|
| Quote Creation & Line Editor | ✓ | ✓ | ✓ | ✓ | — |
| Quote PDF / Document Generation | ✓ | ✓ | ✓ | ✓ | — |
| Native E-Signature | ✗ | ✗ | ~ | ✓ | — |
| Quote Approval Workflow | ✓ | ✓ | ✓ | ✓ | — |
| Advanced / Multi-Step Approvals | ~ | ✓ | ~ | ✓ | — |
| Quote-to-Order Conversion | ✓ | ✓ | ✓ | ✓ | — |
| Order Activation & Lifecycle | ✓ | ✓ | ✓ | ✓ | — |
| Contracted Pricing on Renewal | ✗ | ✓ | ✓ | ✓ | — |
| Asset Creation on Activation | ✗ | ✗ | ✓ | ✓ | — |
| Fulfillment Order / SOM Routing | ✗ | ✗ | ✗ | ~ | ✓ |
| Headless Quote / Order API | ✗ | ✗ | ~ | ✓ | — |
| Proration on Mid-Cycle Orders | ✗ (Billing add-on) | ✗ (Billing add-on) | ✓ | ✓ | — |
Key Takeaway — 3.2
- CPQ Base + CPQ+ covers quoting comprehensively but requires add-ons (Billing, SOM, e-sign ISV) for a full order-to-cash stack — total cost is significantly higher than the base license suggests
- RC Base bundles more of the order-to-cash journey natively; e-sign and SOM are optional add-ons rather than hard requirements for basic order management
- For net-new implementations evaluated purely on capability-per-dollar, RC is structurally more efficient unless the org has deeply customized CPQ already in production
Data Model
Key objects, field-level detail, and the order-to-asset object relationship map
CPQ Core Objects
| Object API Name | Type | Purpose | Key Fields |
|---|---|---|---|
| SBQQ__Quote__c | CPQ-Specific | Primary quote object — all CPQ quoting lives here, not on the standard Quote | SBQQ__Opportunity2__c, SBQQ__Primary__c, SBQQ__Status__c, SBQQ__ExpirationDate__c, SBQQ__Ordered__c |
| SBQQ__QuoteLine__c | CPQ-Specific | Individual line items on a CPQ quote, including bundle children | SBQQ__Product__c, SBQQ__Quantity__c, SBQQ__ListPrice__c, SBQQ__CustomerPrice__c, SBQQ__Discount__c, SBQQ__SubscriptionPricing__c |
| SBQQ__QuoteDocument__c | CPQ-Specific | Tracks generated PDF documents and e-sign status per quote version | SBQQ__Quote__c, SBQQ__Template__c, SBQQ__DocumentFormat__c, SBQQ__SignatureStatus__c |
| SBQQ__QuoteLineGroup__c | CPQ-Specific | Groups quote lines for section headers, group-level discounts, or segment pricing on a quote | SBQQ__Quote__c, SBQQ__Number__c, SBQQ__ListTotal__c, SBQQ__CustomerTotal__c |
| Order | Platform-Standard | Standard Salesforce Order object — CPQ populates this from the primary quote | AccountId, OpportunityId, SBQQ__Quote__c, Status, EffectiveDate, EndDate |
| OrderItem | CPQ-Modified | Standard Order Product — CPQ writes custom fields from quote lines; used by downstream Billing | SBQQ__QuoteLine__c, SBQQ__Contracted__c, SBQQ__BillingFrequency__c, Quantity, UnitPrice |
Revenue Cloud Core Objects
| Object API Name | Type | Purpose | Key Fields |
|---|---|---|---|
| Quote | RC-Enhanced Standard | RC uses and extends the standard Quote object with lifecycle state management | OpportunityId, Status (lifecycle), ExpirationDate, TotalAmount, QuoteToOrderStatus |
| QuoteLineItem | RC-Enhanced Standard | Standard Quote Line Item enhanced with RC attribute and pricing fields | QuoteId, Product2Id, Quantity, UnitPrice, TotalPrice, product attribute fields |
| Order | RC-Enhanced Standard | Standard Order enhanced with RC lifecycle state machine and order action types | Status (lifecycle), OrderAction (New/Amend/Cancel/Renew), StartDate, EndDate, BillingStatus |
| OrderItem | RC-Enhanced Standard | RC Order Product with lifecycle and asset linkage fields | OrderId, Product2Id, Quantity, UnitPrice, EndDate, AssetId |
| Asset | RC-Enhanced Standard | Customer-owned entitlement created on order activation; drives renewals and amendments | AccountId, Product2Id, Quantity, Status, LifecycleStartDate, LifecycleEndDate |
| AssetLineItem | RC-Standard | Granular asset line — links Asset to specific OrderItem and tracks quantity, term, and pricing history | AssetId, OrderItemId, StartDate, EndDate, TotalAmount, RevenueInstallmentPolicy |
| FulfillmentOrder | SOM / RC-Standard | Groups OrderItems for physical or digital fulfillment routing; requires SOM license for full usage | OrderId, FulfilledToName, Status, InvoiceId, DeliveryMethodId |
| OrderDeliveryGroup | SOM / RC-Standard | Groups order items by delivery destination or method within a FulfillmentOrder | OrderId, OrderDeliveryMethodId, DeliverToAddress, SellerOrderId |
Order-to-Asset Object Relationship Diagram
CPQ — Quote/Order Object Chain
Revenue Cloud — Quote/Order/Asset Object Chain
RC Core Objects — Deep Dive
Quote object with a declarative lifecycle state machine. Lifecycle stages (Draft → Approved → Presented → Accepted) are managed via Order Management flows, not a CPQ managed package. Native reporting, Einstein, and Flow work on this object without namespace workarounds.Status (lifecycle), ExpirationDate, TotalAmount, QuoteToOrderStatusQuoteId, Product2Id, Quantity, UnitPrice, TotalPrice, product attribute fieldsOrder enhanced with RC's lifecycle state machine and Order Action types (New, Amend, Cancel, Renew). Each action type triggers different downstream behavior — amendments create delta orders, renewals clone existing assets. No separate custom order object is needed.Status (lifecycle), OrderAction, StartDate, EndDate, BillingStatusAsset and AssetLineItem records — the customer's entitlement and granular line history. These drive all downstream amendments, renewals, and billing without a custom integration. CPQ has no equivalent native behavior.AssetId, OrderItemId, StartDate, EndDate, TotalAmount, RevenueInstallmentPolicyCart converts to a Quote or Order depending on the checkout flow. Requires B2B Commerce or Experience Cloud license.CartId, Product2Id, Quantity, TotalLineAmount, attribute configuration fieldsOrderItem records for physical or digital fulfillment routing. Required only when the business needs to split an order across fulfillment locations or delivery methods. The core quote-to-order-to-asset path has no dependency on FulfillmentOrder.OrderId, FulfilledToName, Status, InvoiceId, DeliveryMethodIdHow RC Quote & Order Objects Get Created
| Object | Creation Method | Who Creates It | Frequency | Notes |
|---|---|---|---|---|
| Quote | UI (Revenue Cloud Quote screen) or Agentforce Quote Agent | Sales Rep | Per opportunity | Standard object — Reports and Flow work natively without namespace workarounds |
| QuoteLineItem | Auto-created via Product Configurator when rep adds product | System (rep trigger) | Per product added | Attributes and pricing populated automatically by Pricing Procedure |
| Order | Auto-created from Quote on Accept / Convert action | System (rep or Flow trigger) | Per accepted quote | OrderAction type (New/Amend/Cancel/Renew) controls downstream behavior |
| OrderItem | Auto-created from QuoteLineItem during quote-to-order conversion | System | Per order line | Inherits pricing and attribute data from QuoteLineItem |
| Asset | Auto-created on Order activation by RC engine | System (activation engine) | Per activated order | Drives all future amendments, renewals, and billing — no custom integration needed |
| AssetLineItem | Auto-created alongside Asset on activation | System (activation engine) | Per OrderItem activated | Links Asset to specific OrderItem; tracks quantity, term, and pricing history |
| CartItem | Buyer action in storefront or Connect API call | Buyer (self-service) or Integration | Per cart interaction | Only in B2B Commerce / headless scenarios; converts to Quote or Order at checkout |
Quote and QuoteLineItem records — no separate integration model required.
Quote and Order records are created by sales reps through the UI. OrderItem, Asset, and AssetLineItem records are created automatically by the platform — reps never create these directly. Admins/architects configure the underlying Pricing Procedures, Order Management flows, and lifecycle state machines as one-time setup activities, not per-transaction tasks.
Self-Service Configurability Rating — Quote & Order
Key Takeaway — 3.3
- CPQ's custom object data model (
SBQQ__Quote__c) means all quoting lives outside the standard data architecture — every report, flow, and integration must account for this fork - RC's standard-object approach means native Salesforce tooling (Flow, Reports, Data Cloud, Einstein) works on quotes and orders without translation layers
- The Asset + AssetLineItem native creation on order activation is the single most impactful RC architectural difference — it eliminates an entire integration workstream that CPQ implementations typically require
- FulfillmentOrder / SOM objects are additive in RC; the core quote-to-order-to-asset path requires no SOM license
Automations
Platform-delivered automation behaviors that drive the quote and order lifecycle
SBQQ__Primary__c = true, CPQ automatically syncs Amount, CloseDate, and line-count fields back to the parent Opportunity. Configurable via Org Preferences.Order and OrderItem records from all active quote lines in a single transaction, including subscription field mapping.SBQQ__Subscription__c records from OrderItems marked as subscription products, linking them to parent contracts for renewal tracking.SBQQ__QuoteLineGroup__c) aggregate child line amounts automatically; group discounts propagate down to child lines via the pricing calculator.Asset and AssetLineItem records are automatically created from OrderItems when an Order is activated — no custom trigger or Billing add-on required.FulfillmentOrder and OrderDeliveryGroup records based on routing rules (warehouse, territory, priority). Routing logic is Flow-configurable.OrderStatusChanged), enabling event-driven ERP integration, notification systems, and async processing patterns.Key Takeaway — 3.4
- CPQ automations are centered on the quote-to-order conversion and pricing synchronization — the engine is powerful but terminates at order creation
- RC automations extend into post-order territory natively: asset creation, fulfillment routing, proration, and Platform Events are all delivered without custom code
- The RC state machine provides a formalized, auditable quote lifecycle that CPQ lacks — CPQ Status is a picklist with no enforced transition logic by default
- Both platforms rely heavily on Flow for custom automation logic; RC's deeper Flow integration (order orchestration flows) reduces the need for Apex in standard scenarios
Configuration (Architect Setup Level)
Declarative effort required per task — assessed for a senior Salesforce architect
| Configuration Task | CPQ Effort | RC Effort | Notes |
|---|---|---|---|
| Quote object setup & page layout | Low | Low | CPQ uses custom object; RC uses standard Quote — both require layout config and permission sets |
| Quote template / document generation | Medium | Medium | CPQ uses HTML/CSS-based templates with SBQQ template tags; RC uses OmniScript/document builder or external tools |
| E-signature integration | Medium–High | Medium | CPQ requires third-party ISV setup and mapping; RC has tighter native integration with lower configuration overhead |
| Order settings & activation behavior | Medium | Medium | CPQ order settings in Org Preferences; RC uses Order Settings page and lifecycle configuration |
| Contracted pricing setup | High | Medium | CPQ requires CPQ+ license + ContractedPrice records + co-term logic; RC handles this through standard price book and asset lifecycle |
| Asset creation configuration | N/A — Billing add-on | Medium | CPQ itself does not create Assets; requires CPQ Billing. RC creates Assets natively — configure Asset fields, mappings, and lifecycle policies |
| Fulfillment / SOM integration | N/A — Not available | High | RC + SOM requires fulfillment routing rules, warehouse location setup, and order delivery method config — significant but well-documented |
| Quote approval workflow | Medium | Medium | Both use native Approval Processes or Flow-based approvals; CPQ adds approval conditions via SBQQ__ApprovalCondition__c records |
| Headless quote / order API | N/A — Not available | High | RC headless pattern requires API enablement, Connected App setup, OAuth scopes, and consumer-side integration work |
| Order-to-opportunity sync | Low | Low | CPQ: Org Preference checkbox; RC: standard Opportunity-Order relationship with Flow sync for custom fields |
Configuration Complexity Watch-outs
- CPQ Org Preferences — a single setup page with 40+ boolean toggles that interact with each other in non-obvious ways. Document every toggle state before go-live
- CPQ Template Editor — HTML/CSS-based with a proprietary tag syntax; not all CSS is supported. Budget 2–4 weeks for a polished multi-section template
- RC Order Lifecycle — misconfigured lifecycle states can block order activation silently; always validate with an end-to-end quote-to-order smoke test in a sandbox
- SOM Routing Rules — OrderDeliveryGroup routing logic must be tested across all product type combinations; edge cases multiply quickly with mixed physical/digital SKUs
Key Takeaway — 3.5
- Overall configuration effort is comparable between CPQ and RC for the core quoting and order conversion path (both Medium effort)
- RC has lower effort for contracted pricing and e-sign; CPQ has higher effort for these same tasks and cannot natively handle Asset creation or headless APIs at all
- RC's SOM integration (when needed) is genuinely High effort, but it is an optional add-on — the baseline without SOM is lighter than CPQ's equivalent full-stack
Customization (Common Additions)
Frequently implemented custom extensions and integration patterns on both platforms
CPQ Custom Extensions
-
✓
Custom Quote Document Templates — HTML/CSS templates with SBQQ merge tags; architects typically build multi-section templates with conditional sections, custom fonts, and co-branded headers. Stored as HTML static resources or visualforce.
-
✓
Visualforce / LWC Quote Line Editor Overrides — the standard CPQ line editor can be partially replaced with custom LWC components for complex UX requirements (e.g., real-time inventory checks, custom pricing calculators) using the CPQ JavaScript API.
-
✓
Apex Triggers for Custom Order Transformation —
SBQQ__Order__candOrderItemtriggers to apply business logic not covered by CPQ configuration: e.g., custom field mapping from quote lines to order products, segment-level calculations, ERP field population. -
✓
Custom Order Activation Sequences — override of standard order activation via Apex
OrderActivationplugins or post-activation flows: e.g., generating external IDs, calling provisioning APIs, creating custom entitlement records. -
✓
ERP Integration Middleware — outbound order data typically sent via MuleSoft, Boomi, or custom REST callouts triggered from order activation. CPQ provides no native outbound Order API; all ERP sync is custom-built.
Revenue Cloud Custom Extensions
-
✓
Headless Quoting via LWC / External UI — RC's headless quoting pattern allows custom storefronts, portals, or mobile apps to create and manage quotes via REST API, with RC as the pricing and configuration engine behind a custom UX.
-
✓
Complex Order Routing via Flow — order orchestration flows can be extended to implement complex routing logic: multi-warehouse allocation, backorder handling, priority queuing, and carrier selection — all declarative via Flow Orchestration.
-
✓
Custom Fulfillment Orchestration — beyond SOM's built-in routing, custom fulfillment steps can be inserted into the orchestration flow: e.g., calling a 3PL API, waiting for warehouse confirmation via Platform Event, or triggering IoT provisioning.
-
✓
ERP Integration via MuleSoft / Custom API — RC publishes Platform Events on order state transitions, enabling event-driven ERP integration. The standard Order object's API accessibility reduces the mapping complexity vs. CPQ's custom object translation.
-
✓
Custom Asset Lifecycle Actions — post-activation asset actions (upgrade, downgrade, add-on, cancellation) can be extended with custom Apex or Flow logic, modifying
AssetLineItemrecords and triggering prorated order amendments automatically.
Anti-Patterns — What to Avoid
CPQ Anti-Patterns
- Overriding the pricing calculator with Apex — calling the SBQQ pricing calculator from Apex triggers a nested async invocation that frequently hits governor limits. Use Price Rules and Price Actions instead
- Triggers on SBQQ__QuoteLine__c at high volume — CPQ recalculates all lines on any change; triggers on QuoteLine can fire 10-50x per user action, causing CPU timeout errors
- Multiple Primary Quotes on one Opportunity — while the platform allows it briefly during transitions, persistent multi-primary states cause Amount sync conflicts; enforce a single-primary invariant with validation rules
- Bypassing the Order button with direct DML — creating Order / OrderItem records directly (not via CPQ's order action) skips subscription linking, contracted pricing stamping, and quote-line–order-product mapping; produces orphaned subscriptions
Revenue Cloud Anti-Patterns
- Skipping lifecycle state validation in integrations — API callers that update Order Status directly without honoring the RC lifecycle state machine break the orchestration flow and leave Assets in inconsistent states
- Creating AssetLineItems manually outside order activation — AssetLineItem records should only be created by the RC order activation engine; manual creation bypasses proration logic and billing triggers
- Using legacy CPQ-style Visualforce in RC — RC's quoting UX is LWC-first and headless-API-compatible; Visualforce overrides are incompatible with the headless pattern and create maintenance debt
- Ignoring SOM routing complexity during initial design — deferring fulfillment routing design until after go-live is a common RC mistake; routing rule gaps cause FulfillmentOrder creation failures that are hard to debug in production
Key Takeaway — 3.6
- CPQ customization is mature and well-documented — the ISV ecosystem is large, patterns are proven, and most edge cases have solved reference architectures. The trade-off is technical debt accumulation from Apex-heavy implementations
- RC customization is leaning into LWC, Flow, and API-first patterns — more aligned with Salesforce's long-term platform direction and significantly less Apex-dependent for standard scenarios
- The headless quoting pattern in RC is a genuine architectural advantage for organizations building custom front-end experiences (B2B portals, mobile commerce, self-service quoting) — CPQ has no equivalent native capability
- Both platforms punish anti-patterns severely in production; enforce architectural governance checkpoints before any customization reaches a sandbox deployment
RC Quote Generation — Deep Dive
Who creates quotes, quote-first vs opportunity-first, customer self-service, and Sales Cloud continuity
Path 1 — Opportunity-First (Standard / Recommended)
Path 2 — Quote-First (RC-Only Capability)
Path 3 — Customer Self-Service Quoting (Experience Cloud / Headless)
Sales Cloud Continuity — Forecasting, Territory & Sharing
Which Quote Path Should You Use?
| Scenario | Recommended Path | Opportunity Required? | Forecast Impact | Sharing Consideration |
|---|---|---|---|---|
| Standard B2B field sales | Path 1 — Opportunity-First | Yes | Native — syncs via primary quote Flow | Inherits Opportunity sharing |
| High-velocity / inside sales (fast transactions) | Path 2 — Quote-First, link Opp later | No (link recommended) | Requires Opp link or auto-create Flow | Set Quote OWD or sharing rule |
| Renewal processing (system-initiated) | Path 2 — Quote-First via Flow/Apex | No (auto-create Opp if needed) | Auto-create Opp on quote acceptance | Set owner via territory or account team |
| Customer portal self-service | Path 3 — Experience Cloud / CC license | No (auto-create on acceptance) | Flow creates Opp when quote accepted | Share quote with account owner via Flow |
| B2B Commerce storefront purchase | Path 3 — B2B Commerce Cart → Order | No | Booked revenue; Opp optional for reporting | Commerce order shared with account owner |
| Headless / API-driven quoting | Path 3 — Connect API | No | Downstream system triggers Opp creation | Integration user owns; transfer via Flow |
| CPQ (any scenario) | Path 1 only — Opportunity is required | Yes — always | CPQ Primary Quote sync to Opportunity | Inherits Opportunity sharing |
Key Takeaway — 3.7
- For standard field sales, nothing changes: Opportunity → Quote → Order is the same motion as CPQ. Forecasting, territory, and sharing all work identically
- RC unlocks Quote-First and customer self-service paths that CPQ simply cannot do — standalone quotes, portal-generated quotes, and headless API quoting are native RC capabilities with no equivalent in the managed-package model
- The Opportunity is still the heart of Sales Cloud forecasting and territory management — RC does not replace it; it removes the hard requirement that a rep must create one before a quote can exist
- The governing principle for architects: if an Opportunity-free path is enabled, always implement a guardrail (Flow, validation rule, or auto-create) that ensures the Opportunity is eventually created before the deal closes — otherwise the gap will silently corrupt forecast and territory data
- Customer self-service quoting requires an Experience Cloud or B2B Commerce license on top of RC — a CC license alone is not sufficient; the Product Configurator LWC and Pricing Procedure must be explicitly exposed on the portal page
RC 3.8 — E-Signature Deep Dive
E-signature is the bridge between a finalized Quote and a customer-committed Order. Revenue Cloud does not ship a native e-signature engine — instead it exposes document generation hooks and status fields that integrate with either Salesforce's own eSign offering or third-party providers such as DocuSign or Adobe Acrobat Sign. Understanding exactly where RC ends and e-signature begins is critical for architects.
What Triggers E-Signature in RC
E-signature is not automatic — it is triggered by a deliberate action on a finalized Quote. The typical sequence before an envelope is ever sent:
Quote status set to Presented or equivalent final status. All line items, pricing, and terms locked.
OmniStudio DocGen or Salesforce Document Builder renders the Quote into a PDF using a template. The output is stored as a ContentDocument linked to the Quote.
A Flow action or Quote document action sends the PDF to the e-sign provider. The provider creates a signing envelope and emails the customer.
Customer opens the email link and signs in the provider's hosted signing UI. No Salesforce login required.
Provider calls back to Salesforce via webhook or polling. Quote status field updated (e.g. Signed). Signed PDF stored as a new ContentDocument.
"Convert to Order" action unlocked (manually or via Flow automation). Quote becomes the source of truth for the Order.
E-Signature Provider Options
- Native — no third-party vendor
- Bundled with certain RC/CLM SKUs
- Basic signing workflow
- Limited template customization
- Covered in detail below
- AppExchange managed package
- Deep Salesforce field mapping
- Rich template + tag engine
- Separate DocuSign license required
- Webhook-based status writeback
- AppExchange managed package
- Strong PDF template control
- Adobe license required
- Less common in pure Salesforce shops
- Webhook or polling writeback
Salesforce Contracts (eSign) — Deep Dive & Limitations
Salesforce's native e-signature offering is bundled with certain Revenue Cloud and Salesforce Contracts (CLM) SKUs. It removes the need for a third-party vendor but comes with meaningful constraints that teams frequently underestimate.
- Zero additional vendor cost if bundled with your RC SKU
- Native Salesforce objects — no data leaves the org for envelope management
- Basic sequential and parallel signing workflows
- Standard signer authentication (email + access code)
- Signed document stored directly in Salesforce Files
- No AppExchange managed package to maintain
- No SMS / phone-based signer authentication
- No in-person signing kiosk mode
- Limited signer UX customization (branding, colors, fonts)
- No bulk send / PowerForms equivalent
- No advanced routing (conditional recipients, role-based routing)
- No built-in ID verification (driver's license, passport scan)
- Audit trail less detailed than DocuSign Certificate of Completion
- Not available as a standalone product — requires CLM or RC license
- Limited AppExchange ecosystem (fewer pre-built connectors)
Only supports email + access code. No SMS OTP, no ID document scan, no knowledge-based authentication (KBA). For regulated industries (financial services, healthcare) this may not meet compliance requirements — DocuSign or Adobe Sign offer those tiers.
Sequential routing is fixed at envelope creation — you cannot branch based on signer responses or conditionally add approvers mid-flow. Complex multi-party deals (customer + legal + finance) may require custom Flow orchestration to compensate.
The signing experience is Salesforce-branded with minimal customization. Enterprises that want fully white-labeled signing pages (logo, colors, domain) will need DocuSign or Adobe Sign. This is often a deal-breaker for enterprise deals where brand consistency matters.
No PowerForms equivalent and no bulk-send capability. Each envelope must be created individually. For high-volume transactional deals (renewals, amendments at scale) this creates operational overhead unless custom automation is built.
The audit trail captures signing events but lacks DocuSign's tamper-evident Certificate of Completion with full IP/timestamp/device chain. For high-value contracts or jurisdictions requiring strong evidence of signing intent, this may require additional legal review.
Not available as a standalone add-on. If the RC or CLM contract changes, eSign access can disappear. Teams that invest heavily in native eSign workflows carry a license-dependency risk that third-party providers (with their own independent contracts) do not.
Status Writeback & Order Automation
The signed status must flow back to the Quote to unlock the "Convert to Order" step. How this works depends on the provider.
| Provider | Writeback Mechanism | Field Updated | Automation Trigger |
|---|---|---|---|
| Salesforce eSign | Native platform event | Quote.Status → Signed |
Record-Triggered Flow on Quote Status change |
| DocuSign | Webhook → Connect → Flow | dsfs__DocuSign_Envelope_Status__c → Completed |
Flow triggered on envelope status field update |
| Adobe Sign | Webhook → Flow | echosign_dev1__Agreement_Status__c → Signed |
Flow triggered on agreement status field update |
Recommended automation pattern:
Use a Record-Triggered Flow on the Quote's status/envelope field. When it transitions to the signed state,
automatically set Quote.Status = 'Accepted' and call the "Activate Quote" action.
This removes the manual "Convert to Order" button click and prevents reps from forgetting to complete the cycle.
Self-service path (Experience Cloud): When the customer signs via a portal, the same writeback occurs — the difference is the signer is already authenticated as a Community user. The envelope is still created server-side via Flow and the signing link is surfaced on the portal page rather than emailed.
CPQ vs. RC — E-Signature Integration Model
| Dimension | CPQ Approach | RC Approach |
|---|---|---|
| Native eSign | None — always required a third-party managed package | Salesforce Contracts (eSign) available natively with CLM/RC SKUs |
| DocuSign integration | DocuSign for Salesforce managed package, direct CPQ Quote action | Same managed package — wired via Quote document action or Flow |
| Document generation | CPQ Quote Templates (HTML-based, limited) | OmniStudio DocGen or Salesforce Document Builder (richer templates) |
| Automation post-sign | CPQ Primary Quote sync + DocuSign webhook → Process Builder/Flow | Record-Triggered Flow on Quote status — cleaner, all declarative |
| Self-service signing | No native self-service — required custom portal work | Experience Cloud portal + Flow surfaces signing link natively |
| Multi-party signing | DocuSign routing only — no native multi-signer support | Same — DocuSign or Adobe Sign for complex routing; eSign for basic |
Key Takeaway — 3.8
- RC does not ship a native e-signature engine — it provides document generation hooks and status fields. The actual signing happens in Salesforce eSign, DocuSign, or Adobe Sign
- Salesforce Contracts (eSign) is viable for straightforward B2B deals — single or sequential signers, standard authentication, no white-labeling requirement. It removes third-party vendor cost and complexity
- Salesforce eSign has hard limits that matter in enterprise deals: no SMS/ID verification, no conditional routing, no bulk send, limited branding, and a thinner audit trail than DocuSign — evaluate these against your compliance and UX requirements before committing
- DocuSign remains the default for complex deals — regulated industries, multi-party routing, high-volume renewals, or any deal where white-labeled signing UX is a requirement
- Automate the post-sign transition — use a Record-Triggered Flow to detect the signed status and activate the Quote automatically. Never rely on a rep to click "Convert to Order" after signing
- Self-service signing via Experience Cloud follows the same writeback model — the only difference is the signing link is surfaced in the portal rather than emailed, and the signer is already authenticated as a Community user
RC 3.9 — Order Generation Deep Dive
An Order in Revenue Cloud is not a manual record — it is a structured conversion of a finalized, accepted Quote. Understanding exactly when the Order is created, what is copied from the Quote, which platform mechanisms fire, and what settings govern the process is essential for any RC implementation.
When Is the Order Generated?
The Order is generated after the Quote reaches an accepted state. In most implementations the e-signature event is the trigger, but it is not the only path. The table below maps the three common triggers to their mechanism:
| Trigger | How It Works | Manual or Automated | Notes |
|---|---|---|---|
| E-Signature (signed) | Provider writeback sets Quote Status → Accepted; Flow calls "Activate Quote" → Order created |
Automated (recommended) | Most common production pattern. Zero rep action required after signing |
| Manual rep action | Rep clicks "Activate Quote" button on the Quote record after verbal or offline approval | Manual | Valid for internal orders, renewals not requiring signature, or pilots |
| Flow / API | Headless: a Flow or API call sets Quote Status + invokes the activateQuote Apex action or Connect API endpoint |
Automated | Used in self-service (B2B Commerce checkout) and integration scenarios |
Key distinction: The e-signature does not directly create the Order. The signing event updates the Quote's status, and it is the Activate Quote action (triggered by that status change) that actually converts the Quote into an Order. E-signature and Order creation are two separate platform steps — decoupling them is what allows manual or API-driven Order creation without requiring a signature.
What Is Copied from Quote to Order?
The Activate Quote action performs a structured field-by-field copy. It is not a free-form process — the platform controls what moves, in what shape, and what is recalculated vs. inherited.
| Quote Field / Object | Order Field / Object | Behavior |
|---|---|---|
Quote.Pricebook2Id |
Order.Pricebook2Id |
Copied directly — must match or conversion fails |
Quote.AccountId |
Order.AccountId |
Copied directly |
Quote.BillingAddress |
Order.BillingAddress |
Copied from Quote; can be overridden post-conversion |
Quote.ShippingAddress |
Order.ShippingAddress |
Copied from Quote |
Quote.OpportunityId |
Order.OpportunityId |
Copied if present; null for standalone Quote-First paths |
Quote.ContractId |
Order.ContractId |
Copied if the Quote is an amendment/renewal tied to a Contract |
QuoteLineItem (each line) |
OrderItem (each line) |
One OrderItem created per QuoteLineItem — see line detail below |
QuoteLineItem.Product2Id |
OrderItem.Product2Id |
Copied directly |
QuoteLineItem.PricebookEntryId |
OrderItem.PricebookEntryId |
Copied directly — must exist in the Order's Price Book |
QuoteLineItem.Quantity |
OrderItem.Quantity |
Copied directly |
QuoteLineItem.UnitPrice |
OrderItem.UnitPrice |
Copied — reflects the negotiated/net price from Pricing Procedure output |
QuoteLineItem.Discount |
OrderItem.Discount |
Copied if field is populated |
QuoteLineItem.StartDate / EndDate |
OrderItem.ServiceDate / EndDate |
Copied — drives billing schedule start/end in Revenue Scheduling |
QuoteLineItem.SBQQ__* (CPQ fields) |
Not copied | CPQ managed-package fields are not part of RC Order conversion |
| Quote Documents (ContentDocument) | Not auto-linked | Files stay on the Quote; must be re-linked via Flow if needed on Order |
RC-Specific Objects Created Alongside the Order
Beyond the standard Order and OrderItem, Revenue Cloud creates
additional objects during activation that feed downstream billing and asset management.
Created (or updated) from each OrderItem that represents a product
configured for asset tracking. AssetLineItem carries the subscription
term, quantity, and pricing that billing reads to generate invoices.
If Revenue Scheduling is enabled, a BillingScheduleGroup and child
BillingSchedule records are created per OrderItem based on the
billing frequency and term defined on the Quote Line.
If Order Management is enabled, a FulfillmentOrder is created to
track physical provisioning or service delivery steps. Not always used in pure
SaaS/subscription RC implementations.
Special Settings That Govern Order Generation
Several org and object settings must be correctly configured before Activate Quote can succeed. Misconfiguring these is the most common source of Order activation failures.
- Orders Enabled — must be toggled on in Setup → Order Settings. Off by default in some orgs
- Order Save Behavior — set to
Always save(notSave only when valid) to allow draft Orders - Revenue Cloud Settings — "Enable Quote-to-Order" must be active in Revenue Cloud Setup
- Asset Tracking Enabled — required if AssetLineItems should be created on activation
- Revenue Scheduling Enabled — required for Billing Schedule auto-creation
- PricebookEntry must exist on every product in the Order's Price Book — missing entries block activation
- Product Type / Revenue Recognition — set on the Product2 record to determine if the line creates an Asset, a one-time charge, or a usage record
- Billing Frequency — set on QuoteLineItem; copied to OrderItem; drives Billing Schedule cadence
- Order record type — must match the Order management flow configured in Revenue Cloud Setup (e.g.
Newvs.Amendment)
- Order OWD — must allow the running user (or automated process user) to create Orders on the Account
- Quote Status field picklist —
Acceptedvalue must exist and be active; custom statuses used as activation triggers must be mapped in RC Settings - Process Automation Settings — ensure "Let Flow run in system context" is enabled if the activation Flow runs as a guest or community user
- Auto-create Contract — optional setting in RC that automatically generates a
Contractrecord from the Order on activation - Contract Start Date logic — driven by
Order.EffectiveDate; must be set before activation or defaults to today - Amendment / Renewal flags —
Order.Typemust be set correctly (New,Amendment,Renewal) as it controls downstream Asset and Contract delta logic
Flows & Platform Logic Executed During Order Activation
"Activate Quote" is not a single action — it fires a chain of platform events and Flows in a defined sequence. Understanding the order matters when debugging activation failures.
Platform checks Quote Status, PricebookEntry existence, required fields on all QuoteLineItems, and product eligibility rules. Any failure here throws an error before anything is written.
Platform creates the Order header record (Status = Draft) and all OrderItem records from the QuoteLineItems in a single transaction.
Any before-save Record-Triggered Flows on Order or OrderItem fire here. Use these for field defaulting and custom validation — they run in the same transaction and can set field values before the record is committed.
Order Status is set to Activated. At this point the Order is immutable — standard Salesforce behavior prevents editing Activated Order fields. RC extends this with Revenue-specific lock logic.
RC platform logic reads each OrderItem and creates or updates Asset and AssetLineItem records. For amendments and renewals, existing Assets are delta-updated rather than replaced.
If Revenue Scheduling is enabled, BillingScheduleGroup and BillingSchedule records are generated. The billing engine reads these to create invoices on the correct cadence.
After-save Record-Triggered Flows on Order fire last. This is the right place for notifications, external system callouts, Opportunity Close/Won updates, and Contract auto-creation if not handled natively.
Common Activation Failures & Root Causes
| Error | Root Cause | Fix |
|---|---|---|
| Missing PricebookEntry | Product exists in Quote's Price Book but not in the Order's Price Book (can differ if manually changed) | Ensure Order inherits Quote's Pricebook2Id; add missing PricebookEntry |
| Invalid Quote Status | Accepted picklist value missing or Quote not in an activatable status |
Add Accepted to Quote Status picklist; verify RC status mapping in Setup |
| Required field missing on OrderItem | Custom required fields on OrderItem not populated during the Quote → Order copy |
Use a before-save Flow on OrderItem to default the required field from the QuoteLineItem |
| Sharing / access error | Automated process user lacks Create on Order or access to the Account | Set Flow to run in System Context; verify OWD and sharing rules for Order |
| Governor limits hit | Large Quotes (100+ lines) trigger SOQL / DML limits in the activation transaction | Use async after-save Flows for heavy post-activation logic; avoid synchronous callouts in before-save |
CPQ vs. RC — Order Generation Model
| Dimension | CPQ Approach | RC Approach |
|---|---|---|
| Activation action | "Submit Order" or "Order" button on CPQ Quote — managed package action | "Activate Quote" — standard platform action, callable from Flow or API |
| Field copy control | Controlled by CPQ Order settings + SBQQ__OrderingPreferences__c |
Controlled by RC platform + before-save Flows on OrderItem for custom fields |
| CPQ managed fields | SBQQ__* fields copied from Quote Line to Order Product |
No SBQQ__* fields — RC uses standard + RC-native fields only |
| Asset creation | Optional — requires CPQ Asset settings; Asset records managed by CPQ | Native — Assets and AssetLineItems auto-created by RC platform on activation |
| Billing schedule | Not native — required CPQ Billing add-on or external system | Native — BillingScheduleGroup auto-created if Revenue Scheduling enabled |
| Amendment / renewal | CPQ amendment process clones the Quote and delta-calculates changes | RC Order Type (Amendment/Renewal) drives delta Asset update natively |
Key Takeaway — 3.9
- The Order is created by the Activate Quote action, not directly by the e-signature event — signing updates the Quote status, and that status change triggers activation. Decoupling them means you can activate without a signature when the business case allows
- The Quote → Order copy is a structured platform operation — header fields, address, Price Book, and all line items move across in a single transaction. CPQ managed-package fields (
SBQQ__*) do not move; RC uses standard and RC-native fields - RC creates Assets, AssetLineItems, and Billing Schedules automatically on activation — these are not optional post-processing steps. They are the foundation of everything billing and contract management does downstream
- Before-save Flows on OrderItem are the right extension point for populating custom required fields during conversion — they run in the same transaction and can read from the source QuoteLineItem via the relationship
- The five most common activation failures are: missing PricebookEntry, invalid Quote Status picklist, missing required OrderItem field, sharing/access error on the process user, and governor limits on large Quotes — all are preventable with correct setup
- Order Type matters — set
New,Amendment, orRenewalcorrectly. RC uses this to determine whether to create a new Asset or delta-update an existing one, which directly impacts billing and contract accuracy