Salesforce CPQ
Salesforce CPQ
Salesforce CPQ
@salesforcedocs
Last updated: September 28, 2023
© Copyright 2000–2023 Salesforce, Inc. All rights reserved. Salesforce is a registered trademark of Salesforce, Inc., as are other
names and marks. Other marks appearing herein may be trademarks of their respective owners.
CONTENTS
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
MANAGE YOUR QUOTES WITH CPQ
1
Manage Your Quotes with CPQ Salesforce CPQ Patch Notes
2
Manage Your Quotes with CPQ Getting Started with Salesforce CPQ
3
Manage Your Quotes with CPQ Salesforce CPQ Installation
4
Manage Your Quotes with CPQ Salesforce CPQ Installation
1. From your installation link, click Continue. Installation links for Salesforce CPQ and other products can be found at Salesforce
Quote-to-Cash.
2. Choose the security level to grant users upon installation, and then click Install (for new installations) or Upgrade.
Your security level varies based on the types of permissions you want to grant to your users. For an overview of basic Salesforce
permissions granted with each level, read the Custom Installation section of the Install a Package topic. If you choose Install for
Specific Profiles, you must also set the Standard User profile to Full Access.
3. If you're installing Salesforce CPQ for the first time, a prompt appears asking you to approve access to third-party websites. Select
the checkbox, and then click Continue.
Salesforce sends you an email after your installation is finished.
4. After installation, if you installed Salesforce CPQ for the first time, authorize the Salesforce CPQ calculator.
a. From Setup, enter Installed Packages, and then click Installed Packages.
b. Find Salesforce CPQ and click Configure.
c. Click the Pricing and Calculation tab.
d. Click Authorize New Calculation Service.
When a user clicks Authorize New Calculation Service, Salesforce CPQ creates a token for the user. Salesforce CPQ uses the token
and user combination to communicate with a Heroku service that manages asynchronous calculations using the Javascript
Quote Calculator. If the calculation service hasn’t been authorized, org admins will see an error during upgrade or installation
of Salesforce CPQ.
Due to this active user requirement, we recommend the user profile that authorizes the calculator is a non-human admin user.
This way, you can avoid required maintenance and downtime if the admin user who authorized the calculator is later deactivated.
The user profile that authorizes the calculator must have access to the CPQ quote and all related objects. They must also have
access to objects updated by triggers, workflow rules, and process builders the quote and its related objects are created or
updated. The user must also have Customize Application permission to access the menu to authorize the calculator.
SEE ALSO:
Assign a Permission Set License to a User
5
Manage Your Quotes with CPQ Get Started with Salesforce CPQ Permissions
3. Add the Document ID field to the Quote Document page layout so that users can view generated quote documents.
4. If your company uses bundle products, add these fields to the product option page layout.
• Product Name
• Product Code
• Description
• Product Configuration Type
• Price Editable
5. If your company plans to use block pricing, cost-markup pricing, or special features, add the relevant price fields to page layouts so
that your sales reps can use them.
6
Manage Your Quotes with CPQ Get Started with Salesforce CPQ Permissions
User For users who use Salesforce CPQ features • Salesforce CPQ User
to deliver services to a customer or end user.
• Salesforce CPQ User Access
Partner For partners who implement Salesforce CPQ • Salesforce CPQ Partner User
as part of their own product offering.
• Salesforce CPQ Partner User Access
Customer For customers and end users who use • Salesforce CPQ Customer User
Salesforce CPQ services.
• Salesforce CPQ Customer User Access
7
Manage Your Quotes with CPQ Salesforce CPQ-Supported Languages
SEE ALSO:
Supported Languages
8
Manage Your Quotes with CPQ Guidelines for Setting Up Salesforce CPQ
Company Logo
Find a company logo that you want to show in your quote document and add it to a folder in your Documents tab in Salesforce.
You can reference these logos by their Document ID in your quote templates.
Discount Schedules
You can create volume discounts based on quantity or terms for your products. When you add those products to your quote,
Salesforce CPQ applies a proportional discount to the net total for that quote line. For example, you could apply a 10% discount to
one through nine products, and a 15% discount to ten through nineteen products.
Multi-Lingual Considerations
Determine the best plan for your non-English speaking users. You can install Salesforce CPQ in a multi-lingual instance, but the
components are available only in English.
Package Settings
Salesforce CPQ package settings let you apply settings across your entire package. Here’s a list of some commonly used package
settings that you may want to modify.
• Allowing partner discounts on quote lines
• Adjusting the number of decimal places in your unit prices.
• Adding storage folders for your quote documents
• Grouping quote line editor search results by shared fields
• Using solution groups to store commonly quoted sets of products in the quote line editor
Basic Page Layout Setup
Add the Quotes related list to your opportunity page layout and the opportunity page layout of any user who will be creating quotes.
Add the Primary Quote field to opportunity page layouts. This field automatically looks up to the primary quote for an opportunity.
If the primary quote changes, Salesforce CPQ updates this field accordingly.
Add the Quote Documents related list to the opportunity page layouts of any user who will send or track quotes.
Products and Price List
Salesforce CPQ uses Salesforce price books. If you’re not already using products and price books in Salesforce, we recommend
creating a spreadsheet of your products and their prices. You can then import it into Salesforce.
If your products include optional features and add-on components, you can configure these products as bundles in Salesforce CPQ.
Bundles include the following objects.
• Options: Products within the bundle that contribute to the bundle price. For example, you could sell a desktop setup bundle
with one option for each component of your bundle: CPU, RAM, motherboard, monitors, and power supplies.
• Features: Features are categories of options. Use these to group options of a similar type together. For example, if your desktop
setup bundle contains five types of motherboards, you could create a motherboard feature.
• Option Constraints: Option constraints control which of a feature’s options may or may not be purchased together. For example,
you could require sales reps to select three out of five possible options within a feature.
Quote Templates
Salesforce CPQ quote templates provide layouts for the quote documents that your sales reps send to customers. You can customize
standard quote details such as your logo, company name, and terms and conditions. You can set a default template for your entire
company and also store other templates for non-standard quote types.
Quote Status
Your company may have custom values in place for tracking a quote through its lifecycle. To align Salesforce CPQ with your quoting
process, we recommend updating the quote’s Status field with your company’s custom status values. By default, CPQ quotes have
the following statuses.
• Draft
9
Manage Your Quotes with CPQ Mapping of Custom Salesforce CPQ Fields Between Objects
• In Review
• Approved
• Denied
• Presented
• Accepted
• Rejected
We recommend using the first four values internally, while you can present the last three to clients on a quote document.
Sandbox
We recommend getting a full Salesforce sandbox org so you can test all your CPQ features without affecting your production data.
You can also use it to provide training demonstrations and user acceptance testing in a safe environment.
General Tips
Salesforce CPQ doesn’t inherit or integrate sales processes that were defined in Salesforce.
SEE ALSO:
Install a Package
• To map one field to another, you need Read access on the source field and Edit access
on the target field.
• Standard fields can’t be mapped between objects.
• Remembering quote line twin field values for bundle parents or standalone products isn’t
supported. However, if twin fields exist between the product and quote line, Salesforce
CPQ copies the Product field value to the quote line when you add the favorite to a quote.
• Custom address fields aren’t supported for twin field mapping.
One-Way Mapping
Objects in Column 1 of this table pass field values to custom fields with matching types and API names from the objects in column 2.
Column 1 Column 2
Contract Opportunities made from amending or renewing the contract
10
Manage Your Quotes with CPQ Mapping of Custom Salesforce CPQ Fields Between Objects
Column 1 Column 2
have been created before a sales rep creates the opportunity’s first
primary quote.
Quote Order
The quote’s Payment Terms field is an editable picklist field, while
the order’s Payment Term field is restricted to a global picklist value
set. If an admin adds a custom picklist value to the quote’s Payment
Term field, and then a sales rep order the quote, Salesforce CPQ
encounters an error.
11
Manage Your Quotes with CPQ Guidelines for Using Salesforce CPQ in Multicurrency Orgs
Column 1 Column 2
Configuration Attributes Quote Line
Configuration attributes always map to the bundle parent’s quote
line. They map to the bundle’s child products only when the
configuration attribute’s Apply to Product Options field is enabled.
Mapping occurs only for quote lines that are product options of
the bundle containing the configuration attribute.
Configuration attribute-to-quote line mapping includes quote line
fields on segmented quote lines.
12
Manage Your Quotes with CPQ CPQ Favorites
Install the OmniStudio managed package to create applications and workflows with data from both Salesforce CPQ+ and external
sources. To help keep your org up to date, choose to receive automatic push updates to the OmniStudio package.
Use these OmniStudio features with your Salesforce CPQ+ license.
OmniScripts
Design flexible, responsive interactions that give constituents a guided path for completing a business process.
Integration Procedures
Read and write data between Salesforce and external systems. Send emails, DocuSign envelopes, perform complex list processing,
and use additional features.
FlexCards
Show contextual information in an at-a-glance format and provide access to relevant tasks to act on the data.
DataRaptors
Read, transform, and write Salesforce data.
SEE ALSO:
OmniStudio Document Generation for Salesforce CPQ
CPQ Favorites
The CPQ favorites object lets sales reps save and share their favorite products, configured bundles,
EDITIONS
or quote line groups for use on future quotes. Salesforce CPQ admins can also manage favorites by
creating, sharing, editing, and deleting the favorite records. Available in: Salesforce CPQ
A favorite represents only a product or configured bundle. It doesn't contain pricing information Winter ’16 and later
from the quote where you created the favorite, such as discounts, markups, quantity changes, or
custom field values.
Note: We don’t recommend allowing sales reps to directly modify the favorites object.
13
Manage Your Quotes with CPQ CPQ Favorites
Note:
• Salesforce CPQ loads all favorite bundles into the quote line editor with a parent quantity of 1, even if the favorite record
showed a different parent quantity.
• Remembering quote line twin field values for bundle parents or standalone products isn’t supported. However, if twin fields
exist between the product and quote line, Salesforce CPQ copies the Product field value to the quote line when you add the
favorite to a quote.
• When you add a favorite quote line group to a quote, Salesforce CPQ adds each of the group’s lines but doesn’t add the group
itself.
• If you save a bundle as a favorite without any of its child products, you can’t edit the favorite. To make a favorite editable, save
at least one child products along with the bundle.
2. Select the favorites that you want to add. You can add up to 10 favorites per each instance of
the Favorite Lookup page.
3. Click Select to return to the quote line editor. You can also click Select & Add More to add more favorites.
Note: If you add a favorite for a quote line group, Salesforce CPQ adds each line from the group, but doesn’t add the group
itself.
14
Manage Your Quotes with CPQ Importing Quote Lines from CSV Files
Note: Favorites are shared with users and groups of Standard user type only. You can’t share favorites with users in groups
with the group member type All Internal Users or Roles and Internal Subordinates.
5. Click a user or group to add it to the list of people you’re sharing with. You can add multiple users or groups to this list.
6. Click Share.
15
Manage Your Quotes with CPQ Importing Quote Lines from CSV Files
c. Enter a column index number. This number determines the order of this import column relative to the import format’s other
columns.
d. Choose a value for the field name picklist.
The Field Name field can contain the API name of any field on the line editor. For ease of reference, we recommend that your
column name and field name have the same value.
e. If this column contains your import format’s unique key value, select the Key field.
• Your key import column can’t be related to formula fields, rules-driven fields, discount fields, quantity, or price.
• If your import format contains several columns with a selected Key field, Salesforce CPQ uses the last key column that you
made.
16
Manage Your Quotes with CPQ Override Default CPQ Custom Labels
Salesforce CPQ shows a list of fields in Required CSV Column Headers. Make sure your CSV file contains column headers with matching
names.
3. If you’ve enabled your quote for grouping, choose an available group from the Quote Line Group. If your quote doesn’t have a group
yet, you can create one by selecting Create New.
You can define only one group per CSV upload.
5. Click Import.
Salesforce CPQ shows error messages for any lines that failed to import or for any products that it couldn’t find in the database. Click
Cancel to close out the error messages and finish importing your products. Salesforce CPQ then returns you to the quote line editor.
17
Manage Your Quotes with CPQ Translating Salesforce CPQ Records
As long as this field set exists, lookup field searches in CPQ Visualforce pages perform a logical OR search against the included field after
searching against the object's Name field. For example, if you add the Industry field to CPQ_Lookup_Search, Salesforce CPQ first checks
your search input against the target record's Name field. If there are no matches, Salesforce CPQ then checks your search input against
the target record’s Industry field. The extra parameter search (on the lookup field) happens on the detailed search or on the details page
and not by default. The default search (inline search) is always only on the Name field.
Salesforce CPQ searches against the more field and displays results even if that field isn't in your object's Search Results layout. You can
add or remove your new search field from the search results as needed.
If CPQ_Lookup_Search contains multiple fields, Salesforce CPQ searches only against the top-positioned field in the set. To add more
search fields or search a non-text field, contact Salesforce CPQ Support.
Note:
– If the org language and PDF document language are the same, Salesforce CPQ doesn’t load translations on the PDF.
– In the quote line editor, segmented line editor fields don’t show overwritten label values from the Translation Workbench.
– If a quote line field exists in multiple field sets under different objects, the translation workbench under both objects must
be saved. For example, if the quote line (QL) field SBQQ__Optional__c is added to the layout via the QL Segmented Line
18
Manage Your Quotes with CPQ Translating Salesforce CPQ Records
Item Drawer field set and the quote line group’s (QLG) Line Editor field set, Salesforce must override the labels for QL and
QLG in the translation workbench.
Note: If the dynamic feature doesn’t have a value specified for SBQQ__DynamicProductLookupFieldSet__c, the package
defaults the Dynamic Option Lookup to the SBQQ__SearchResults field set. In this scenario, to see translated fields, add columns
to the SBQQ__SearchResults field set under the Product field set.
If the dynamic feature has the predefined value of ConfiguratorLookup set for SBQQ__DynamicProductLookupFieldSet__c,
all fields in the Dynamic Option Lookup field set must be included in the Search Results field set under the Product field set
for CPQ translations to work.
Localization Fields
Language
The language code that Salesforce CPQ uses for this translation. When users view a field that you’ve localized into this language,
they see the value that you provided within one of the record’s text fields.
Salesforce CPQ supports translation into all languages that Salesforce core supports. When you provide a value for this field, use one
of the following language codes.
19
Manage Your Quotes with CPQ CPQ for Experience Builder Sites
20
Manage Your Quotes with CPQ CPQ for Experience Builder Sites
We recommend planning and reviewing any fields and actions you wish to hide from your customers. For example, you wouldn’t want
your customers to give themselves an additional discount. Customers may not need access to quote line editor actions that sales reps
use. For example, you may only want your customers to use the add products, calculate, cancel, and save buttons.
In amendment and add-on scenarios, you may want to prevent customers from creating business quotes. Users can accomplish this by
selecting Skip on the Select a Contract page.
21
Manage Your Quotes with CPQ CPQ for Experience Builder Sites
d. Add fields that you want your user to complete before they add new products, then click Save.
2. In the Experience Builder, select Components, select Records, and then select Create a Record and drag it where you want it to
appear for users. For example, you could place it below the Welcome message.
3. Select the Create a Record widget and enter the following information.
• Button Label (Enter a label of your choosing. For example, you could use “Make a Quote.”
• In the Global Actions section, select the global action you made in Step 1.
4. Click Save.
Your users can now enter a New Business flow from your Experience Cloud site’s home page.
Example:
trigger AfterUpdateCreateOppty on SBQQ__Quote__c (after update)
{
for(SBQQ__Quote__c q : trigger.new){
if(q.SBQQ__Status__c == 'Approved' &&
trigger.oldMap.get(q.Id).SBQQ__Status__c != 'Approved'){
Id accountId = [SELECT SBQQ__Account__c FROM
SBQQ__Quote__c WHERE ID=:q.Id].get(0).AccountId;
Opportunity o = new Opportunity(Name=q.Name+'
'+'Opportunity', AccountId= accountID, CloseDate=date.today(),
StageName='Qualification',
SBQQ__QuotePricebookId__c=q.SBQQ__PricebookId__c);
System.debug('My Name' + o);
Database.Insert(o);
q = [ select id from SBQQ__Quote__c where id =
:q.id limit 1];
q.SBQQ__Opportunity2__c = o.Id;
q.SBQQ__Primary__c = True;
q.SBQQ__Account__c = accountID;
Database.Update(q);
22
Manage Your Quotes with CPQ CPQ Object Relationships
}
}
• Product
• Subscription
23
Manage Your Quotes with CPQ CPQ Object Relationships
• Product
• Opportunity
• Price Book
• Quote
• User
• Discount Schedule
• Product
• Original Discount
Schedule
• Price Book
• Product
• Quote
• Quote Line
• Summary Variable
• Product Option
24
Manage Your Quotes with CPQ CPQ Object Relationships
• Favorite Product
• Price Dimension
• Product
• Product Feature
• Product Option
• Quote Template
• Quote Term
• Template Content
• Quote Line
• Opportunity
• User
• Product Option
• Price Book
• Product
25
Manage Your Quotes with CPQ CPQ Object Relationships
• User
• Discount Schedule
• Product
• Discount Schedule
• Discount Schedule
• Product
• Contract
• Opportunity
• Subscription
• Discount Tier
• Block Price
• Cost
• Contracted Price
• Discount Schedule
• Product Option
• Product
• Quote Line
• Solution Group
26
Manage Your Quotes with CPQ CPQ Object Relationships
• Quote Term
• Template Content
• Contract
• Price Dimension
• Product
• Quote Line
• Subscription
• Contact
• Contract
• Opportunity
• Price Book
• Quote
• Quote Template
• User
27
Manage Your Quotes with CPQ CPQ Object and Term Glossary
• Block Price
• Contracted Price
• Cost
• Discount Schedule
• Discount Tier
• Subscription
• Web Quote Line
28
Manage Your Quotes with CPQ CPQ Object and Term Glossary
Guided Selling
Create a set of questions to prompt users to narrow down the number available to select from based on their responses. Users can
quickly find the products they’re looking for even if you have a large catalog. You can also display different prompts for the rep for
different groups of products. This is useful if you have two different product lines on a single quote and you want a different guided
selling process invoked for these product lines based on the quote line group.
Line Column
Record that allows an administrator to define a specific quote line field to be displayed in one or multiple line items template sections.
List Price
Salesforce CPQ handles list prices like Salesforce product pricing on opportunities. Each quote line has a list price that originated in
the price book.
Markup Price
Salesforce CPQ can determine price by the product cost plus a markup amount. The calculated value is stored in the regular price.
Merge Fields
Salesforce CPQ quote Templates allow you to create mail-merge documents that dynamically populate your quote. Merge Fields
allow you to set up placeholders for this data in your template content or dynamic quote terms, and generate a PDF Document
using the layout in your quote Template.
Option Constraints
Constraints placed on products defined in the Options Related List. They control which options may or may not be purchased
together. Option Constraints are used to set up option dependencies and exclusions; they can be applied to real-time rule processing,
which gives immediate feedback to the sales rep.
Partner Discount
If your organization sells through a channel/VARl, you can give a “partner discount” on quote or the individual product line item on
the quote. By default, partner discounts are applied after all automatic and discretionary discounts. Salesforce CPQ applies the partner
discount to the price and stores the result in the Partner Price.
Price Rules
Price rules set individual fields or a combination of fields within the Edit Lines screen. A flexible way of automating price calculations
and updating quote line fields. Set price rules to automatically discount quote line items based on product or quote attributes. You
can set as many conditions as you like and specify whether one or all conditions should be met to trigger the resulting actions. In
this case, each price rule must have at least one condition and one action, allowing you to deliver the desired discount when your
conditions are met. You can also specify the order in which multiple price rules should be evaluated.
Product
Anything that can be identified as an individual line item on the quote. Core product offerings that the customer sells are products.
Ancillary products, options, accessories, add-ons, spares, or other forms of supplementary products are also products. Any product,
component, accessory, or part that could possibly be a quote line or an option in a bundle, needs to be added as a product record
in Salesforce.
Product Configuration Rules
Configuration rules tie a product rule to one or several product bundles.
Product Features
Categories or groups of product options within a bundle. Product options of the same feature may have several constraints, such
as “pick one or more” and “pick 2 of 5.”
Product Options
Components of a bundle that are also products and could contribute to the bundle price. Product options can be associated with
features; how the different components behave in relation to configuration, pricing, and constraints can also be configured.
29
Manage Your Quotes with CPQ CPQ Object and Term Glossary
Product Rules
Checks the quote line items and verifies that there are no invalid product combinations at the line editor level. The number of active
quote product rules affects performance of the Edit Lines screen and should be limited to avoid Salesforce governor limits.
Product Selection Rules
These rules perform an action in a bundle allowing automation of a bundle configuration. They contain a set of conditions and a set
of actions. They can be used to automatically select or deselect product options of a bundle, or enable or disable them, or show or
hide them.
Product Validation Rules
Ensure that the data a user selects meets certain standards. These contain a condition to be met, and an error message; they can be
used to ensure that the configured bundle is valid. Summary variables can be used to see if conditions are met. These rules can
target either quote ines, or product options in a bundle.
Prorated List Price
For subscription products, this is the adjusted price for the total contract value, considering the subscription’s duration. The duration
of the subscription is determined by the subscription term, start date, or end date.
Quote
Stores all the details of the products and prices quoted for an opportunity. Just like opportunities have many product line items,
quotes have many quote line items. An opportunity can have many quotes that you can view from a quotes related list on an
Opportunity page layout.
Quote Line Editor
The Line Editor is where you edit and configure the Line Items that appear in your quote.
Renewals
A process by which subscription products (those with a price per time period) are renewed for another term. The renewals process
automates the creation of opportunities and quotes for subscription products that renew at the end of a contract. Salesforce CPQ
uses Salesforce's standard account-related contracts. A renewal creates assets for each non-renewable quote line item on the account
record based on the value of a picklist field on the product record. It also creates subscription records for each renewable quote line
item on the contract.
Quote Template
A quote template is a combination of predetermined formatting elements for the arrangement of quote data for presentation,
typically in PDF format. Similar to Salesforce email templates, a quote template contains the design, content, and layout of your
generated quote documents. Some content can be dynamic, such as the Expiration Date, while other content can be static, like the
Company Address or Slogan. You can define dynamic content using merge fields as you would elsewhere in Salesforce.
Regular Price
Price of the product after volume and term discounts, after application of a contracted price, or as set in special price.
Special Price
Allows users to change a product's list price. When special pricing is in effect, it overrides the regular price.
Subscription Pricing
This can be based on a fixed price, or a percent of the total, which Salesforce CPQ calculates dynamically. Also, the percent of total
can be based on some quote items using a filter, quote items in a group, or all quote items.
Template Content
An element of the quote template where the content is stored and is used to display the varying portions of the template.
Administrators can create and modify these records using the supplied rich text editor, or by modifying the underlying HTML and
inline CSS directly.
Template Section
This contains the template content you want displayed and where to display it vertically on the quote document. Template sections
represent the structure of the content throughout the quote template.
30
Manage Your Quotes with CPQ CPQ Account Fields
Total Price
Automatically calculated as: unit price * quantity, and prorated as necessary for subscription products.
User Profile
Allows proper permissions and provisioning of Salesforce CPQ licenses to the appropriate users. Not every Salesforce user has to be
a Salesforce CPQ user, but all Salesforce CPQ users must be Salesforce users. They must also have a standard Salesforce user license
and a custom profile. You can determine which Salesforce users get a Salesforce CPQ license by assigning them a Salesforce CPQ
license from the managed package.
Volume Discount
Discount schedules allow you to specify discounts in terms of percentage or amount to be discounted off the product's price using
the quantity purchased or term. You can set the quantity or term ranges in tiers of different discount percentages. This discount is
applied to both the List Price and the resulting discount.
31
Manage Your Quotes with CPQ CPQ Account Fields
Ignore Parent Contracted Prices SBQQ__IgnoreParentContractedPrices__c Checkbox When sales reps create
contracted prices on this
account’s child accounts, the
contracted prices do not inherit
their values from the account
parent.
32
Manage Your Quotes with CPQ CPQ Page Layouts
33
Manage Your Quotes with CPQ CPQ Page Layouts
Description
34
Manage Your Quotes with CPQ CPQ Page Layouts
Column 1 Column 2
Co-Termination Event Combine Co-Termed Contracts
Renewal
Related Lists
The bolded titles represent the related list name, while the entries below represent the fields each related list contains.
Quotes
Quote Number
Net Amount
Status
Contracts
Contract Number
Status
Contract Start Date
Contract End Date
Contract Term
Contracted Prices
Contracted Price Number
Product
Price
Discount
Filter Field
Operator
Filter Value
Non Discountable
Effective Date
Assets
Asset Name
Serial Number
Install Date
Quantity
Contact Name
Status
Competitor Asset
Subscriptions
Subscription Number
35
Manage Your Quotes with CPQ CPQ Page Layouts
Product
Quantity
Start Date
End Date
Renewed Date
Terminated Date
The Asset Detail section is on the Asset page layout by default, but make sure it has the following
fields.
Product Price
Account Quantity
36
Manage Your Quotes with CPQ CPQ Page Layouts
Sections
Table 5: Sales Contract Information
Column 1 Column 2
Liability Cap Renewal Language
37
Manage Your Quotes with CPQ CPQ Page Layouts
Column 1 Column 2
Default Renewal Contact Roles Order
Description
The Opportunity Information section is on the Opportunity layout page by default, but make sure
it contains the following fields.
Type Add On
MRR TCV
Margin (%)
38
Manage Your Quotes with CPQ CPQ Page Layouts
Related Lists
The titles represent the related list names, while the lists represent the fields each related list contains.
Quotes
• Primary
• Quote Number
• Net Amount
• Status
• Created By
• Start Date
Orders
• Order Number
• Status
• Order Start Date
• Contract Number
• Order Amount
Contracts
• Contract Number
• Status
• Account Name
• Contract Start Date
• Contract End Date
• Contract Term (Months)
39
Manage Your Quotes with CPQ CPQ Page Layouts
Quote Documents
• Document Name
Products
• Product
• Quantity
• Sales Price
• Date
• Line Description
• Parent ID
40
Manage Your Quotes with CPQ CPQ Page Layouts
Column 1 Column 2
Configuration Event Configuration Form Title
Related Lists
The bolded titles represent the related list name, while the entries below represent the fields each related list contains.
Features
Feature Name
Min Options
Max Options
Number
Options
Option Name
Feature
Bundled
Selected
Required
Quantity
Type
Option Constraints
Constraint Name
Feature
Target Field
Required
Configuration Attributes
Attribute Name
Feature
Target Field
Required
41
Manage Your Quotes with CPQ CPQ Page Layouts
Configuration Rule
Rule #
Active
Block Price
Price Name
Lower Bound
Upper Bound
Price
Quantity Feature
Selected Bundled
Discount Schedule
Product Description
42
Manage Your Quotes with CPQ CPQ Page Layouts
System
The Asset Detail section is on the Quote page layout by default, but make sure it has the following
fields.
Primary Opportunity
43
Manage Your Quotes with CPQ CPQ Page Layouts
44
Manage Your Quotes with CPQ CPQ Package Settings
Column 1 Column 2
Auto Group Line Items Print Line Item Prices
Introduction Notes
Quote Process ID
45
Manage Your Quotes with CPQ CPQ Package Settings
46
Manage Your Quotes with CPQ CPQ Package Settings
Full Page Preview Preview the quote document in a full window instead of an iFrame.
Hide Document Name Hide the file name on a quote document. This setting is useful if
you want to prevent sales reps from changing the default file name.
Mass Document User Name Click Request Authorization to allow Salesforce CPQ to generate
and send quote documents on your behalf when you're not logged
in to Salesforce. This setting appears only upon the first installation
of Salesforce CPQ and disappears after a user selects it.
Post to Feed? Post quote documents to the Chatter feed associated with the
quote or opportunity attachment target. If you delete the quote
document, the Chatter feed shows that the document is no longer
available.
Object Enter the API name of the object that you want
to use as the basis of your solution group. For
example, if you want to use quote line groups,
enter SBQQ__QuoteLineGroup__c. You
can choose from any Salesforce CPQ object. This
option is available only when solution groups
are enabled.
47
Manage Your Quotes with CPQ CPQ Package Settings
Require Group Name Sales reps are required to edit group names in the quote line editor.
Enable Column Width Resizing Allows column width customization in the quote
line editor.
Enable Compact Mode Removes the empty spaces in the quote line
editor for quote line drawer fields hidden by a
page security plugin.
48
Manage Your Quotes with CPQ CPQ Package Settings
Line Subtotals Total Field Salesforce CPQ summarizes the value of this quote line field across
your quote and shows the result in the quote line editor’s Subtotal
field. Net total is the default value.
The picklist also shows custom currency fields that you add to the
quote line object.
Large Quote Threshold Quotes with line counts above this value send only essential quote
lines, rather than every quote line on the quote during UI calls.
When the threshold is active, Salesforce CPQ also ignores
quote-scoped product rules for that quote.
You can define a threshold to improve quote line editor
performance if you have large quotes. Plan on adjusting your large
quote threshold when you start encountering governor limits. We
recommend that your value is slightly lower than the number of
lines on your quote when you start to hit the limits.
Enable Large Quote Experience Revises the quote line editor layout so sales reps have an easier
time navigating large quotes. The large quote experience includes
a single group view, an individual pricing table view with tabs for
standard and segmented tables, a fixed quote footer, and locked
column headers.
Validate Large Quotes Evaluates validation rules while the large quote threshold is active
and prevents sales reps from performing invalid actions in the
quote line editor.
Actions Column Placement Places the Delete and Edit actions to the left or right of quote lines
in the quote line editor.
Enable Multiline Delete Sales reps can select multiple quote lines and then delete them.
Product Configuration Initializer If your company uses a custom Visualforce page for its configurator,
provide a lookup to the page here.
Enable Asset Upgrades Sales reps can click Upgrade Assets in the quote line editor. Enable
this setting if your org uses Upgrade Products.
Group Subtotals Field Salesforce CPQ summarizes the value of this quote line group field
across your quote and shows the result in the quote line editor’s
Group Total field. Net total is the default value.
This picklist also shows custom currency fields that you add to the
quote line group object.
49
Manage Your Quotes with CPQ CPQ Package Settings
Quote Batch Size Quote load and save actions process this number of quote lines
per batch. The default value is 150. Smaller batches are less likely
to hit governor limits. Larger batches cause better quote line
performance because the editor makes fewer round trips.
Enable Expand/Collapse Bundles Salesforce CPQ can expand or collapse a bundle in Large Quote
Experience only if the Product Name field is part of the quote line
editor field set.
Default Bundle Setting This field appears when Enable Large Quote Experience, Keep
Bundles Together, and Visualize Hierarchy are all set to True.
Default Bundle Setting is set to Expanded, by default. Contact
support to enable the Expand/Collapse Bundle feature. After the
feature is enabled, you can expand and collapse lines in the Quote
Line Editor.
Billing Plug-in Implements plug-ins for Salesforce Billing 1.0. No longer supported.
Recommended Products Plug-in Recommended products plug-ins let you recommend relevant
products based on existing products on quotes.
Document Store Plug-in Document store plug-ins let you integrate Salesforce CPQ with
document-management providers.
Order Management Plug-in Order management plug-ins let you customize how Salesforce
CPQ calculates order start dates.
Electronic Signature Plug-in Electronic signature plug-ins let you integrate Salesforce CPQ with
electronic signature providers.
Product Search Plug-in Product search plug-ins let you modify or add specificity to product
filter searches and guided selling searches.
50
Manage Your Quotes with CPQ CPQ Package Settings
Quote Calculator Plug-in Extend the features of the Salesforce CPQ Quote Calculator by
adding a Javascript quote calculator plug-in.
QLE Custom Action Plug-in A custom action plug-in lets you run code before or after custom
actions in Salesforce CPQ. Custom action plug-ins support only
cloning actions.
Authorize New Calculation Service Enable the Salesforce CPQ Advanced Quote
Calculator. This setting appears only upon the
first installation of Salesforce CPQ and disappears
after a user selects it.
Disable Background Calculation Refresh In Salesforce Classic, the package setting Disable
Background Calculation Refresh affects the
51
Manage Your Quotes with CPQ CPQ Package Settings
Enable Quick Calculate The Quick Calculate feature improves quote calculation time by
disabling the following features.
• Price rules
• Quote line formula fields that depend on parent relationships
• Displaying rollup summary fields in the quote line editor
Unit Price Scale Fractional unit prices round off to this many decimal places.
Use Integration User for Calculations Access the external calculation service with an integration user
and a short-lived access token. The existing refresh token is
removed and the Salesforce CPQ Integration User permission set
is created. The new permission set is then added to the
CPQIntegrationUserPermSetGroup permission set group. Test by
running a calculation from a quote. Verify that you can amend and
renew a contract created from an opportunity. If the process
finishes without errors, you’re using the new access to the
calculation service. If there’s an error, grant the
CPQIntegrationUserPermSetGroup permission set group integration
user access to the custom fields or objects used during quote
calculations. For example, add a permission set to the permission
set group.
Use Legacy Calculator Enable the Salesforce CPQ Legacy Quote Calculator. Salesforce
CPQ no longer offers support for this version of the calculator.
52
Manage Your Quotes with CPQ CPQ Package Settings
Allow Renewal Quotes Without Assets Salesforce CPQ treats non-subscription lines on renewal quotes as
renewed products. This feature prevents add-on opportunities
because all non-subscription lines have prices of zero.
Upgraded assets for renewal quotes aren’t added to the account
after you contract a renewal opportunity.
Subscription Prorate Precision For quote lengths that include partial months, users can prorate
subscription prices by month, day, or month and day.
Contract in Foreground Salesforce CPQ runs the contracting process in the foreground
rather than in the background. This feature can improve
performance but increases the risk of a CPU timeout during
processing.
Enable Evergreen Subscriptions Salesforce CPQ users can create contracts with subscriptions that
don’t have end dates. This open-ended term of service allows
customers or providers to cancel or terminate the subscription at
any point. Evergreen subscriptions let you quote, sell, and manage
subscription products without an end date.
Enable this setting to let users select Evergreen or
Renewable/Evergreen as a product’s subscription type. After
selecting this setting, evergreen subscriptions can’t be disabled.
To prevent users from creating evergreen subscriptions, remove
the Evergreen and Renewable/Evergreen picklist values from the
Subscription Type field.
Use Legacy Amend/Renew Service In Summer ’19 and later, the Large-Scale Amendment and Renewal
Service is enabled by default. The new service offers improved
support of amendment and renewal actions for contracts with
large volumes of related records.
The Large-Scale Amendment and Renewal service has several
minor feature differences compared to the legacy service. See
Salesforce CPQ Large Scale Amendment and Renewal Service. To
revert to the previous service’s functionality, select Use Legacy
Amend/Renew Service.
Disable Product Bundle Sub Type Checks By default, Salesforce CPQ restricts the ability to change the
subscription type for product setup so that bundles aren’t created
with a mix of Evergreen products and Renewable products. This
53
Manage Your Quotes with CPQ CPQ Package Settings
Disable Add Subscriptions Removes the Add Subscriptions button from renewal quotes.
Subscription Term Unit Salesforce CPQ determines subscription length by evaluating this
field with the quote’s subscription term.
Ignore Leap Year Day The subscription package settings page shows Ignore Leap Year
Day only when Subscription Prorate Precision has a value of Day,
or Day with Calendar Month Weighted.
When you use daily subscription proration precision, Salesforce
CPQ evaluates your quote line’s dates to see whether they’re part
of a leap year. If so, CPQ divides the subscription term length by
366 during prorate multiplier calculations on the quote line. CPQ
also uses 366 days when calculating renewal terms for contracts
that fall in a leap year. However, when Ignore Leap Year Day is
active, Salesforce CPQ always uses 365 days for prorate multiplier
and renewal term calculations.
Include Net-New Products in Maintenance Products added to a renewal or amendment are included in the
scope of percent of total products from the original quote.
The product fields Include in Percent of Total and Exclude from
Percent of Total override the effects of this setting. For example, if
this setting is active while a covered product with Exclude from
Percent of Total is added to an amendment quote, Salesforce CPQ
doesn’t include it in percent of total calculations.
Re-Evaluate Bundle Logic on Renewals Renewing a bundle while this setting is active runs all configuration
rules and adds all required products. This setting provides the same
features as a user manually finding the renewal quote, reconfiguring
the bundle, and then saving it.
PoT Renewals(Contracting from Orders) Renew subscribed assets when contracting from orders. The
Percent of Total subscription retains relationships with their covered
54
Manage Your Quotes with CPQ CPQ Package Settings
Bypass Preserve Bundle Structure The Bypass Preserve Bundle Structure setting removes the
requirement to keep the original bundle structure. Your bundle
products become individual quote lines on the amendment quote.
When you enable this setting and deselect the Preserve Bundle
Structure field on the contract, unexpected price changes or
unforeseen product and price rule behavior changes can occur.
Disable Quote Contact Defaulting When sales reps make a quote from an
opportunity, the quote doesn’t inherit its primary
contact from the opportunity. The sales rep or a
Salesforce admin enters the quote’s primary
contact instead.
Allow Option Deletion Sales reps can delete product options from prior
quotes.
Disable Quote Address Defaulting When sales reps make a quote from an
opportunity, the quote doesn’t inherit its address
55
Manage Your Quotes with CPQ CPQ Package Settings
Primary Quote Keeps Opportunity Products When a sales rep deselects the Primary field on a quote, the quote
keeps the opportunity products it inherited when it was made
primary.
Default Quote Validity (Days) The quote’s expiration date equals the quote’s creation date plus
the default quote validity value. For example, if a quote is created
on June 1, 2021, and the default quote validity is 28, the quote’s
expiration date is June 29, 2021. If the default quote validity is null,
the quote’s expiration date is null. The quote’s expiration date has
no default functionality, but it can be used in custom automation.
Create Orders Without Opportunities Allow sales reps to create an order from a CPQ
quote that doesn't have a parent opportunity.
Require Approved Quote Sales reps can’t order a quote until it has a Status
field value of Approved.
56
Manage Your Quotes with CPQ CPQ Package Settings
Hide Features with Hidden Options When a product with Option Selection Method Click has a feature
with only hidden options, remove the warning No visible options
in feature (X).
Multiple Bundles View The configurator has two display options for quotes with multiple
bundles.
• Wizard: Display each bundle separately. Admins can use the
product field Option Layout to customize how sales reps move
between bundle features.
• Classic: Display all bundles on one page, separated with a
Section layout.
OAuth Refresh Token Salesforce CPQ runs Mass Document Generation batch processes
under this user.
Open Search Filter By Default Display the search filter when sales reps open the quote line editor.
Enable this feature if sales reps frequently search your product
catalog.
Product Results Group Field Name When sales reps search for a product in the quote line editor,
Salesforce CPQ groups the results by this field. For example, you
could display search results organized by product family. Guided
selling results don’t display correctly when this setting targets a
custom field.
Product Description Field Choose a product object field to use as the product description.
Salesforce CPQ uses the Product Description field by default. This
field is required if you want to use rich-text product descriptions.
Quantity Scale The scale of quantity fields in custom pages and quote documents.
Sort Products In Memory Sorting products in memory during product search can improve
CPQ page loading speeds for customers with large price books.
We recommend using this setting only if you use large price books
that cause slowdowns when you’re showing and searching
products in CPQ.
Theme Apply this theme to Visualforce pages for all this org’s users.
User-assigned themes override this value.
57
Manage Your Quotes with CPQ Protect Your Data with Salesforce Shield
Event Monitoring
Event Monitoring gives you access to detailed performance, security, and usage data on all your Salesforce apps. Every interaction is
tracked and accessible via the API, so you can view it in the data visualization app of your choice. See who is accessing critical business
data when, and from where they’re getting access. Understand user adoption across your apps. Troubleshoot and optimize performance
to improve end-user experience. Event Monitoring data can be easily imported into any data visualization or application monitoring
tool like CRM Analytics, Splunk, or New Relic. To get started, check out our Event Monitoring Trailhead module.
SEE ALSO:
Strengthen Your Data's Security with Shield Platform Encryption
Quotes
• Selecting primary contacts on quotes doesn’t auto-populate the phone, fax, or email field of the contacts under quote details on
the quote record home page.
• Creating quote documents isn’t supported. You generate quote documents in the desktop app first. Your documents then show in
the Quote Documents related list on the corresponding quote.
• The Clone with Related action lets you preview the related items, but the page isn’t formatted for the mobile experience.
• To view a new quote after creating it, tap the quote from the opportunity’s Quotes related list or the quote’s list view.
58
Manage Your Quotes with CPQ CPQ Products
Orders
• To create an order, use the opportunity or quote’s Ordered checkbox.
• Orders can be contracted in the Salesforce mobile app.
SEE ALSO:
Knowledge article: Enable Salesforce CPQ for the Salesforce App on Mobile Devices
Knowledge article: Salesforce CPQ Mobile Limitations and Usability Differences
CPQ Products
Products are items that users can add to a quote.
EDITIONS
Create individual product records manually or perform a bulk upload of product data from an
external source. Available in: All CPQ Editions
59
Manage Your Quotes with CPQ Types of Products
Types of Products
Configure your products to match your pricing and selling needs.
Product Pricing Methods
Apply various discounts or markups to customize pricing on your products.
Summary Variables
Summarize number field information about products into a single object called a summary variable. You can reference a summary
variable in price conditions, price actions, product rule error conditions, quote term conditions, and other summary variables.
CPQ Product Fields
Salesforce CPQ provides custom-managed fields for products.
Types of Products
Configure your products to match your pricing and selling needs.
EDITIONS
Product Bundles
A bundle is a product with optional features or components that you want to include on a single
EDITIONS
quote line.
A bundle product contains several records. Available in: All CPQ Editions
• A bundle parent: The parent product is the bundle itself.
60
Manage Your Quotes with CPQ Types of Products
• Options: These products in the bundle contribute to the bundle price. You can consider these children of the bundle parent. An
option doesn’t contribute to the bundle price if you select its Bundled checkbox.
• Features: A feature is a group of options. You can use the Min Options and Max Options fields to define selection restrictions for
objects in the same feature, such as “pick one or more” or “pick 3 of 5.”
• Option constraints: Use constraints to control how users select options together.
• Configuration attribute: A field and picklist shown above or below the list of product options. This field targets all options containing
the same field and applies its value to all those fields.
First, choose a product to represent your parent, and at least one product to represent a bundle option. After you create your options,
features, and constraints, associate them to the parent via related lists on the parent product record.
Note: Bundles can't contain both products with a subscription type of Evergreen and products with a subscription type of
Renewable. Products with a subscription type of Evergreen/Renewable can't be bundled.
Example: Your company sells an IT Professional Pack containing a customizable laptop and related hardware. You structure the
IT Professional Pack bundle this way.
Parent: IT Professional Pack
• Feature: Computers
– Option: Business Laptop
– Option: Laser Printer
• Feature: Peripherals
– Option: US Keyboard
– Option: UK Keyboard
– Option: Mouse
– Option: HDMI Display
• Feature: Printing
– Option: Toner Cartridge
– Option: Maintenance Kit
– Option: Letter Paper
– Option: A4 Paper
• Feature: Networking
– Option: Wireless Router
– Option: Wireless Access Point
– Option: Wireless Installation
Create a Bundle
Configure a bundle product using a combination of options and features.
Add Bundle-Specific Field Sets
Create field sets that display for only products in certain bundle products or product features.
Feature Guidelines
A feature is a group of product options within a bundle. Use features if you want to organize options into set groups, such as hardware
and software.
61
Manage Your Quotes with CPQ Types of Products
Product Options
Product options are individual products that users can select from when configuring a bundle.
Constraint Guidelines
Enable or disable a product option for selection relative to another product option.
Configuration Attribute Guidelines
Use configuration attributes to set the value of multiple shared product option fields simultaneously.
Guidelines and Considerations for Using Nested Bundles
A nested bundle lets users select from a subset of options within a single product option.
Unique Quote Line Codes Based on Bundle Configuration
When your sales rep quotes a bundle product, Salesforce CPQ can assign that bundle’s quote line a unique package product code
based on its configuration. You can define a template for the package product code that contains a combination of static text and
variables. Your sales reps can then use each package product code as a SKU to quickly send configured bundle data to their orders
team.
Show Bundle Components on the Quote Line
The quote line’s Package Product Description field shows a list of selected product options and user-defined static text. Sales reps
can use it to quickly reference the configuration of a quoted bundle product.
Create a Bundle
Configure a bundle product using a combination of options and features.
EDITIONS
1. Create or select a product to serve as your bundle parent.
Available in: All CPQ Editions
2. Create the features you need from your parent product’s related list.
Remember that the feature’s Configured SKU field automatically looks up to your bundle parent
if you created the feature in the parent’s Features related list.
3. Create the product options you need from your parent product’s Options related list. Find your option’s Optional SKU field and give
it a lookup to the product that you want to serve as the option.
4. If you want a product option to be grouped under feature, populate that option’s Feature lookup field.
If you created your option off a bundle parent, the Feature lookup search results display all the parent’s features.
5. Create option constraints from your parent product’s Option Constraint related list if needed.
3. Add the API names of your new field sets as values in your product’s Configuration Field Set field.
4. Find the bundle parent product that you want to contain your custom field set.
5. Change the product’s configuration field set to one of the field sets you created in Step 2.
62
Manage Your Quotes with CPQ Types of Products
Feature Guidelines
A feature is a group of product options within a bundle. Use features if you want to organize options
EDITIONS
into set groups, such as hardware and software.
Review the following fields when creating a bundle feature. Available in: All CPQ Editions
Category
Assign a feature to a category if you want to group multiple features together under a single
tab within the configurator.
Configured SKU
(Required) SKU Number of the bundle that includes this feature. This field populates automatically if you created this feature from
the bundle product's detail page.
Discount Schedule
Lookup to a Discount Schedule that applies to all this feature's options. This value overrides any discount schedule defined on the
product option's product record. However, it doesn't override a discount schedule on the product option record.
Dynamic Option Lookup Field Set
This field set lets you define fields that you can filter by in a dynamic feature and lets you define columns that return in the dynamic
product lookup.
The fields specified on this field set are available in the product selection page after you click Add Options under the dynamic
feature. Define the field set specified in the Dynamic Option Lookup field set on the Product2 object, with the field set API name as
the value.
Fields in this field set don’t filter unless they’re in the field set. These fields must exist as product field sets, not product option field
sets.
Feature Name
(Required) Provide a meaningful name for your feature
Max Options
Set the maximum number of options for this feature that can be selected as part of the product bundle
Number
(Required) Determine how this feature is ordered relative to other features in the parent product record's related list
Option Selection Method
Choose the way users can add products or options to the feature.
• Click: Checkboxes appear next to each option
• Add: Options don’t appear in the feature until the user selects Add Options and selects from available options on the Option
Lookup.
• Dynamic: Users can add products from a separate page.
Important: When you’re using features with the option selection method set to Dynamic, selected products aren’t considered
product options by product or price rules, unless the Dynamic feature is the child of a product option.
(Required) Min Options
Set the minimum number of options for this feature that must be part of the product bundle
63
Manage Your Quotes with CPQ Types of Products
Product Options
Product options are individual products that users can select from when configuring a bundle.
EDITIONS
64
Manage Your Quotes with CPQ Types of Products
component description represents how this product option appears in the package product description. We recommend making it the
same as your product option’s Configured SKU. The package product description shows component descriptions if the component
description position matches a value in the configured description pattern.
Configured SKU
A lookup to the product that includes this option. This field is completed automatically if you created this feature from the bundle
product’s detail page.
Default Pricing Table
Determines whether quote lines for MDQ product options appear in the quote line editor’s Standard or Segmented pricing table.
Discount (%)
A percentage discount that applies to your configured SKU only when it’s part of a bundle.
Discount (Amt)
An amount-based discount that applies to your configured SKU only when it’s part of a bundle.
Discounted By Package
If the bundle parent has a percentage-based Additional Discount, Salesforce CPQ also applies it to quote lines generated from this
product option.
Discount Schedule
Applies this discount schedule to quote lines generated from this product option. The discount schedule overrides discount schedules
on the product or feature related to this product option. This field is useful when you have a product sold standalone or as part of a
bundle and want unique discount schedules for each type of sale.
Existing Quantity
The total quantity of assets related to this product option.
Feature
The feature that includes this option. This process depends on the configured SKU.
Max Quantity
The maximum quantity that this product is allowed within its parent bundle.
Min Quantity
The minimum quantity that this product is allowed within its parent bundle.
Number
Determines how this product option is ordered relative to other product options in the parent product record’s related list.
Optional SKU
A lookup to the product that this option represents.
Percent of Total Scope
Selects the bundle parts covered by a Percent of Total product option.
• Package: Your percent of total product covers only the bundle parent.
• Components: Covers only other product options on the same level.
• Both: Covers the bundle parent, and other product options on the same level.
• Hierarchy: Covers the entire bundle configuration, including all parent and child bundles.
Quantity
65
Manage Your Quotes with CPQ Types of Products
The default quantity for this product option when a sales rep adds it to the quote. If this field is empty, sales reps can edit the product
option’s quantity.
Quantity Editable
Allows sales reps to edit this product option’s quantity in the quote line editor if it already has a value in the Quantity field.
Quote Line Visibility
Hides this product option’s quote lines in quote documents, the quote line editor, or both. When this field’s value is Never or Document
Only, quote lines created from the product option are numbered starting at 3000.
Renewal Product Option
When a sales rep renews a bundle containing the current product option, Salesforce CPQ replaces it with the product option record
defined in this field.
Required
Make this product required on the bundle.
Selected
Select this product option as part of the bundle by default.
System
Sales reps can’t select or deselect this product option manually in the configurator. Only Salesforce CPQ system features and processes,
such as product rules or process builders can change its selected status.
If a product feature’s Option Selection Method is set to Add, and either Selected or Required (or both) is selected, a product option
where System is selected is added as an option and is available to be added again on the Add Options page in case the user wants to
add more.
Type
Choose one of the following:
• Component: Salesforce CPQ multiplies this option's quantity by the quantity of the bundle parent. For example, a sales rep configures
a server bundle product and adds a hard drive product option with a quantity of two. When they change the server bundle parent's
quantity to two in the quote line editor, the child hard drive quote line changes its quantity to four.
Note: If this option is a percent of total (POT) subscription product, Salesforce doesn’t multiply the option's quantity by the
quantity of the bundle parent. The quantity of POT subscription products is always the default quantity or the quantity set
during configuration.
• Accessory: The option depends on the parent, but the quantity is independent. For example, when a user enters a quantity for the
product option, it remains the same even if the quantity of the bundle changes.
• Related Product: The option is an independent product that can also be related to a bundle. Useful for cross-selling or upselling
product options that users can add to the bundle while controlling the option’s quantity independently. Related Product options
can’t be required.
Warning: If a required or bundled product option has a Type field of Related Product, Salesforce CPQ treats the product
option like it’s a component. Its quantity is multiplied by the parent product’s quantity, and its quantity isn’teditable in the
quote line editor.
• None: The option acts like a component when it’s part of a feature. If it’s not part of a feature, its quantity is independent and it’s not
required on the bundle.
Unit Price
Overrides the price book’s price value for this product option.
66
Manage Your Quotes with CPQ Types of Products
Uplifted By Package
If this product option has a configured SKU with price dimensions, the resulting quote line inherits the Uplift or Uplift (Amt) value from
the bundle parent’s quote line.
System Fields
Product options inherit the following fields from their optional SKUs. Salesforce CPQ uses them for reference and users can’t change
them.
• Product Code
• Product Configuration Type
• Product Description
• Product Family
• Product Name
• Product Quantity Scale
• Product Subscription Pricing
• Price Editable
SEE ALSO:
Unique Quote Line Codes Based on Bundle Configuration
Show Bundle Components on the Quote Line
– Next, you reconfigure the bundle and select options B and D. The configured bundle now lists the options in the following order.
1. A
2. C
3. B
4. D
• The unit price on the product option is given to the quote line, regardless of the quote’s currency. For example, you have a quote
in USD and a quote in GBP. If you have a product option with a unit price of 10,000 and bring that product option into both quotes,
the related quote lines have values of 10,000 in their respective currencies.
• Product options with a Type field value of Related Product can’t have their Bundled field or their Required field selected.
67
Manage Your Quotes with CPQ Types of Products
Warning: If a required or bundled product option has a Type field of Related Product, Salesforce CPQ treats the product
option like it’s a component. Its quantity is multiplied by the parent product’s quantity, and its quantity isn’t editable in the
quote line editor.
• When you’re using a renewal product option, both the original product option and the renewal must have the same values for the
Type field.
• If you want to let sales reps upsell a product option, enable its Quantity Editable field and set its type to Related Product. This setup
allows sales reps to edit these types of product options in both the configurator and the quote line editor - make sure you consider
this when setting up quantity-based validation rules.
• Because the Bundled field sets a product option’s price to zero, sales reps can’t apply a discount to it.
• Renewed product options with Discounted By Package selected don’t inherit discounts from their parent product.
• The Discounted By Package field supports only percentage-based discounts from the parent product. When you renew a quote
where the Renewal Pricing Method field is set to Same, Salesforce CPQ adjusts prices where needed by applying amount-based
discounts. Because of this process, renewed product options with Discounted By Package selected don’t inherit discounts from their
parent product. If you want your renewed product option to inherit its parent’s discount, try using a price rule to apply the discount
from the parent.
• When a product has Quantity Editable selected, and its related product option has a type of Related Product and Quantity Editable
deselected, the resulting quote line has an editable quantity in the quote line editor but not in the configurator.
• When component-type quote lines are ordered, you must order the parent product.
• JSAR doesn’t support bundles where the parent is designated as optional.
Global Attributes
Create a set of configuration attributes so that users can quickly assign the attributes to any number
EDITIONS
of product options. Each configuration attribute set is shown in a collapsible drawer below each
product option in the configurator. This feature reduces the time spent creating product options Available in: Salesforce CPQ
if your options share some of the same attributes. Winter ’18 and later
When you create a configuration attribute record, you can choose whether its record type is
Configuration Attribute or Global Attribute. Choosing Global Attribute lets you create the record
without assigning it to bundle product. That way, you can use the attribute across several different bundles, or for only certain product
options in one bundle. A global attribute needs only a name and a target product option field.
Global attributes use the following objects.
Global Attribute
A configuration attribute that you can assign to any product option. You can enable global attributes in your Salesforce CPQ package
settings. Once enabled, when you create a configuration attribute, Salesforce CPQ lets you choose whether its record type is a
configuration attribute or a global attribute.
Since global attributes aren’t tied to a single bundle, you only have to define their name and target field. You’ll use attribute sets
and product attribute sets to associate them your product options.
Attribute Set
An attribute set groups several global attributes together in the form of attribute items. After you create your global attributes, you
create an attribute set and then create one attribute item in the set for each global attribute.
Attribute Item
An attribute item represents a global attribute that you want to assign to an attribute set. Create attribute items from their related
list in the attribute set.
68
Manage Your Quotes with CPQ Types of Products
Example: Let’s review how we could use global attributes with a CPU cooling bundle containing product options for a small
cooling system, a medium cooling system, and a large cooling system.
• We created global attributes for Shipping Priority, Shipping Method, Service Level, and Service Hours.
• We created one attribute set for shipping options and one attribute set for service options. We used two sets in case we have
future product options where we want to assign only shipping options or only service options.
• The Service Options set contains two attribute items — one for service level and one for service hours. The Shipping Options
set contains two attribute items as well — one for shipping method and one for shipping priority.
• Each attribute set contains three product attribute sets — one for each type of cooling system.
When we configure the CPU cooling bundle, Salesforce CPQ shows each global attribute as a picklist on each product option.
Since each product option has its own product attribute set, you can adjust the attributes independently for each option. Click
the arrow icon next to each product option to expand or collapse its global attributes.
69
Manage Your Quotes with CPQ Types of Products
70
Manage Your Quotes with CPQ Types of Products
Because you enabled global attributes, Salesforce CPQ shows the Select Configuration Attribute Record Type page.
b. Choose Global Attributes for the record type, and then click Continue.
c. Give the attribute a name and target field, and then click Save.
d. Click Save. Repeat as needed for the other configuration attributes that you want included in the attribute set.
Product option drawers are visible only when the option selection method has a value of Click.
Constraint Guidelines
Enable or disable a product option for selection relative to another product option.
EDITIONS
You may find it useful to show a product option in your bundle but prevent your sales rep from
choosing it until they’ve selected another option. This way, they don’t sell it to a customer without Available in: All CPQ Editions
71
Manage Your Quotes with CPQ Types of Products
the original option that makes use of it. Once Salesforce CPQ enables the option for selection, your rep can choose whether to select it
based on the customer’s needs. You can also disable one option from selection relative to another option. For example, sales reps could
not select American power cables in a bundle as long as they’ve selected hardware that requires European power cables.
The option constraint object lets you set up these restrictions. Create option constraints from the Option Constraints related list on your
bundle parent product record.
In bundles with an Option Selection Method of Add, option constraints don't work inside Option Lookup.
When using option constraint groups, if values are separated by commas without spaces between each value, Salesforce CPQ connects
each value using an OR operator. If values are separated by commas with spaces, Salesforce CPQ connects each value using an AND
operator.
• Value1,Value2,Value3 = Value1 OR Value2 OR Value3
• Value1, Value2, Value3 = Value1 AND Value2 AND Value3
Review the following fields when using option constraints.
Check Prior Purchases
By default, Salesforce CPQ evaluates constraining options only on the quote you’re editing. When you select this field, Salesforce
CPQ also evaluates previously purchased units of the constraining option on the quote’s parent account. These units must be assets,
or subscriptions in active contracts.
Constrained Option
Lookup to the option that Salesforce CPQ enables or disables.
Constraining Option
Lookup to the option that determines whether Salesforce CPQ enables or disables the Constrained Option.
Configured SKU
(Required) SKU number of the bundle that includes this option. This field is completed automatically if you created this feature from
the bundle product’s detail page.
Option Constraint Group
Use this field if you have multiple constraints targeting a constrained option and want to require the selection of all their constraining
options. In this case, Salesforce CPQ selects the constraining options of all constraint records where the Option Constraining Group
has the same value. This feature is useful if you want to require or exclude options based on combinations of other options. The
value can be any text string, but we recommend making it descriptive and easy to remember.
Type
Choose the behavior for this constraint.
• Dependency: Selecting the Constraining Option causes Salesforce CPQ to enable the Constrained Option for selection
• Exclusion: Users can’t select the Constrained Option if they’ve selected the Constraining Option.
Example: You sell software licenses and offer an software bundle that contains your licenses and several options for each license.
You want the configurator to enable a user training class option for selection when a sales rep chooses the data security license
option. This way, your sales rep can present training as an option, but doesn’t have to select it if the customer has already used
the software.
Go to your bundle parent and create an option constraint with the following fields.
• Constraint Name: Training Class for Data Security Software
• Type: Dependency
• Constrained Option: Lookup to your user training class product option record
• Constraining Option: Lookup to your data security license product option record
72
Manage Your Quotes with CPQ Types of Products
Example: Let’s look at using multiple constraints and option constraint groups. You sell a bundle for custom performance
desktops. You want the configurator to enable a water cooler for selection when you select a video card or when you select a large
case. Create your option constraints as follows.
• Constraint Name: Video Card Selection
• Type: Dependency
• Constrained Option: Lookup to your water cooler product option
• Constraining Option: Lookup to your video card product option
• Constraint Name: Large Case Selection
• Type: Dependency
• Constrained Option: Lookup to your water cooler product option
• Constraining Option: Lookup to your large case product option
If you want the configurator to enable a water cooler only when both the video card and large case are selected, give both your
option constraints the same option constraint group value. For example, you could use “water cooler.”
73
Manage Your Quotes with CPQ Types of Products
Row Order
If your bundle contains multiple configuration attributes, Salesforce CPQ can use this field’s value to determine their order. Attributes
with higher Row Order values are shown first. If you don’t give this field a value, Salesforce CPQ order configuration attributes
alphabetically.
Target Field
Lookup to the field that you want to change. This can be any field from any of your bundle’s product options.
You can have up to three configuration attributes in a row.
A configuration attribute:
• Applies its value to your bundle’s fields even if those values aren’t shown in your line editor field set.
• Inherits the type of the field it targets. For example, if you target a picklist, the configuration attribute appears as a picklist with all
the targeted field’s values.
When you set a configuration attribute’s value, Salesforce CPQ applies it across all matching fields in your bundle. Salesforce CPQ then
considers all configurator-scoped product rules and price rules with parameters that match the changed values.
Example: You want your IT Professional Pack bundle product to show configuration attributes for Location (a custom field), Unit
Price, and Discount (%). Users don’t need to enter a value for Unit Price. Create three configuration attributes on your bundle’s
record and give them the following values.
Configuration Attribute
• Target Field: Location__c
• Required: Selected
• Row Order: 10
• Column Order: 1
• Position: Top
Configuration Attribute
• Target Field: Unit Price
• Required: Not selected
• Row Order: 20
• Column Order: 2
• Position: Top
Configuration Attribute
• Target Field: Discount (%)
• Required: Selected
• Row Order: 30
• Column Order: 3
74
Manage Your Quotes with CPQ Types of Products
• Position: Top
Example: Your top-level product in a bundle is a customizable laptop, where the first level of options lets you select the brand
of hard drive for the laptop. Create two sets of features on each hard drive brand so you can set the brand’s memory size and
warranty after a user selects it in the laptop bundle. These hard drive sizes and warranties represent the second level of options in
your bundle.
Important: Make sure that your configured code pattern doesn’t contain a bracketed value for a bundle without a matching
product option to fill that position. In this case, the package product code displays the brackets and original enclosed value without
replacing anything.
Example: Your company sells laptops that have a basic chassis and configurable components, such as memory and hard drives.
These laptops appear as bundle products in your catalog. To sell a laptop, the company’s fulfillment team first configures it based
on customer request. A sales rep then records that request by configuring the bundle product within Salesforce CPQ. Since the
75
Manage Your Quotes with CPQ Types of Products
sales rep may have hundreds of configurable laptops in a single business order, they want to avoid sending a full order form for
each configuration.
Let’s look at how you can set up this bundle’s package product code so that your sales reps can send it as a SKU. You can make a
package product code that’s easy to understand by giving the component code a similar name to the option’s Optional SKU. We
also recommend giving your component code positions the same value as the Number field on that option’s parent feature. This
way, if you list your component code positions in ascending order within the configured code pattern, they appear in the same
order that they’re listed within the configurator.
Put LC-001 at the beginning of the configured code pattern so that it appears on every configured quote line made from this
bundle. Next, list your three different component code position values bracketed and in ascending order. We’ll separate each
component code position with a dash so that the package product code is easier to read. So, your final configured code pattern
should be LC-001-{10}-{20}-{30}.
Let’s see what kind of package product codes your sales rep would get from different configurations.
i3 processor, 1-TB hard drive, 8-GB of RAM
Package Product Code: LC-001-i3-1TB-8GB
i7 processor, 4-TB hard drive, 16-GB of RAM
Package Product Code: LC-001-i7-4TB-16GB
SEE ALSO:
Product Option Fields
76
Manage Your Quotes with CPQ Types of Products
The configured description pattern field contains a text editor. You can add extra markup to the pattern like bulleted lists, formatting,
and images.
4. Repeat steps 1 through 4 for the other product options in your bundle.
5. Return to your parent bundle product and edit its configured description pattern.
The configured description pattern can be a combination of static text and bracketed tags.
Example: Your bundle contains four product features, and sales reps have to select one product option from each feature. You
can make a straightforward package product description by giving each component description position a value equal to the
order of the option’s parent feature. Then, enter the following in your bundle product’s configured description pattern.
This laptop bundle contains the following components.
• {1}
• {2}
• {3}
• {4}
Important: Package product descriptions are used only for configurations of the bundle product record where they were defined.
You can’t use them with product options created through a dynamic bundle feature.
SEE ALSO:
Product Option Fields
MDQ Products
You can show a fixed-price subscription product in the quote line editor as one quote line broken
EDITIONS
into segments. Each segment represents a unit of time (quarter, month, year, or custom) and has
pricing and a quantity independent of the line’s other segments. We call these products Available in: Salesforce CPQ
multi-dimensional quoting (MDQ) products. They’re useful if you want your sales reps to have Spring ’15 and later
detailed control over pricing specific units of time within one subscription.
Here’s a simple example of an MDQ product for a 12-month, $4,000 subscription quoted for four
years.
77
Manage Your Quotes with CPQ Types of Products
Segments are repeated over the quote’s term. In this case, our product has a subscription term of 12 months with yearly segments. So,
Salesforce CPQ creates one segment for each year of the quote’s four-year term. Thus we have four segments with an initial price of
$4,000 each. Each segment can be discounted or marked up independently of other segments, so we’ve also given a 10% discount to
the first segment.
Define segments on an MDQ product by creating a price dimension from your subscription product’s Price Dimensions related list. The
price dimension also lets you control whether sales reps can edit the cost, quantity, or discounts of segments or whether the segments
inherit editability of these fields from their parent product record.
Quote lines for MDQ products appear by default in the Segmented Products table, while other quote lines in the Standard Products
table. Sales reps can hide an MDQ line’s segments and move it to the standard table by clicking the segmentation icon . Clicking the
segmentation icon again moves the MDQ line back to the Segmented products table and shows its segments. The product field Default
Pricing Table field also lets you control whether an MDQ product’s quote line appears in the segmented or standard table when added
to a quote.
Fixed-length MDQ products must use a subscription term that matches their dimension type. For example, a quarterly MDQ product
must use a subscription term of 3, and a yearly MDQ product must use a subscription term of 12.
Tip: To add a one-time charge, such as an installation fee, create a price dimension with a Type value of One-Time. Then, set its
unit price to your desired value. The unit price overrides the product’s Price Book value. The one-time fee appears to the left of
your segmented values in the line editor.
Example: Your company sells generators and provides an installation service for $1,000 and an ongoing manual subscription
service for $500. You can use MDQ pricing to create a subscription product that handles the one-time fee and the subscription
service. For example, you can set up the Generator Service product as follows.
1. Create a product to represent the subscription.
• Subscription Pricing: Fixed Price
• Subscription Term: 12
• List Unit Price: $500
2. Create a price dimension to represent the subscription service. From your Generator Service product, go to the Price Dimensions
related list and click New. Give your price dimension the following values.
• Dimension Name: Yearly Service
• Type: Year
78
Manage Your Quotes with CPQ Types of Products
SEE ALSO:
Differences Between the Legacy and Large-Scale Amendment and Renewal Services
SEE ALSO:
Amending MDQ Products
Amending MDQ Products
79
Manage Your Quotes with CPQ Types of Products
the price is prorated to match the 3-month term. You could also move the prorated three-month term appearing in Year 4 to the
first price dimension by adjusting the quote’s First Segment Term End Date field. This field lets you ensure the last segment reflects
the price of an entire year. Since all renewal terms are based on the last segment, this process lets you avoid undesirable renewal
terms.
• You can place MDQ products in different quote line groups, even groups with different subscription terms.
• If you drag an MDQ product quote line, Salesforce CPQ moves all its segments, too.
• On MDQ products, either apply a price uplift to the quote line or edit a segment’s list price. If you do both, the uplift isn’t applied
correctly.
• For quoted MDQ products, if the last segment’s end date (or the quote’s end date) is the last day of daylight savings time, Salesforce
CPQ creates an extra pricing segment with a net total of zero.
• The quote field First Segment Term End Date isn’t supported in add-on quotes and amendment quotes that contain a combination
of non-custom MDQ price dimension types.
• MDQ segments with zero quantity don't create an order product, and prevents the order from being activated.
Note: Suppose that you de-segment a product option and then resegment it. The first year’s segment applies the product option
unit price. However, the remaining segments apply the price book price. To apply the unit price to the remaining segments,
navigate to the parent bundle, click Reconfigure, and save. (Product option unit price is dependent on the SBQQ__Bundle__c
field set to True. Clicking Reconfigure sets SBQQ__Bundle__c to True.) All segments then apply the product option unit
price.
For example, you have an MDQ quote line with five yearly segments. Each year’s net total is $1200, and the line's subtotal is $6000. The
Percent of Total line that covers the MDQ line has a Percent of Total (%) value of 10. To calculate the Percent of Total line's net total,
Salesforce CPQ uses ($6000 * 10%) * 5 = $3000.
If the MDQ line is unsegmented, Salesforce CPQ doesn't include the number of segments in the calculations. In this example, the Percent
of Total line net total is $600.
80
Manage Your Quotes with CPQ Types of Products
• When you contract the opportunity or order from that quote, Salesforce CPQ creates three subscriptions.
Important: If you amend a contract that includes an MDQ product and you renew after the first term segment has completed,
the segment information for that first term will be blank in the Quote Line Editor. To update the missing information, you must
select View/Edit on the Quote Line Detail page.
81
Manage Your Quotes with CPQ Types of Products
Make a Standard Template for MDQ Products Available in: Salesforce CPQ
Create a quote template that separates line items by segment dimensions. For example, a Winter ’16 and later
template containing several yearly MDQ products would show “Year 1” price dimensions in
one group, even for different products. Non-segmented products appear at the end of the
document. This layout is the default appearance for MDQ products in quote templates.
Organize MDQ Products by Template Columns
Show price dimensions organized by template columns within your org’s quote documents.
82
Manage Your Quotes with CPQ Types of Products
e. Click Save.
f. If your quote document also contains non-segmented products, repeat steps A through F but choose Standard for your table
style.
8. From your quote template, create line column records for each of the price dimension fields that you want your quote document
for display. For example, you could create line columns for quantity, uplift, and net price.
In order for your quote document to format properly, the first line column must always be Product Name.
Click Save.
You can also create a quote template that displays price dimensions as summary rows. In this case, repeat the above steps 1 through 9,
but use a table style of Price Dimensions as Rows With Summary for the template content that contains your MDQ products. This template
also filters out non-MDQ products, so you’ll still need to make another template content record if you have any standard products.
Product Configuration
83
Manage Your Quotes with CPQ Types of Products
Subscription Products
Subscription products are services that run for a set period, such as a year-long support service.
EDITIONS
Salesforce CPQ automates pricing, prorating, and coterminating subscriptions on contracts and
renewals. Available in: All CPQ Editions
Subscription products have two pricing types, controlled by the Subscription Pricing field.
• Fixed Price: This product gets its list price from a price book entry.
• Percent of Total: This product’s list price is a percentage of the quote, quote line group, or a bundle’s total price.
The product's Subscription Type field lets you control how Salesforce CPQ handles renewals for your subscription product.
• Renewable: Salesforce CPQ includes this subscription in renewal quotes.
• One-Time: Salesforce CPQ won't include this subscription in renewal quotes.
• Evergreen: This subscription remains active until canceled and can't be renewed.
• Evergreen/Renewable: Users can define whether this subscription is renewable or evergreen on individual quote lines in the quote
line editor. The subscription records created from the quote line inherit the quote line's subscription type.
Salesforce CPQ determines the length of a subscription by considering the value of the package setting Subscription Term Unit alongside
a subscription product’s Subscription Term. For example, you can set a yearly subscription by setting Subscription Term Unit to Month
and your product’s Subscription Term to 12. You can also set Subscription Term Unit to Day and your product’s Subscription Term to
365.
Salesforce CPQ prorates subscription products against a quote’s Subscription Term. For example, a 12-month subscription has its final
price halved on a 6-month quote.
Subscription Terms
A product’s subscription term is the default amount of time that a subscription lasts. The CPQ package setting Subscription Term
Unit controls whether the term is in months or days, and defaults to months.
Percent of Total Pricing
Set a product’s list price as a percentage of its parent quote, quote line group, or bundle total price. This feature is useful if you want
to scale a product’s price relative to another group of products or the quote itself.
Evergreen Subscriptions
Salesforce CPQ users can create contracts with subscriptions that don't have any end dates and, therefore, don't need to be renewed.
This supports an open-ended term of service that allows for customers or providers to cancel or terminate the subscription at any
point. Evergreen subscriptions provide the ability to quote, sell, and manage subscriptions products without an end date.
84
Manage Your Quotes with CPQ Types of Products
Subscription Terms
A product’s subscription term is the default amount of time that a subscription lasts. The CPQ package setting Subscription Term Unit
controls whether the term is in months or days, and defaults to months.
When a sales rep adds the product to a quote, the resulting quote line’s Default Subscription Term field inherits the value of the product’s
subscription term. The default subscription term is an easy way to quickly see the parent product’s subscription term. Users can’t change
it.
The quote line’s Effective Subscription Term field shows the quote line’s actual term length for use in proration. The value of this field
varies based on whether you define a subscription term on your quote, quote line, or a quote line group.
• By default, the quote line’s effective subscription term inherits the product’s subscription term.
• If the quote line has a Subscription Term value, the effective subscription term inherits it. (1)
• If the quote line’s subscription term is null and the quote line is part of a quote line group, the effective subscription term inherits
the group’s subscription term. (2)
• If the quote line’s subscription term is null and the quote line isn’t part of a quote line group, the effective subscription term inherits
the quote’s subscription term. (3)
85
Manage Your Quotes with CPQ Types of Products
• If the quote line and quote’s subscription terms are null and the quote line isn’t part of a group, the effective subscription term
inherits the quote line’s default subscription term. (4)
When a quote line’s Effective Subscription Term field is different from its Default Subscription term field, Salesforce CPQ adjusts subscription
quote line pricing to reflect the correct subscription term. The prorated price appears in the Prorated List Price field.
SEE ALSO:
CPQ Subscription Fields
Important: Subscription Percent of Total products must have pricing methods set only to List. They don’t work with pricing
methods set to Percent of Total.
Products contain several other fields that let you customize the percent of total price calculation process, but you need only these fields
for a basic setup.
Percent of Total Base
Define whether your Percent of Total product calculates its price based on the list price, net price, customer price, or regular price
of its covered products. If you don’t choose a value, calculations default to the list price.
Percent of Total (%)
A Percent of Total product’s price is this percentage of the combined price of its covered products. Salesforce CPQ uses this product’s
percent of total base to determine the price field (such as list price, net price, or customer price) used in this calculation.
With this setup, a percent of total product covers all non-subscription products on the quote. So let’s say your percent of total base
targets list price, your percent of total (%) is 40, and your quote contains three non-subscription products with a combined list price of
$5000. In this case, your percent of total product would have a price of $2000.
If your percent of total product is a bundle component and you want to base its price on the bundle’s net total, find the related product
option record and set its Percent of Total Scope field. You can set this field so your percent of total product calculates based on the net
total of the bundle parent, the bundle components, or the parent and components together. Salesforce CPQ then uses the rest of your
percent of total fields to calculate the price of the percent of total product.
If you amend an order and add a percent of total product as a net new order item, then the price includes the entire order item quantity,
not just the changed quantity.
By default, percent of total products don’t cover fixed-price subscription products. You can include a fixed-price subscription product
by selecting its Include in Percent of Total field.
Note: Percent of total products can’t cover other percent of total products. Salesforce CPQ doesn’t create subscriptions for
contracted Percent of Total order products without any covered assets or subscriptions.
86
Manage Your Quotes with CPQ Types of Products
Subscribed Assets
When you contract a percent of total subscription product, Salesforce CPQ creates a subscribed asset record for each of the product’s
covered assets. When you renew your percent of total subscription product, Salesforce CPQ pulls all its covered assets into the renewal
quote. Subscribed asset quote lines keep the same prices as their original quote lines, except for a net total of zero. This way, your percent
of total subscription maintains its price on the renewal quote while the covered one-time products from the original quote don’t add
to the renewal quote’s total.
Example: Your business offers an SLA maintenance package for generator installations. The package has a list price of $20,000.
You want your maintenance package to set its price based on 15% of the net total of all generators included on the quote. Configure
your maintenance package with these field values.
• Product Name: SLA Silver
• Subscription Pricing: Percent of Total
• Percent of Total Base: List
• Percent of Total (%): 15
If the generators on your quote have a combined total price of $195,000, your maintenance package ends up with a total price of
$29,250 after you add it to your quote.
87
Manage Your Quotes with CPQ Types of Products
88
Manage Your Quotes with CPQ Types of Products
Components
Covers only other options on the same level
Both
Covers the bundle parent, and other options on the same level.
Hierarchy
Covers the entire bundle configuration, including all parent and child bundles.
1. From your bundle product, create a new product option record.
2. Set your product option’s Configured SKU field to your Percent of Total product record.
3. Provide a value for the product option’s Percent of Total Scope field.
Example: Your company sells an appliance bundle with child bundles for gold support and silver support respectively. Each child
bundle contains a mix of hardware and software product options, as well as a hardware warranty Percent of Total product and a
software warranty Percent of Total product. Each type of warranty covers only the same type of product options within the bundle.
You can set up this bundle by using Percent of Total products as product options alongside the Percent of Total Category field.
1. Create all your warranty products and set their Subscription Pricing fields to Percent of Total.
2. Add the gold warranties as product options in your gold bundle, and the silver warranties as product options in your silver
bundle.
3. Set the Percent of Total Scope field on all your warranties to Components.
4. Add Hardware and Software values to the Percent of Total Category field on your product object.
5. Set the Percent of Total Category field on all your hardware products, including the warranties, to Hardware.
6. Set the Percent of Total Category field on all your software products, including the warranties, to Software.
Subscription Percent of Total products require a Subscription Type field of Percent of Total, and
Pricing Method field of List. One-time Percent of Total products require a Pricing Method field of
Percent of Total.
89
Manage Your Quotes with CPQ Types of Products
The prorate multiplier on the subscription for Percent of Total products is always 1.
Discounts
Non-Discountable Field
Salesforce CPQ doesn’t apply discounts derived from the quote’s Target Customer Amount field onto Percent of Total products that
have the Non-Discountable field selected.
Percent of Total Products with Contracted Percent Discount
When you add to a quote a Percent of Total product with a contracted percentage discount, Salesforce CPQ stores the discount
value on the quote line’s Special Price field.
Further Customization
You can use a few more fields to further customize your Percent of Total products.
Use of the Percent of Total Constraint Field
Percent of Total Constraint changes your Percent of Total product’s price to its original list price when its Percent of Total calculation
creates a price above or below that original list price. This feature is useful if you don’t want your Percent of Total product to fall
outside its list price in nonstandard settings. For example, you have one quote where a customer orders many products that are
used as the Percent of Total target.
Including and Excluding Subscriptions
Salesforce CPQ considers all non-subscription products and excludes all subscription products when calculating a Percent of Total
product that looks up to the entire quote. You can select Exclude From Percent of Total to exclude a non-subscription product
from all Percent of Total calculations. And you can select Include In Percent of Total to include a subscription product in all Percent
of Total calculations.
90
Manage Your Quotes with CPQ Types of Products
Note: When a quote that contains a Percent of Total product is ordered using the Ordered checkbox, the estimated tax calculation
is omitted on the order product. Activation doesn’t fix the issue. The Tax Calculation Status is never set to Queued for Percent of
Total products.
As a workaround, set Tax Status to Queued on the unactivated order product when it’s null. You can automate by using a platform
event. The platform event that updates the Tax Status to Queued must also update another field on the order product at the same
time to trigger the update. The Notes field is one example.
Evergreen Subscriptions
Salesforce CPQ users can create contracts with subscriptions that don't have any end dates and,
EDITIONS
therefore, don't need to be renewed. This supports an open-ended term of service that allows for
customers or providers to cancel or terminate the subscription at any point. Evergreen subscriptions Available in: Salesforce CPQ
provide the ability to quote, sell, and manage subscriptions products without an end date. Winter ‘19 and later
91
Manage Your Quotes with CPQ Types of Products
2. In Subscriptions and Renewals package settings, set or confirm your subscription term unit.
You can use subscription term units of days or months. However, daily subscription term units aren’t supported in Salesforce Billing.
Salesforce CPQ automatically sets subscription terms to 1 on evergreen quote lines. This way, the quote line represents a daily or
monthly unit price for your evergreen subscription.
3. Add the following picklist values to the product’s Subscription Type field.
• Evergreen
• Renewable/Evergreen
4. Add the Subscription Type field to the quote line’s Line Editor field set.
When a product has a Renewable/Evergreen subscription type, sales reps can change the Subscription Type field between Renewable
and Evergreen in the quote line editor.
92
Manage Your Quotes with CPQ Types of Products
• If the Subscription Type field is set to Renewable/Evergreen, sales reps have to enter the default subscription term when switching
from Evergreen to Renewable on the quote line.
As a best practice, we recommend creating an order from the quote and creating the contract from
the order. Make sure your quote’s Contracting Method field is set to By Subscription End Date.
If your product’s subscription type is Evergreen, then the only available option on the quote line’s subscription type is Evergreen.
To add your evergreen products to the quote lines, select the products and set the Subscription Type picklist values to Evergreen
or Renewable depending on the product’s subscription type.
If the Default Subscription Type field on Quote Line is Renewable/Evergreen from the Product2 record, the Subscription Type field on
Quote Line defaults to Evergreen. If a sales rep changes the Subscription Type field from Evergreen to Renewable, they have to enter
the appropriate subscription term. Otherwise it defaults to 1.
Note:
• Users can set the subscription term to null so it inherits the value from the quote. This action forces the effective subscription
term to recalculate.
• If your product’s subscription type is Renewable/Evergreen, the quote line’s subscription type defaults to Evergreen. If it is
changed to Renewable, the Subscription Term must also be set to null or to the actual subscription length for the quote line
to recalculate correctly. (If Subscription Term or End Date are in the Quote Line Editor field set, the calculation happens correctly,
and switching from Renewable to Evergreen works as expected.)
• If the product’s Subscription Type field is left null and Subscription Pricing is populated, the product behaves as if it were a
renewable subscription.
Example: Your company offers two different types of gym memberships. The first membership is an evergreen subscription that
renews on a month-to-month basis. Customers sign up once and continue their memberships indefinitely or until one side cancels
the service. The second membership is a renewable/evergreen subscription, which is set up during quoting as a renewable
93
Manage Your Quotes with CPQ Types of Products
subscription. Customers agree to pay for a one year membership upfront and decide at the end of the year whether they want to
continue their one year membership (renewable) or switch to a month-to-month membership (evergreen).
Renewable Renewable
Renewable/Evergreen Renewable
Evergreen
Evergreen Evergreen
94
Manage Your Quotes with CPQ Types of Products
SEE ALSO:
Ordering Consumption Schedules with Evergreen Subscriptions
Usage-Based Products
Usage-Based Products
Quote and price your products based on predefined rates for future consumption of the product
EDITIONS
or service you’re selling. The price scales alongside usage, reducing initial purchase barriers and
driving higher revenue. You can configure your units of usage and setup different pricing rates Available in: Salesforce CPQ
based on usage volume. Spring ’19 and later
Salesforce CPQ and Salesforce Billing let you manage usage-based products with either consumption
schedules or price schedules. For more information on managing usage with price schedules, check
out Rating Usage with Price Schedules.
A product requires several field values to work with a consumption schedule. Several CPQ fields are required by default, and several
Billing fields are also needed if you plan to invoice usage based on your consumption schedule in Salesforce Billing. The Billing fields are
available only if you have the Salesforce Billing packaged installed.
CPQ Fields
• Subscription Pricing: Fixed Price
• Charge Type: Recurring
95
Manage Your Quotes with CPQ Types of Products
96
Manage Your Quotes with CPQ Types of Products
SEE ALSO:
Rating Usage Summaries With a Consumption Schedule
Invoicing Usage Summaries with Consumption Schedules
Guidelines for Evergreen Subscriptions
Example:
• Rate 1: 1–251 units at $0.50 per unit
• Rate 2: 251–501 units at $0.40 per unit
• Rate 3: 501–750 units at $0.30 per unit
SEE ALSO:
Rating Usage Summaries With a Consumption Schedule
Invoicing Usage Summaries with Consumption Schedules
97
Manage Your Quotes with CPQ Types of Products
Important: For changes to order product consumption rates and subscription consumption rates, you must use a custom action
plugin. For existing quote line consumption rates, you can make inline edits or use a custom action plugin. Be aware that custom
script changes do override any manual edits.
98
Manage Your Quotes with CPQ Types of Products
Note: Consumption schedules, consumption rates, and product consumption schedules are Salesforce objects. Quote line
consumption schedules, order product consumption schedules, and subscription consumption schedules are Salesforce CPQ
objects.
SEE ALSO:
Rating Usage Summaries With a Consumption Schedule
Invoicing Usage Summaries with Consumption Schedules
You can also associate one consumption schedule with several products. This structure is useful when you have different products that
still have the same usage pricing system.
99
Manage Your Quotes with CPQ Types of Products
When you quote, order, or contract this usage product, the resulting record receives one new consumption schedule for each consumption
schedule on the original product. For example, let's say a sales rep quoted the phone plan. Salesforce CPQ creates quote line consumption
schedules from the original consumption schedule and associates them both with the resulting quote line. You can access them from
your quote line's Quote Line Consumption Schedule related list.
2. Make sure that users who need consumption schedules have Create, Read, Edit, and Delete permissions for the following objects.
• Consumption Schedule
• Contract Line Item Consumption Schedule (Service Cloud for Salesforce CPQ only)
100
Manage Your Quotes with CPQ Types of Products
• Contract Line Item Consumption Rate (Service Cloud for Salesforce CPQ only)
• Localizations (if your org uses CPQ translations)
• Order Product Consumption Schedule
• Order Product Consumption Rate
• Quote Line Consumption Schedule
• Quote Line Consumption Rate
• Subscription Consumption Schedule (Not needed for Service Cloud for Salesforce CPQ)
• Subscription Consumption Rate (Not needed for Service Cloud for Salesforce CPQ)
101
Manage Your Quotes with CPQ Types of Products
a. From your consumption schedule, go to the Product Consumption Schedules list and click New.
b. In the product field, provide a lookup to the product that you want this consumption schedule to cover.
c. You can also link a consumption schedule by going to your usage product’s Product Consumption Schedule related list, clicking
New, and providing a lookup to an active consumption schedule.
• To use products with consumption schedules in Salesforce CPQ and Salesforce Billing, make
sure both packages are on the same major release version, such as Summer ‘19.
• Quote lines with consumption schedules can have a quantity of only one. When amending or renewing, you can change the quantity
from one to only zero.
• Products with consumption schedules don't support renewal pricing.
• You can use the product consumption schedule object to associate multiple consumption schedules to the same product. However,
each of these consumption schedules must have unique units of measure and matching attributes.
• Consumption rate billing terms must be greater than or equal to one month.
• Consumption rate billing terms must be less than or equal five years or 60 months.
• Usage processing orders can be negative.
• All of a schedule's consumption rates must have unique usage processing orders.
• As of Salesforce CPQ Spring ‘20, if your org is set to allow inline edits, the upper bound, lower bound, and price fields can be edited
in the quote line editor.
102
Manage Your Quotes with CPQ Types of Products
Since the plans share usage pricing for minutes and texting, we can create two consumption schedules and use the product consumption
schedule to assign them both to the phone dataplan and simcard dataplan. However, since the plans have different data usage rates,
they each require their own data consumption schedule.
Consumption Schedule: Phone Data Usage
Unit of Measure: MB
Rating Method: Tier
Type: Slab
Consumption Rate 1
• Processing Order: 1
• Pricing Method: Flat Fee
• Lower Bound: 0
• Upper Bound: 500
• Price: $0
Consumption Rate 2
• Processing Order: 2
• Pricing Method: Per Unit
• Lower Bound: 501
• Upper Bound: Null
• Price: $1
Product Consumption Schedule
• Product: Phone Dataplan
Consumption Schedule: Simcard Data Usage
Unit of Measure: MB
Rating Method: Tier
Type: Slab
Consumption Rate 1
103
Manage Your Quotes with CPQ Types of Products
• Processing Order: 1
• Pricing Method: Flat Fee
• Lower Bound: 0
• Upper Bound: 200
• Price: $0
Consumption Rate 2
• Processing Order: 2
• Pricing Method: Per Unit
• Lower Bound: 201
• Upper Bound: Null
• Price: $0.50
Product Consumption Schedule
• Product: Simcard Dataplan
Consumption Schedule: Minutes
Unit of Measure: Minutes
Rating Method: Tier
Type: Slab
Consumption Rate 1
• Processing Order: 1
• Pricing Method: Flat Fee
• Lower Bound: 0
• Upper Bound: 200
• Price: $0
Consumption Rate 2
• Processing Order: 2
• Pricing Method: Per Unit
• Lower Bound: 201
• Upper Bound: Null
• Price: $0.50
Product Consumption Schedule 1
• Product: Phone Dataplan
Product Consumption Schedule 2
• Product: Simcard Dataplan
Consumption Schedule: Messaging
Unit of Measure: Messages
Rating Method: Tier
Type: Slab
Consumption Rate 1
• Processing Order: 1
104
Manage Your Quotes with CPQ Types of Products
Premium Package $5000 / month 2000 hours free, then $0.40 / 1600 hours free, then $0.30 /
hour hour
105
Manage Your Quotes with CPQ Types of Products
Consumption Rate 1
• Lower Bound: 1
• Upper Bound: 1000
• Price: $0
• Pricing Method: Flat Fee
• Processing Order: 1
Consumption Rate 2
• Lower Bound: 1001
• Upper Bound: Null
• Pricing Method: Per Unit
• Processing Order: 2
• Price: $0.50
Product Consumption Schedule:
• Product: Management Plan - Economy
Consumption Schedule: HD Audio Processing: Economy
Unit of Measure: Hour
Rating Method: Tier
Type: Slab
Consumption Rate 1
• Processing Order: 1
• Pricing Method: Flat Fee
• Lower Bound: 0
• Upper Bound: 800
• Price: $0
Consumption Rate 2
• Processing Order: 2
• Pricing Method: Per Unit
• Lower Bound: 801
• Upper Bound: Null
• Price: $0.40
Product Consumption Schedule
• Product: Management Plan - Economy
Consumption Schedule: SD Audio Processing - Premium
Unit of Measure: Hour
Rating Method: Tier
Type: Slab
Consumption Rate 1
• Lower Bound: 1
106
Manage Your Quotes with CPQ Types of Products
To review a quote line’s consumption schedule, find the line in the quote line editor and click . Available in: Salesforce CPQ
Salesforce shows a page with the details of the related consumption schedule and its rates. For Spring ’19 and later
each rate, you can move your cursor over the related consumption schedule’s name to show
additional information about the consumption schedule.
107
Manage Your Quotes with CPQ Types of Products
As of Salesforce CPQ Spring ‘20, if your org is set to allow inline edits, the upper bound, lower bound, and price fields can be edited in
the quote line editor.
When you click on a quote line with a related consumption schedule, Salesforce CPQ shows a Available in: Salesforce CPQ
Visualforce page with that consumption schedule’s important fields. You can view more fields by Spring ’19 and later
moving your cursor over the consumption schedule’s name in each row of consumption rates.
1. From Setup, in the Quick Find box, enter Consumption Schedules, and then click Field Sets.
2. Find the Compact Layout field set and click Edit.
3. Add and remove your fields as needed.
108
Manage Your Quotes with CPQ Types of Products
Important: A quote line for a product with a consumption schedule can’t have a quantity greater than one.
When you order your amended quote, Salesforce Billing performs the following actions based on the type of amendment you performed.
• If you replaced an order product for a new one, Salesforce Billing creates usage summaries for your remaining billing periods on the
new order product. The matching IDs for these usage summaries must equal the matching ID on your replacement order product's
order product consumption schedule. We recommend managing this process with automation such as a process builder.
• If you canceled your original order product, Salesforce Billing doesn't create more usage summaries for it.
109
Manage Your Quotes with CPQ Types of Products
Example: You sell a business security monitoring and response system. One of your customers has an order for the system that
runs for 01/31/18 through 12/31/18, billed quarterly. The system's order product has an order product consumption schedule
with a one-quarter billing term. This setup creates an order product with four usage summaries.
Your customer amends their contract on 09/15 and replaces the original system with a different version. After ordering your
amendment quote, Salesforce CPQ updates the original order product's third and fourth usage summaries. The third usage summary
changes its start and end date to match the partial period. Both usage summaries get a value for their Override Status fields; the
third summary's stays open while the fourth summary's is closed.
Salesforce CPQ then creates two more usage summaries for your new order product. The first new usage summary represents the
period from the amendment through the end of the quarter. The second new usage summary represents the fourth quarter. As
long as your usage and usage summaries have the proper matching values with the new consumption schedule, you can continue
uploading and rating usage for your new system's order product.
110
Manage Your Quotes with CPQ Types of Products
Last Modified Date LastModifiedDate Date/Time The date and time the
rate was last edited.
111
Manage Your Quotes with CPQ Types of Products
SEE ALSO:
Custom Script Fields
Billing Term Unit BillingTermUnit Picklist The unit used with the
billing term to
determine billing
frequency
112
Manage Your Quotes with CPQ Types of Products
Last Modified By LastModifiedById Lookup(User) The user who last edited the
consumption schedule
Last Modified Date LastModifiedDate Date/Time The date and time the schedule
was last edited
Rating Method Rating Method Picklist A specific use case to rate usage
against the schedule. The
controlling picklist for the Type
field
113
Manage Your Quotes with CPQ Product Pricing Methods
SEE ALSO:
Custom Script Fields
114
Manage Your Quotes with CPQ Product Pricing Methods
115
Manage Your Quotes with CPQ Product Pricing Methods
Volume Discount Schedules The volume discounts set on the quote line.
116
Manage Your Quotes with CPQ Product Pricing Methods
Partner Unit Price The partner price is the customer unit price
with a partner discount applied.
Net Unit Price The net price is the unit price after all
discounts are applied.
Example: Your company rents computer monitors at a list unit price of $120 per month. You have an agreement with PartnersRUs,
at a contracted price of $100/month per unit. PartnersRUs wants to purchase a 12-month subscription and to negotiate a discounted
price.
PartnersRUs wants to buy 100 new monitors. Your system admin configured a discount schedule with a 10% discount for purchasing
more than 99 monitors.
117
Manage Your Quotes with CPQ Product Pricing Methods
While PartnersRUs is happy with the bulk discount, they reveal that your competitor’s price is still much lower. So, you offer
PartnersRUs an extra 10% discount and the 5% partner discount.
PartnersRUs isn’t a distributor, so you can’t add distributor discounts to their quote. The full calculation for the net total is shown
in this chart.
118
Manage Your Quotes with CPQ Product Pricing Methods
SEE ALSO:
Contracted Pricing
Block Pricing
You can price a product based on several different quantity ranges, called block prices. When a
EDITIONS
sales rep adds that product to a quote, Salesforce CPQ checks where it falls in the quantity ranges
and prices the quote line accordingly. Available in: All CPQ Editions
Block pricing is useful when you sell products by packs or groups of various quantities and want to
represent the pack as a single quote line. For example, a pack of 1–10 units costs $10, while a pack
of 11–20 units costs $18. Sales reps can also use decreasing per-unit costs toward the end of each range as a selling incentive.
When a sales rep searches for a block-priced product, Salesforce CPQ shows its standard price on the Add Products page. However,
when they add it to a quote, Salesforce CPQ evaluates its quantity and uses the appropriate block price for the quote line’s list unit price.
They can then apply discounts as needed. Salesforce CPQ also sets the quote line’s effective quantity to 1. When the sales rep syncs the
quote with an opportunity, the resulting opportunity product has a quantity of 1.
Important:
• Up to 50 block-pricing tiers are supported.
• Block pricing isn’t compatible with an asset conversion of One per Unit.
• Amending a product with a custom block price quantity isn’t supported.
To set up block pricing, set your product’s pricing method to Block. Then click New Block Price in your product’s Block Prices related
list and create one block price record for each quantity range. Block prices use the following important fields.
Lower Bound
The lowest quantity for this quantity range.
Upper Bound
The highest quantity for this quantity range. This value isn’t inclusive—for example, a block price range of one through five requires
an upper bound of six.
A block price’s upper bound and the next block price’s lower bound must be the same.
If this price is the last of a product’s block prices and its upper bound is blank, Salesforce CPQ treats the upper bound as infinite.
119
Manage Your Quotes with CPQ Product Pricing Methods
Price
The price for this quantity range.
Note:
• The snapshot information fields on a block price are no longer supported.
• Sales reps with read-only access to block price and its fields can create block prices by cloning an existing record. To prevent
them from creating or modifying block prices, remove the Clone button from the page layout or remove the sales rep's user
access to the EditBlockPrices custom page.
• When multiple currencies are activated, block price products must have a Block Price record for each currency. If a Block Price
record doesn’t exist for the quote’s currency, the block price product isn’t available in product selection and configuration.
In a block price product’s Block Price related list, click Edit All. Add values for the newly added currencies and save your changes.
A Block Price record now exists for each currency value in the Block Price related list.
• For block pricing, the upper bound and lower bound lengths and decimals places are (12,0). However, for the Quote Line
Quantity field (SBQQ__Quantity__c), the decimal places are (10,2). An error occurs when the customer inputs a quantity in
the billions: “Quantity: value outside of valid range on numeric field: 1.0E10.”
SEE ALSO:
Knowledge article: Updates to CPQ Discount Schedules and Block Price Tiers Can Modify Saved Quotes
Cost-and-Markup Pricing
Set a price based on its cost plus a markup amount, rather than list price and discount.
EDITIONS
Cost pricing is useful in these scenarios.
Available in: All CPQ Editions
• You’re selling to a partner. In this case, the customer is buying at a cost from you, applying a
markup and then upselling to a distributor.
• You’re selling a commodity with a variable price. In this case, you probably want to charge a predetermined cost and set a static
markup. That way, you’re charging a certain value regardless of variations in your product’s list price.
To set up cost pricing on a product, set its Pricing Method field to Cost. You can then add cost values by currency in the Costs related
list.
Important:
• Salesforce CPQ can’t evaluate more than 50,000 cost records at a time.
• Salesforce CPQ ignores the Special Price field for cost-priced products.
Batch Pricing
Price component and accessory bundle product options by static amounts based on quantity
EDITIONS
ranges.
If you have the Batch Quantity field in your product page layout, you can set batch pricing in your Available in: All CPQ Editions
product’s Batch Quantity field. Then change it anytime as needed.
When a sales rep configures a batch-priced product option, they can adjust its quantity. Salesforce
CPQ divides the product option's quantity by its batch quantity and uses that value for the resulting quote line's quantity. For example,
a $500 App License product option has a batch quantity of 4, and your sales rep enters a quantity of 8 for that product option in the
120
Manage Your Quotes with CPQ Product Pricing Methods
configurator. The resulting quote line has a quantity of 2 and a net total of $1000. If the division makes a fractional number, Salesforce
CPQ uses the next-highest whole number for the quote line's quantity.
Sales reps can also edit a batch-priced quote line's batch quantity in the quote line editor. Salesforce CPQ will recalculate the quote line's
quantity and net total based on the new batch quantity. If we changed the batch quantity for our App License to 2, the quote line's
quantity updates to 4 and its net total changes to $2000.
Changes to the bundle parent's quantity don't affect the batch quantity of child product options.
Note: Batch pricing is available only for product options. If you apply batch pricing to a product and set that product as a standalone
product or bundle parent, Salesforce CPQ ignores its batch price values in the quote line editor.
Example: Your Batch Quantity field is 32, and your product option’s price is $10, so an order of 98 products costs $40. A quantity
range moves to the next pricing level at one product over the maximum amount of the current level. In this case:
• 1–32 items: $10
• 33–64 items: $20
• 65–96 items: $30
• 97–128 items: $40
• And so on
Contracted Pricing
When sales reps create a contract, they can use quote line prices from their original quote on future
EDITIONS
quotes within that contract’s account. This process, known as contracted pricing, is useful when
your sales reps have negotiated a price for a product and want to continue using that price after Available in: Salesforce CPQ
making a contract. Salesforce CPQ uses the negotiated price on new quotes, renewal quotes, and Spring ’16 and later
amendment quotes.
Let’s say that a sales rep negotiates a price of $3000 for a laptop with an original price of $4000.
The $3000 price appears as the quote line’s net unit price after the rep has applied the discounts. When they contract that quote’s order
or opportunity, if contracted pricing is enabled, future quotes for the account show the laptop’s price before discounts as $3000.
Salesforce CPQ applies contracted prices only after you add a product to a quote. Editing a contracted price and then recalculating your
quote doesn’t pull in the edited values.
During quote line price calculation, Salesforce CPQ checks whether your quote line has a contracted price. If it does, Salesforce CPQ
passes that price to your quote line’s special price. It then updates the quote line’s Special Price Type field to Contracted Price.
Tip: You can have only one contracted price record per currency per product. Assigning another contracted price to a product
and then contracting that product causes the contracting process to fail. Therefore, we recommend that users who want to
automatically generate contracted prices choose Yes for the Generate Contracted Price field on only their quote records. Setting
that field to Yes on product records causes Salesforce CPQ to calculate a new contracted price every time you contract that product,
which can cause an error.
Note: If a contracted price record is associated with any line item in a quote, a DML operation is performed during price calculation.
The quote line gets inserted and then deleted (rolled back).
121
Manage Your Quotes with CPQ Product Pricing Methods
To prevent an account from applying parent contracted prices to all of its related products, select the account’s Ignore Parent Contracted
Prices field.
When conflicts exist among the inherited contracted prices, the contracted price for the immediate parent overrides any other contracted
price farther up in the family.
SEE ALSO:
Product Pricing Overview
122
Manage Your Quotes with CPQ Product Pricing Methods
3. To apply the contracted price during certain dates, enter values in the Effective Date and Expiration Date fields.
4. To apply the contracted price to several products, specify the filter criteria. For example, you might want to apply the contracted
price to all products in the Data Security.
Example: Your company sells a server management package for $5000. A sales rep recently agreed to a price of $4000 for all
packages sold to their customer between January 01, 2018, and April 01, 2018. On the server management package product, create
a contracted price record with the following information.:
• Product: Server Management Package
• Price: $4000
• Effective Date: 01/01/2018
• Expiration Date: 04/01/2018
123
Manage Your Quotes with CPQ Product Pricing Methods
record. As long as the contracted price is active, the discount schedule on the Contracted Price record overrides the discount schedule
on the product record.
Effective Date
When a sales rep adds a product with a contracted price to a quote, Salesforce CPQ evaluates the current date. If the current date
falls between the contracted price’s effective date and expiration date, including both of those dates, Salesforce CPQ uses the
product’s contracted price instead of the product’s price book price.
Expiration Date
When a sales rep adds a product with a contracted price to a quote, Salesforce CPQ evaluates the current date. If the current date
falls between the contracted price’s effective date and expiration date, including both of those dates, Salesforce CPQ uses the
product’s contracted price instead of the product’s price book price.
Filter Field
The quote line field that’s evaluated to determine whether this contracted price applies.
Filter Value
The value that the filter field is tested against to determine whether this contracted price applies.
Non Discountable
Salesforce CPQ prevents further discounting for the product related to this contracted price.
Operator
The operator that’s used to evaluate the Filter Field value against Filter Value.
Original Quote Line
The quote line that originated this contracted price.
Price
The price your sales rep negotiated with the customer. During quote line price calculation, this value overrides the quote line’s list
unit price. You can set either a price or a discount on a contracted price record, but not both.
Product
All quote lines for this product on this account receive the contracted price defined in this record.
124
Manage Your Quotes with CPQ Product Pricing Methods
When a sales rep enters a quantity of 10, the price before discount is $2000 – not 8 * $2000 = $16000.
Slab-Discounted Quote lines
Salesforce CPQ uses the quantity entered for slab products only for the calculation of the discount percentage applied to each unit.
Because the per-unit discount percentage can vary across units depending on the tier, the quote line does not have a consistent
per-unit price. All slab-discounted quote lines also have an effective quantity of 1 for all other pricing calculations on the quote line.
Negative Quote Lines
Negative quote lines always have an effective quantity of 1.
Tip: If you want to display the quote line’s quantity on an opportunity product, make a custom opportunity product field that
shows the quote line’s quantity value. You can then hide the effective quantity field if you don’t need it displayed.
c. To let sales reps select a pricing method, select the Pricing Method Editable field on your product record.
The quote line’s Pricing Method Editable field inherits the value of your product’s Pricing Method Editable field. If you want to
let sales reps change pricing methods for only certain quote lines, you can also select Price Method Editable on the quote line
records.
Important: If you let sales reps change the pricing method, make sure you have records available to match the new
method. For example, if sales reps can switch a product from list to cost pricing, make sure that product has a cost record.
Sales reps can choose List, Cost, Block, or Percent of Total from the quote line’s Pricing Method field in the quote line editor.
125
Manage Your Quotes with CPQ Product Pricing Methods
Example: Your company sells data security licenses, which you price by default through list pricing. You want to allow sales reps
to use block pricing to give a discount to past customers.
1. Define block prices for your product.
2. Set your product’s pricing method to List.
3. Select Pricing Method Editable on your product.
When your sales reps add data security licenses to your quote, the licenses are priced by the quote line’s list unit price. However,
if your sales reps want to allow block pricing, they can choose Block Pricing from the quote line’s Pricing Method field. Then,
Salesforce CPQ prices the quote line based on the block prices that you defined on the data security license’s product record.
Tip:
• Salesforce CPQ doesn’t support changing a product’s pricing method after you add it to a quote.
• Salesforce CPQ overrides the quote line’s list unit price with the custom price. To allow sales reps track the quote line’s original
price, add the Original Price field to your quote line’s line editor field set. Original Price always displays the price book value of
the product for your quote line. We recommend not editing the Original Price field.
• A quote line’s list price is editable only when its Pricing Editable field is selected and its Pricing Method field also has a value
of List. Otherwise, the list price is locked.
Pricing Permissions
Depending on your settings and your company’s internal processes, it can be necessary to customize pricing permissions for your users.
Block Prices (Admin) • Block Prices • Block Prices • Block Prices • Block Prices None
126
Manage Your Quotes with CPQ Product Pricing Methods
Price Rules (Admin) • Price Actions • Price Actions • Price Actions • Price Actions None
Guided Selling • Process Inputs • Process Inputs • Process Inputs • Process Inputs None
(Admin)
• Quote Processes • Quote Processes • Quote Processes • Quote Processes
127
Manage Your Quotes with CPQ Summary Variables
Sales Reps with the • Quote Line • Quote Line • Quote Line • Quote Line None
ability to group line Groups Groups Groups Groups
items
Solution Groups • Solution Groups • Solution Groups • Solution Groups • Solution Groups None
(Admin)
Summary Variables
Summarize number field information about products into a single object called a summary variable.
EDITIONS
You can reference a summary variable in price conditions, price actions, product rule error conditions,
quote term conditions, and other summary variables. Available in: All CPQ Editions
A summary variable targets a field on an object and then performs a math function on that field.
You can set a target object and leave the filter information fields blank to target all instances of that
object across your quote. You can also customize the filter fields to target only the fields and values you need—for example, all product
options where Product Code equals “LJ-TONER.”
The Aggregate Function field sets the type of math function the summary variable performs. You can choose from:
• Sum: Add all values in the aggregate field together
128
Manage Your Quotes with CPQ Summary Variables
Important:
• Product-scoped product rule error conditions and configurator-scoped price rules can’t use summary variables that target
quote lines.
• The summary variable’s Scope field has been deprecated. Use the Target Object field to reference the object that your summary
field evaluates.
• When you’re using features with the option selection method set to Dynamic, selected products aren’t considered product
options by product or price rules, unless the Dynamic feature is the child of a product option.
Example: You must calculate the number of wireless access points to add to a quote. Twelve laptops can connect to one access
point. You need a summary variable that sums the number of laptops on a quote and divides it by 12. Your laptops have a product
code of PCPRO.
• Variable Name: Laptops / 12
• Target Object: Quote Line
• Aggregate Function: Sum
• Aggregate Field: Quantity
• Filter Field: Product Code
• Filter Value: PCPRO
• Operator: Equals
• Composite Operator: Divide
• Value Element: 12
129
Manage Your Quotes with CPQ Summary Variables
4. Create a summary variable that summarizes the quantity of products within the hardware
product family. This summary variable is the same as the one you made in Step 3. The
only differences are that the name has a value of Total Quantity and the aggregate field
has a value of Quantity.
5. Create a price rule that searches for quote lines in the hardware product family.
6. Within this price rule, create a price action that sets the Hardware Total field equal to the
hardware total summary variable you made in Step 2.
7. Create another price action that sets the total quantity field equal to the total quantity
summary variable you made in Step 2. Both price actions target the quote.
8. Add the Hardware Total and Total Quantity fields to your quote’s line editor field set.
130
Manage Your Quotes with CPQ Summary Variables
131
Manage Your Quotes with CPQ Summary Variables
Field Description
Target Object The object containing the number field that you want to evaluate.
Aggregate Function The type of math function that the summary variable performs on
the aggregate field values.
• Sum: Add all values in the aggregate field together
• Average: Calculate the average of all the aggregate field's values
• Min: Find the lowest of all the aggregate field's values
• Max: Find the highest of all the aggregate field's values
• Count: Count the number of records that meet the filter criteria
When a summary variable's aggregate field and/or search filters
don't return any records, the Max and Min aggregate functions
return a null value, while all other aggregate functions return 0.
Aggregate Field The aggregate function performs math on the aggregate field.
For example, you could set your target object to Quote Line and
the aggregate field to List Price. If your aggregate function is Add,
Salesforce CPQ adds up the values of all list prices on your quote.
When you reference your summary variable, it returns the
combined value of list prices on your quote lines.
Always make sure your aggregate field exists on your target object.
Otherwise, your summary variable returns null or 0 depending on
its aggregate function.
Filter Field and Filter Value Use the filter field and filter value to evaluate only records that
match the filter.
For example, start with the aggregate field of List Price and filter
down to list prices from only quote lines whose Product Family
equals Hardware. Product Family is the filter field, and Hardware
is the filter value.
132
Manage Your Quotes with CPQ CPQ Product Fields
Field Description
Operator The method for evaluating filter values, such as Equals or Greater
Than.
Variable Element The variable element looks up to another summary variable. You
can take the results of your aggregate function and perform another
operation on them using the composite operator and the variable
element.
For example, let's say your aggregate function returns a value of
10. Your composite operator has a value of Multiply and your
variable element looks up to a summary variable that returns 20.
In this case, your summary variable returns a value of 200.
Scope This field has been deprecated. Use Target Object instead.
133
Manage Your Quotes with CPQ CPQ Product Fields
134
Manage Your Quotes with CPQ CPQ Product Fields
Configuration Field Set SBQQ__ConfigurationFieldSet__c Picklist Choose the field set used for
this product during
configuration.
135
Manage Your Quotes with CPQ CPQ Product Fields
Default Pricing Table (v24.2) SBQQ__DefaultPricingTable__c Picklist Select the pricing table
where this product appears
by default when price
dimensions are defined.
• Segmented: MDQ
products appear in the
Segmented table,
where users can edit
segments of time.
• Standard: MDQ
products appear in the
Standard table and
behave as a single line
item. Users can
resegment the line item
if desired.
136
Manage Your Quotes with CPQ CPQ Product Fields
137
Manage Your Quotes with CPQ CPQ Product Fields
138
Manage Your Quotes with CPQ CPQ Product Fields
139
Manage Your Quotes with CPQ CPQ Product Fields
140
Manage Your Quotes with CPQ CPQ Product Fields
141
Manage Your Quotes with CPQ CPQ Product Fields
142
Manage Your Quotes with CPQ Create and Edit CPQ Quotes
Note: If the account’s shipping address is incomplete, Salesforce CPQ copies a combination Available in: All CPQ Editions
of the account’s shipping and billing addresses to the quote’s shipping address. If the shipping
and billing addresses are different, the resulting shipping address in the quote is incorrect.
To ensure a correct shipping address in your quote, enter a complete shipping address in
your account.
143
Manage Your Quotes with CPQ Managing Bill To and Ship To Addresses on CPQ Quotes
144
Manage Your Quotes with CPQ Using the Quote Line Editor
Null or not Primary Role = Distributor Null Account B Inherited from the
address of the account
referenced in the
Distributor field
Null or not primary Null, or non-Distributor Null Null Inherited from the
role address of the account
referenced in the
Account field
Important: If you configured Partner accounts on your opportunity, the Partner and Distributor fields are null on the New Quote
page. However, Salesforce CPQ configures the Bill To Address after you click Save on the New quote page and overrides any
partner and distributor values you enter based on the opportunity’s Partner account configuration.
145
Manage Your Quotes with CPQ Using the Quote Line Editor
The quote line editor contains several buttons to help you make your quote.
Add Products
This menu can contain standard buttons or custom actions that your Salesforce CPQ administrator created. It includes the following
standard buttons by default.
• Add Products: Go to the Product Lookup page and select products to add to your quote.
• Add Favorites: Go to the Favorites page within the Product Lookup page, where you can add previously saved or shared favorite
records to your quote.
• Upgrade Assets: Choose assets to upgrade on your quote.
• Renew Subscriptions: Renew your quote’s active subscriptions.
Calculate
Salesforce CPQ applies price calculations to your quote, including all relevant price rules and product rules. Click this button to
recalculate your quote’s prices after you make changes.
Delete Lines
You can select several lines and then click this button to delete all the lines at once. You see this button only if your Salesforce CPQ
administrator enabled it.
Groups
Add line item groups to your quote.
Quick Save
Save your quote line changes without leaving the quote line editor.
Reset Discounts
Reset all user-applied discounts.
Save
Save your quote line changes and return to the quote detail page.
Cancel
Return to the quote detail page without saving your changes.
Groups
Apply discounts or obtain totals for specific sets of quote lines by organizing them into groups. You can create ad hoc groups on
the quote record itself or create dedicated solution groups for selection across any quote.
Sorting Column Headers in the Quote Line Editor
You can sort columns in the quote line editor by clicking the arrow to the right of the column header. Columns with alphabetical
values may be sorted by alphabetical or reverse-alphabetical order, while columns with numerical values may be sorted by ascending
or descending order.
Custom Actions
Custom actions are buttons that sales reps can click to perform an action in the quote line editor, configurator, or several other detail
pages. For example, sales reps can select to show a filtered section of your price book or to direct users to an internal or external
URL.
Search from the Quote Line Editor
There are several ways to search for products and add them to your quote using the Salesforce CPQ quote line editor.
Guidelines for Cloning Quote Lines
Clone a product in the line editor and reconfigure the product before finalizing your quote.
Quote Line Editor Drawers
Organize excess line editor fields in collapsible drawers shown under each quote line.
146
Manage Your Quotes with CPQ Using the Quote Line Editor
Guided Selling
Create a prompt that asks sales reps about the types of products they want when they’re adding products to a quote. Salesforce
CPQ reviews their answers and shows the Add Products page with a list of products that match their responses. We call this process
“guided selling.”
Show Product Image Fields in the Quote Line Editor
If your product record contains a custom image field, you can show that image within any of that product’s quote lines in the quote
line editor.
Add Fields to the Quote Line Editor Field Set
Add fields to quote line’s line editor field set so that they display at the top of the quote line editor. Your sales reps can edit those
fields and save or calculate the quote to apply the field across all the quote’s quote lines.
Optimize Column Widths in Quote Line Editor
To give sales reps the ability to customize the layout of the quote line editor, add the ability to resize column widths.
Large Quote Experience
Configure the quote line editor so your sales reps can quickly navigate through quotes with many list items.
Large Quote Performance Settings
Improve the calculation performance for large quotes by using the Large Quote Threshold and Quote Batch Size package settings.
CPQ Quote Line Fields
Quote lines store information about the products that a sales rep has quoted. With certain page layout and field-level security settings,
some fields aren’t visible or editable.
Groups
Apply discounts or obtain totals for specific sets of quote lines by organizing them into groups. You
EDITIONS
can create ad hoc groups on the quote record itself or create dedicated solution groups for selection
across any quote. Available in: All CPQ Editions
147
Manage Your Quotes with CPQ Using the Quote Line Editor
Example: To apply an Additional Discount to all the software in your quote, create two groups on a new quote: one for software
and one for all other products. Add your software products to the software group and make sure that you have Additional Discount
in your group Line Editor field set. This way, you can apply the Additional Discount to only the products in the software group.
If your quote already has quote lines, they’re all added to your first group.
2. Within the group, click Add Products to open the Product Selection page.
3. Select the products to add to your group, then click Select to return to the quote line editor.
4. To add another group, click Add Group.
5. To remove all groups from your quote, click Ungroup.
Salesforce CPQ lists all the formerly grouped line items as standard line items.
6. The left side of your quote group header contains the group’s name and description. Click these fields to edit them.
7. The right side of your quote group header contains quote line fields that your Salesforce admin enabled for editing at the group
level. You can enter a value in one of those fields to apply it to all the group’s quote lines.
8. To clone or delete your group, click the dropdown arrow next to Add Products and then click Clone Group or Delete Group.
Solution Groups
A solution group is a predefined quote line group that sales reps can add to any quote. Solution
EDITIONS
groups are useful if you have a well-defined set of common quote line groupings.
You can save time by having these groups available right away rather than manually re-creating Available in: All CPQ Editions
them in each of your quotes. For example, if you normally quote a selection of hardware products
in one group and a selection of software products in another group, you can create two solution
groups. Name the groups Hardware and Software and make them available to all users when they add line items to their quotes.
When users select Groups in the quote line editor, they see a list of up to 200 available solution groups. Selecting a solution group
creates a group with the solution group’s name and description. The new group doesn’t have any quote line items. Users can add
products to the group from the product selection page.
To enable solution groups, select Solution Groups Enabled in your Groups package settings. Enter SBQQ__SolutionGroup__c
as the object, and select Group Name and Description for the Name and Description fields respectively. You can then create as many
solution group records as you need.
148
Manage Your Quotes with CPQ Using the Quote Line Editor
Custom Actions
Custom actions are buttons that sales reps can click to perform an action in the quote line editor,
EDITIONS
configurator, or several other detail pages. For example, sales reps can select to show a filtered
section of your price book or to direct users to an internal or external URL. Available in: Salesforce CPQ
Custom actions have different actions available based on where the custom action appears in Spring ’14 and later
Salesforce CPQ. For example, custom actions in the quote line editor can delete lines, add a quote
line group, or save the quote and navigate to an internal or external page. Custom actions in the
configurator can load an internal or external page and apply edit rules. Custom actions on the contract can amend or renew the contract.
You can create conditions for your custom action and associate them with the Conditions Met field. If your action contains conditions,
Salesforce CPQ doesn’t show the action until your quote meets them.
You can also add search filters to your custom action. When a sales rep clicks the custom action in the quote line editor or configurator,
it filters products based on the search filter parameters.
Salesforce CPQ ships with several custom actions you can enable in the quote line editor.
• Add Products
• Add Favorites
• Add Recommendations
• Save
• Quick Save
• Reset Discounts
• Delete Lines
• Add Groups
• Optional: All
Note:
• Salesforce CPQ supports a maximum of five custom actions in the quote line editor.
• The Add Recommendations custom action is used with the Recommended Products plug-in to link to the Add
Recommendations page from the quote line editor. If you activated the Add Recommendations custom action, but the
plug-in isn’t implemented, you can hide the custom action. Remove all quote lines, and click Quick Save.
• The Add Recommendations custom action doesn’t support the Large Quote Threshold setting.
149
Manage Your Quotes with CPQ Using the Quote Line Editor
• The Apply Rules custom action is available in Salesforce CPQ Spring ’20 and later.
• Quick Save custom actions on the quote-line level aren’t supported.
Action
The result of selecting the custom action.
Action Name
The name is used in your list of custom action records. It doesn’t appear on the button.
Active
Select this field to show the custom action on your target page.
Brand Button
Enable brand button styling on this custom action when it appears in the UI. Brand button styling is based on brand button settings
in your org's active Theme.
Conditions Met
If your custom action uses conditions, choose whether the custom action must meet any or all its conditions.
Default
When enabled, for custom actions with a search filter, show the Product Selection page with a filtered product list first when users
open the quote line editor. This field doesn’t work for other types of custom actions.
Description
Describes what the custom action does.
150
Manage Your Quotes with CPQ Using the Quote Line Editor
Display Order
The order in which custom actions appear on a page is based on the display order. Custom actions with lowest display order appear
first, from left to right.
Event Handler Name
This field is for Salesforce internal use only. No need to add it to your page layout.
Icon
If your custom action is a button, you can make it appear as an icon image.
Label
The text that appears on your custom action in the UI. We've provided a collection of default labels, but you can also add your own
as a new picklist value.
Location
The custom action appears in this area on your chosen page. This field's values vary based on the value of the Page field.
Page
Choose where the custom action appears. This field controls the available values in the Location and Action fields.
Page Handler Name
This field is for Salesforce internal use only. No need to add it to your page layout.
Parent Custom Action
A parent custom action groups one or more custom actions under a dropdown arrow. There’s no limit to the number of custom
actions that look up to the same parent, but we recommend that your child custom actions don’t flow over your quote lines.
For example, the Add Favorites custom action has the Add Products custom action as its parent.
Return Target
Users return to this page instead of the quote detail page when they leave the quote line editor. This field works only for quote line
editor custom actions that perform a Save or Cancel action.
Return URL
Enter a URL if you want Salesforce CPQ to return customers to the URL after the custom action's action has finished.
Target Object
If your custom action lets sales reps add a record to their quote, choose whether this custom action directs them to a selection page
for products, assets, subscriptions, or favorites.
We deprecated this field after Salesforce CPQ V25. Users on later versions should use the Page, Location, and Action fields to control
the results of their custom action.
Type
Choose whether the custom action appears as a button, menu, or separator in the UI.
URL
When a user clicks the custom action, it takes them to the URL provided in this field. The URL can be a link to an internal or external
page, or a Salesforce CPQ field. URLs must start with http:// or https://. For more information on setting up field parameters,
check out Considerations for Linking to Custom Fields from Custom Actions.
151
Manage Your Quotes with CPQ Using the Quote Line Editor
URL Target
If your custom action links to a URL, specify whether clicking the custom action replaces the current page or opens a new page in
your sales rep’s browser.
3. Set the Type and Icon fields to customize how your custom action appears.
4. Create a search filter in the Search Filters related list.
Salesforce CPQ filters available objects based on these parameters in the selection page you defined. For example, you can define
a filter that shows lines on your configurator page where the Product Name equals “Software.”
5. Select Default to activate this custom action when a user opens the quote. This process takes the user directly to the selection
screen you defined in Step 1 rather than the quote line editor. This field works only for custom actions with a search filter.
6. Create conditions for your custom action and associate them with the Conditions Met field. If your action contains conditions,
Salesforce CPQ doesn’t show the action until your quote meets them.
7. If you have multiple custom actions, set their Display Order fields to determine where they appear in the UI. Salesforce CPQ orders
custom actions from left to right, starting with values of 1.
8. Enter a description that appears when users hover over the custom action button.
Example: You want a custom action that shows all Diesel products available for selection.
Custom Action
• Label: Diesel Filter
• Target Object: Product
• Display Order: 1
• Active: Selected
• Page: Quote Line Editor
• Location: Quote
Search filter for your custom action:
• Filter Name: Diesel Filter
• Display Order: 1
• Target Object: Product
• Target Field: Name
• Operator: Equals
• Filter Value: Diesel
152
Manage Your Quotes with CPQ Using the Quote Line Editor
153
Manage Your Quotes with CPQ Using the Quote Line Editor
This label appears on the button for your action. You can pick from several default labels. You can also add labels by adding values
to the Label field in the Custom Action object’s managed settings.
5. If you want the custom action to be available only when certain conditions are met, use the Condition Met field to define the
conditions.
6. Choose a number for your custom action’s display order. Custom actions with lower display orders appear first on their target page.
7. Select the Active checkbox.
8. Use the URL field to specify what the custom action links to.
9. Set the URL Target field to Replace Page so that your target URL opens on your current page.
Example: Your company sells custom desktops. You want to provide your sales rep with links from the quote line editor to your
largest vendor’s inventory pages. Here’s one way to create the first custom action.
Because you set the display order to 1, your custom action appears first in the quote line editor.
154
Manage Your Quotes with CPQ Using the Quote Line Editor
5. If you want the custom action available only when certain conditions are met, use the Condition Met field to define the conditions.
6. Choose a number for your custom action’s display order. Custom actions with lower display orders appear first in their target page.
7. Select the Active checkbox.
8. Use the URL field to specify what the custom action links to.
9. Set the URL Target field to Popup or Replace Page.
155
Manage Your Quotes with CPQ Using the Quote Line Editor
After choosing the target object, use the field, operator, and filter value to define the logical statement that the condition evaluates. For
example, your condition could evaluate whether the quote's total price is greater than $500,000, or whether a product contains "LAPTOP"
in its product code.
After you create conditions, use the parent custom action’s Conditions Met field to specify whether the action must meet any or all of
its conditions.
Important: Use conditions only with custom actions that appear in the quote line editor or configurator. They don't work for
custom actions that appear on other pages.
Example: Your company sells desktop workstations. Customers can also purchase a liquid CPU cooler, which is provided by a
partner. When configuring a bundle that includes a CPU cooler, you want the sales reps to see a custom action that opens a page
about the CPU cooler’s technical details.
• Create a custom action that appears in the configurator and opens a page in a new window. Because we're only introducing
one condition, we can leave the Conditions Met field to All.
– Set the Type to Button.
– Set the URL Target to Popup.
– Set the Page to Product Configurator.
– Set the Location to Configurator.
– Set the Action to Launch External.
– Add a label that describes your custom action, such as Cooler Specifications.
– Add your URL.
156
Manage Your Quotes with CPQ Using the Quote Line Editor
• Create your condition. Because all your company's coolers contain "CPQ_COOLER" in their product codes, your condition must
filter by that value.
– Set the Field to Product Code.
– Set the Filter Value to CPU_COOLER.
– Set the Operator to Contains.
– Set the Target Object to Product.
First, create a custom action that opens a page in a new window. Replace [enter URL here] here with your desired URL.
Because we only have one condition, we can leave the Conditions Met field to All.
Next, create your condition. Because all your company’s coolers contain "CPQ_COOLER" in their product codes, your condition
must filter by that value.
157
Manage Your Quotes with CPQ Using the Quote Line Editor
Note: Custom actions target the quote when their target object is blank. If your custom action's target object is blank, set
your custom action condition's target object to Quote.
158
Manage Your Quotes with CPQ Using the Quote Line Editor
SBQQ__FirstSegmentTermEndDate__c
SBQQ__LineItemsGrouped__c
SBQQ__ListAmount__c
SBQQ__MarkupRate__c
SBQQ__MasterContract__c
SBQQ__NetAmount__c
SBQQ__Opportunity__c
SBQQ__PartnerDiscount__c
SBQQ__PricebookId__c
SBQQ__Primary__c
SBQQ__QuoteProcessId__c
SBQQ__RegularAmount__c
SBQQ__StartDate__c
SBQQ__Status__c
SBQQ__SubscriptionTerm__c
SBQQ__TotalCustomerDiscountAmount__c
SBQQ__Type__c
Account
CurrencyIsoCode
Name
Id
Opportunity
AccountId
CurrencyIsoCode
Id
Pricebook2Id
159
Manage Your Quotes with CPQ Using the Quote Line Editor
• In the Salesforce CPQ mobile app, custom action dropdown lists in the quote line editor aren’t scrollable. To ensure easy navigation
in the quote line editor, we recommend no more than five custom actions per quote line, and no more than fifteen quote or quote
line group custom actions.
• The Salesforce CPQ mobile app supports five actions per quote line and sixteen custom actions between the quote and any of its
quote line groups.
• Starting in Summer ’20, if the URL Target on a custom action is set to Replace Page and the URL field is an external link, the return
URL opens in a separate tab in Lightning Experience.
Search Filters
Use the quote line editor’s search filter to filter products, assets, or subscriptions by their field values.
EDITIONS
Select Add Products in the quote line editor, and then select the filter icon to show the search
filter box. You can search by Product Code, Product Name, Product Family, and Product Description Available in: All CPQ Editions
by default. You can also add and remove standard or custom fields to any search filter by editing
the product object’s search filter field set.
Important:
• If you add a checkbox field to your search filter, Salesforce CPQ filters products based on the checkbox's value returning False.
For example, let's say you had several products with an LCD Screen custom checkbox field. If you add LCD Screen to your
search filter, Salesforce CPQ returns products where LCD Screen is unselected. If you want to add an option-based field that
doesn't return a True or False filter value by default, add a picklist that defaults to None.
• The search filter’s Filter Source Object field supports only a value of Quote. Adding new picklist values isn’t supported.
Example: Your products have a custom Industry field. You want to filter products based on this value. Create a search filter with
the following setup.
• Target Object: Select Product.
160
Manage Your Quotes with CPQ Using the Quote Line Editor
Note:
• If a global product search in Salesforce CPQ returns over 2,000 records, you can’t always see all matching records due to search
crowding. For more information, review I Know a Record Exists—Why Can’t I Find It?
• When the package setting Sort Products in Memory is set to true, and the search returns more than 1,000 products, the sort
order can be incorrect. Products are returned in batches of 1,000, which are sorted, but the “first” product in the “complete”
set of results can be in the second or third batch of 1,000 products. Each batch is sorted in memory, independent of the other
batches returned by the same search. As a workaround, use product families or additional filters on searches. See Additional
CPQ Package Settings.
Example: Use the product filter before or after the product keyword search to further customize your search process. Consider
the following food product catalog where all values are text fields on the product. You also have a product search filter sidebar
with options for type, color, and producer.
161
Manage Your Quotes with CPQ Using the Quote Line Editor
Search 1
1. Enter Yellow in the product keyword search, and then click Search. The product selection page shows every record
containing a Yellow value: Sweet Candy, Sour Candy, Chocolate Coins, Banana, and Cheese.
2. Open the product filter, enter Mike’s Candy in the Producer search box, and then apply the search. This process applies
the search filter on your product keyword search results, showing only Sweet Candy and Sour Candy.
Search 2
1. Set your search filter’s food type to Candy, and then apply. The results are Chocolate Coins, Sweet Candy, Sour Candy, and
Chocolate Bar.
2. Enter Yellow in the product keyword search, and then click Search. This process separates your results into Chocolate
Coins, Sweet Candy, and Sour Candy.
Search 3
1. Enter Yellow in Product Search. Don’t click Search.
2. Add filter values of Type = Candy, and then apply. Because you didn’t commit to the product search, Salesforce CPQ considers
only the search filter values: Chocolate Bar, Chocolate Coins, Sweet Candy, and Sour Candy.
Search 4
1. Set your filter to Producer = Mike’s Candy, and then apply.
2. Enter Yellow in Product Search, and then click Search. The results are Sweet Candy and Sour Candy.
3. Clear your filter
4. Return to the product keyword search, which still contains Yellow, and then apply the search. Because you’re no longer
considering any filters, you’ll see results for Chocolate Coins, Sweet Candy, Sour Candy, Cheese, and Bananas.
162
Manage Your Quotes with CPQ Using the Quote Line Editor
They can change either of the filter’s dates to establish a range of target objects between and including these dates.
163
Manage Your Quotes with CPQ Using the Quote Line Editor
2. Add the lookup field to your quote line’s Line Editor field set.
a. From the Quote Line management page, go the Field Sets related list, then find the Line Editor field set and click Edit.
b. Add your lookup to the field set.
Important: You can change the field set name , but the label must always be CPQ_Lookup.
c. Go to your object’s Field Sets related list, then find CPQ_Lookup and click Edit.
d. Add the fields that you want to appear in the lookup field’s search results window. By default, the window always shows the
master record ID and Owner ID.
164
Manage Your Quotes with CPQ Using the Quote Line Editor
Clone to Groups
You can also clone one or more products from a quote line group or solution group directly to another. Select Enable Multi Line Delete
in your line editor package settings to enable this feature.
To clone between groups, select the checkbox for at least one line in a group, and then select the clone icon for any of the selected lines.
Click Clone to show a window where you can choose any number of groups to clone your selected lines into.
Bundles and MDQ products retain their structures when cloned between groups.
165
Manage Your Quotes with CPQ Using the Quote Line Editor
Guided Selling
Create a prompt that asks sales reps about the types of products they want when they’re adding
EDITIONS
products to a quote. Salesforce CPQ reviews their answers and shows the Add Products page with
a list of products that match their responses. We call this process “guided selling.” Available in: Salesforce CPQ
Create a guided-selling process with the Quote Process object and add it to your quote or quote Summer ’15 and later
line group’s Quote Process field. The Guided Selling prompt appears when you click Edit Quote
Lines for the first time on that quote. It also appears when you click Add Products in the quote
line editor or within a quote line group.
You can also let your sales reps select the prompt they want to use from a picklist in the quote line editor.
A guided-selling process contains these components.
• Quote Process: This object defines how the prompt appears and how it adds items based on user input.
• The quote process record contains a related list for process inputs. These records are the questions and possible answers that the
guided selling prompt shows. Each process input represents one question.
• The process input record contains a related list for process input conditions. You can define process input conditions so that the
guided selling prompt only shows the process input only in response to the values of other process inputs. This feature is useful if
you want to create a complex guided selling prompt that guides users down several paths based on their needs. It also keeps your
guided selling prompt organized by showing only required questions.
Note: If your reps use Lightning Experience, include no more than five process inputs in a quote process. Additional process
inputs are cut off in the dialog box.
Let’s have a look at important fields for each of these objects.
166
Manage Your Quotes with CPQ Using the Quote Line Editor
Product Field
Salesforce CPQ evaluates how this field’s value compares to the user’s answer to this process input relative the operator field.
Operator
Define how Salesforce CPQ compares a user’s answer to the value of your product field. If the comparison is true, Salesforce CPQ
shows the product on the Add Products page when the user completes the guided-selling prompt.
Conditions Met
Define whether any or all your process input conditions must evaluate to true for Salesforce CPQ to show matching products on the
Add Products page. Use this field only if you’re using process input conditions on this quote process.
167
Manage Your Quotes with CPQ Using the Quote Line Editor
Input Name Active Label Display Order Input Field Product Field Operator
Fabric Type Selected Pick your fabric 1 fabric_type__c fabric_type__c equals
type
3. Associate the record ID of your quote process with your quote or quote line group’s Quote Process ID field.
168
Manage Your Quotes with CPQ Using the Quote Line Editor
• Commercial Segment
• Employees
The prompt follows these paths.
• The prompt always asks “What business problem are you solving?” and “How many employees?”
• If the sales rep responds to “What business problem are you solving?” by selecting “Consolidate IT Assets,” the prompt asks “What
server types?”
• If the sales rep responds to “What business problem are you solving?” by selecting “Manage Time & Expenses,” the prompt shows
“Deployment options” and “Commercial segment.”
Before you make your guided selling record, create the following custom picklist fields and their values on your product2 object. The
Employees field exists as a standard field on your account object. Set their values on your account and products based on how you want
your guided selling prompt to filter them.
Business Solution (Business_Solution__c)
Consolidate IT Assets
Manage Time and Expenses
Staff Augmentation
Server Replacements (Server_Replacements__c)
Application
Database
File
Web
Deployment Options (Deployment_Options__c)
Cloud
On-Premise
Commercial Segment (Commercial_Segment__c)
SMB
Enterprise
Public Sector
You can use process input conditions to show “Deployment options” and “Commercial segment” based on responses to the business
solution question. Let’s review all the objects you need to create this guided-selling prompt.
Because you’re using only one prompt and keeping it in the quote line editor, create a quote process record and give it a descriptive
name. Next, create your process inputs.
Input Name Label Display Order Input Field Product Field Operator
Business Solution What business 1 Business_Solution__c Business_Solution__c equals
problem are you
solving?
169
Manage Your Quotes with CPQ Using the Quote Line Editor
Input Name Label Display Order Input Field Product Field Operator
Employees How many 2 Employees Employees__c N/A
employees?
You can have the same display order values for multiple processes. If a process input condition hides one of those processes, Salesforce
CPQ shows it above the unhidden process after the prompt meets the condition’s requirements.
You also need process input conditions for your Server Types, Deployment Options, and Commercial Segment process inputs. Go to
each of those process input records, click New Process Input Condition, and then create the condition as follows. Remember, the
Employees process input doesn’t need a condition because you want it to always appear in your prompt.
Deployment Options Manage Time and Business Solution equals Manage Time and
Expenses Expenses
Commercial Segment Manage Time and Business Solution equals Manage Time and
Expenses Expenses
Your master process input updates its Process Inputs Regulated related list with lookups to all the process inputs it controls.
Your quote process ID is the string of numbers and letters following the final backslash of your quote process record’s URL. Copy that
and add it to your quote or quote line group’s Quote Process ID field.
170
Manage Your Quotes with CPQ Using the Quote Line Editor
• Add the fields referenced by the lookup filter to the Line Editor field set.
• Create a custom field set called ReferencedFields, and add the fields referenced by the lookup filter to the ReferencedFields field
set.
Include any fields referenced by the lookup filter in the field set.
If you’re using the Enable Product Hierarchy setting or the Enable Expand Collapse setting, you must include Product Name in the
field set.
Considerations
You can resize columns in the full Salesforce site only. The column widths also apply to the Salesforce mobile app. Ensure the column
widths you select work for both.
Resetting to the default is available only in the full Salesforce site.
171
Manage Your Quotes with CPQ Using the Quote Line Editor
• MDQ price dimensions and the segmented and standard product tables appear as tabs.
• Subtotals and summary rows are locked in place at the bottom of the quote line editor.
• Click the Expand Page icon to expand the quote line editor across your display page. Click the Escape or the Expand Page icon to
return to standard view.
• Standard and segmented table headers are locked in one place at the top of the page. That way, you don’t lose your point of reference
when scrolling through a list of line items.
• As of Salesforce CPQ Summer ’19, users can collapse and expand bundles.
Dragging and dropping quote line items isn’t available when Large Quote Experience is enabled.
Salesforce CPQ saves and loads quotes by batches of quote lines. The line editor package setting
Quote Batch Size controls the number of lines in a batch. When this field is blank, Salesforce CPQ uses the default batch size of 150 quote
lines. However, you can edit that value. A smaller batch size is less likely to hit a governor limit. A larger batch size leads to better quote
line editor performance because the editor makes fewer round trips.
We recommend keeping this value from 100 to 400. If you use complex or long-running triggers for batches greater than 400, you can
hit governor limits.
172
Manage Your Quotes with CPQ Using the Quote Line Editor
• If you’re upgrading assets, only lines that actually represent assets are essential.
• If you’re adding products, no quote lines are essential. As a result, quote-scoped product rules evaluate only lines that are currently
being added to the quote and ignore previously added lines. This difference can cause quote-scoped product rules to not behave
as intended.
If you don’t have quote-scoped product rules targeting your quote, you can set the large quote threshold to 1 without any issue. If your
quote contains such rules, we recommend working with your partner to identify workarounds. For example, you can convert your
quote-scoped product rules into field-level validations, triggers, and other types of platform customization.
Note:
• When a user clicks Clone with Related on a quote that meets the large quote threshold, Salesforce CPQ doesn’t consider the
large quote threshold for the cloned quote as the cloned quote is created. All post-creation UI calls on the cloned quote
consider the large quote threshold. Calculations that impact the quote line editor consider the large quote threshold, even if
there's a change to the quote.
• We don’t support a summary variable referencing other summary variables in the Variable Element field with large quote
validation when the following are true.
– Summary Variable is used as a condition in a quote-scoped product validation rule.
– The Large Quote Threshold setting is used.
– Validate Large Quotes is set to true.
– The quote line is above the large quote threshold.
As a workaround, make sure the field in the referencing summary variable is part of another validation rule.
Important: Fields that appear in the quote line editor are defined by the Line Editor field Available in: All Salesforce
set, which is defined on the Quote, Quote Line, and Quote Line Group objects. After a Salesforce CPQ Editions
upgrade, sometimes the Line Editor field set doesn’t reflect new field restrictions. As a result,
some fields in the quote line editor don’t behave as expected. If fields don’t behave as
expected, ensure they’re available for the Line Editor field set on the Quote, Quote Line, and
Quote Line Group objects.
173
Manage Your Quotes with CPQ Using the Quote Line Editor
Block Price SBQQ__BlockPrice__c Lookup (Block Price) Assign a fixed price to a product
based on quantity and quantity
range. This field’s value overrides
the automatic calculation of
quantity multiplied by unit price.
174
Manage Your Quotes with CPQ Using the Quote Line Editor
Component Net Total SBQQ__ComponentTotal__c Currency (14, 2) Net total of components in this
configuration. This field is
populated only if the line item
references a configurable
product.
Component Uplifted By Package SBQQ__ComponentUpliftedByPackage__c Checkbox Fixes uplift for this component
to the parent bundle uplift. Uplift
applies only to multi-segmented
products.
Contracted Price SBQQ__ContractedPrice__c Lookup (Contracted Price) Contracted price if the product
has negotiated pricing for
opportunity's account.
Contracted prices are available
on the Account and can be
applied to any product in any
price book.
Cost SBQQ__Cost__c Lookup (Cost) Cost record for the line item.
Customer Total SBQQ__CustomerTotal__c Formula (Currency) Customer total price for the
quote line item. This total is the
net total, excluding any partner
discounts.
175
Manage Your Quotes with CPQ Using the Quote Line Editor
Default Subscription Term SBQQ__DefaultSubscriptionTerm__c Number (5, 0) Term length of the subscription,
which applies only if the product
is a subscription. It’s copied from
the subscription term of the
related product when the line
item is first generated.
Description SBQQ__Description__c Rich Text Area (32000) Description of the line item.
Discount Tier SBQQ__DiscountTier__c Lookup (Discount Tier) Discount tier used by the line
item. This field is populated only
if a product is volume
discounted and the discount
schedule is of type Range.
176
Manage Your Quotes with CPQ Using the Quote Line Editor
Effective End Date SBQQ__EffectiveEndDate__c Formula (Date) Effective end date for this
subscription.
Effective Start Date SBQQ__EffectiveStartDate__c Formula (Date) Effective start date for this
subscription.
Gross Profit SBQQ__GrossProfit__c Currency (14, 2) Gross profit amount on this line
item.
Group SBQQ__Group__c Lookup (Quote Line Group) Group to which this line
belongs, if any.
177
Manage Your Quotes with CPQ Using the Quote Line Editor
List Unit Price SBQQ__ListPrice__c Currency (12, 2) The list unit price inherits this
product's price book entry by
default unless a special price
type is defined.
Markup (Amount) SBQQ__MarkupAmount__c Currency (14, 2) Markup amount for the line
item.
Maximum List Unit Price SBQQ__MaximumPrice__c Currency (14, 2) Maximum unit price for the
product. Used to enforce list
price ceiling for products with
dynamically calculated prices.
Minimum List Unit Price SBQQ__MinimumPrice__c Currency (18, 0) Minimum list unit price for this
product. Used to enforce list
price floor for products with
dynamically calculated list
prices.
Net Total SBQQ__NetTotal__c Formula (Currency) Net total price for this quote line
item.
Net Unit Price SBQQ__NetPrice__c Currency (12, 2) Net unit price for the product
quoted by this line item.
178
Manage Your Quotes with CPQ Using the Quote Line Editor
Option Discount (%) SBQQ__OptionDiscount__c Percent (3,2) If this line item is for an optional
SKU, this field captures any
discount given to the bundle
and extended to the option.
Option Level SBQQ__OptionLevel__c Number (5,0) Indicates the nesting level of this
option (applies only to line items
generated from options).
Original Price SBQQ__OriginalPrice__c Currency (12,2) The original unit price for the
product quoted by this line item.
Original price originates from the
price book. Also known as MSRP.
179
Manage Your Quotes with CPQ Using the Quote Line Editor
Original Unit Cost SBQQ__OriginalUnitCost__c Currency (14,2) Cost for one unit of product
quoted on this line item if cost
schedules weren’tapplied.
Package List Total SBQQ__PackageListTotal__c Formula (Currency) Total list price of this bundle,
including its components.
Package Product Code SBQQ__PackageProductCode__c Text (255) Product code for the bundle.
Salesforce CPQ generates this
code by appending codes of
selected components according
to a user-specified pattern.
Package Product Description SBQQ__PackageProductDescription__c Rich Text Area (32,000) Dynamic product description
generated from the components
inside this bundle.
180
Manage Your Quotes with CPQ Using the Quote Line Editor
Percent of Total Base SBQQ__SubscriptionBase__c Text (30) Determines the price that serves
as the base for percent-of-total
calculations.
Percent of Total Target Price SBQQ__SubscriptionTargetPrice__c Currency (12, 2) Percentage of the subscription
target product price for
calculating maintenance.
Previous Segment Regular Price SBQQ__PreviousSegmentPrice__c Currency (12, 2) When set, this value takes the
place of the previous segment's
regular price when uplift is
calculated for this segment.
Previous Segment Uplift SBQQ__PreviousSegmentUplift__c Currency (10, 2) When set, this value takes the
place of the previous segment's
uplift amount when uplift is
calculated for this segment.
181
Manage Your Quotes with CPQ Using the Quote Line Editor
Pricing Method SBQQ__PricingMethod__c Picklist Indicates how the price for this
line item is calculated. List
subtracts the discount from the
list price. Cost adds markup to
the cost.
• List
• Cost
• Block
• Custom
Product Code SBQQ__ProductCode__c Formula (Text) Code for the product referenced
by this line item.
Product Family SBQQ__ProductFamily__c Formula (Text) A category you can use to help
you organize this line item in
Salesforce (whether it's a new or
existing product family). Use this
field during product selection to
filter to the correct product or
product SKU.
182
Manage Your Quotes with CPQ Using the Quote Line Editor
Prorated List Price SBQQ__ProratedListPrice__c Currency (16, 2) Prorated list unit price.
Prorated Unit Price SBQQ__ProratedPrice__c Currency (12, 2) Prorated price of the product
quoted by this line item. This
price differs from the special
price only if the product is a
subscription and the line item is
prorated.
Regular Unit Price SBQQ__RegularPrice__c Currency (12, 2) Unit price before additional
discount.
Renewed Asset SBQQ__RenewedAsset__c Lookup (Asset) Asset being renewed if this line
item represents product
renewal.
Renewed Subscription SBQQ__RenewedSubscription__c Lookup (Subscription) The subscription that this quote
line item renews.
Required By SBQQ__RequiredBy__c Lookup (Quote Line) Links this line item to another
line item in the same quote
whose product requires this line
item's product.
183
Manage Your Quotes with CPQ Using the Quote Line Editor
Source SBQQ__Source__c Lookup (Quote Line) Source of the cloned quote line
item.
Special Price SBQQ__SpecialPrice__c Currency (12, 2) If the Special Price Type field has
a value, special price replaces list
price as the starting point in the
quote line price calculation
sequence.
• If the special price type is
Contract, your special price
uses the value of the current
contracted price record that
is active for the account
associated with your quote.
Remember that the
contracted price uses either
a price or a discount. If it
uses a price, your special
price inherits that value
directly. If it uses a discount,
Salesforce CPQ applies that
discount to your product’s
list unit price and sends the
result to your special price.
• If the special price type is
Custom, admins can provide
their own value in the
special price field. Salesforce
CPQ uses the special price
in calculating the quote line
item price. However, the
quote line item still
maintains a value for the list
unit price. If the list price is
zero, the special price
doesn’t affect the
calculation.
184
Manage Your Quotes with CPQ Using the Quote Line Editor
Special Price Description SBQQ__SpecialPriceDescription__c Text (80) Name of the discount tier or
contracted price applied to
achieve the special price for this
line item.
Special Price Type SBQQ__SpecialPriceType__c Picklist Stores the type of special price
offered on this line item. A null
value indicates that there’s no
special pricing. Under normal
circumstances, this field isn’t
modified via the UI.
Subscribed Asset IDs SBQQ__SubscribedAssetIds__c Long Text Area (19,000) Comma-separated list of asset
IDs covered by the subscription
line. Only applicable to renewal
quotes. Don’t update unless
instructed.
185
Manage Your Quotes with CPQ Using the Quote Line Editor
186
Manage Your Quotes with CPQ Using the Quote Line Editor
Term Discount Schedule SBQQ__TermDiscountSchedule__c Lookup (Discount Schedule) Schedule for discounts based on
subscription term. This field is
useful when you want to show
a breakdown of payments in
separate groups for different
terms, yet you want to apply the
discount for the entire duration
of the subscription. Leave Term
Discount Level blank if you want
discount schedules applied
based on the term of each line
item.
Term Discount Tier SBQQ__TermDiscountTier__c Lookup (Discount Tier) Tier within the term discount
schedule used to discount this
line item.
Total Discount (%) SBQQ__TotalDiscountRate__c Formula (Percent) Total discount for this line item
including volume discount,
contracted discount, and
additional discount.
Total Discount (Amount) SBQQ__TotalDiscountAmount__c Formula (Currency) Total discount amount for this
line item including volume
discount, contracted discount,
and additional discount.
Unit Cost SBQQ__UnitCost__c Currency (14, 2) Cost for one unit of product
quoted on this line item.
Upgraded Asset SBQQ__UpgradedAsset__c Lookup (Asset) The asset that this quote line is
upgrading. When the quote is
contracted, this asset’s Usage
End Date field is populated to
indicate it's been retired.
Upgraded Quantity SBQQ__UpgradedQuantity__c Number (10, 2) Portion of this line item's prior
quantity upgraded to another
product.
187
Manage Your Quotes with CPQ Manage Your Bundles in the Configurator
SEE ALSO:
Custom Script Fields
188
Manage Your Quotes with CPQ Manage Your Bundles in the Configurator
189
Manage Your Quotes with CPQ Manage Your Bundles in the Configurator
• Required: The bundle is a laptop that has significant price and feature differences between a feature’s options, such as a $500
graphics card versus none. This configuration type ensures that your sales reps are less likely to skip past option selection and
configure an expensive quote in error.
Example: You’re setting up bundle products for several of your company’s laptop packages. Use the Configuration Type field to
provide an ideal buying experience based on the price and options for each of your laptops.
• Your laptop bundle has a video card feature with options for no video card, a $500 video card, and a $1,000 video card. You
sell primarily to enthusiast users who want the most powerful card, so the video card feature defaults to the $1,000 option.
However, you want to make sure users interested in a cheaper card don’t accidentally skip past option selection and configure
an expensive quote in error. Set your configuration event to Always so that users see the available video cards right away. They
can also change their selection at any point during the quoting process.
190
Manage Your Quotes with CPQ Manage Your Bundles in the Configurator
• Your laptop’s memory feature contains options for 8 GB, 16 GB, and 32 GB. The bundle defaults to the 8-GB option, which is
the cheapest, but your user can upgrade to more expensive options. You sell equal amounts of 8-GB, 16-GB, and 32-GB laptops,
so you don’t have a specific type of customer that you want to prioritize. You can set your configuration event to Add, Edit, or
Always.
• Your laptop has only one product option available for each feature. However, you still want to show the product options in
the quote line editor so your users can quickly review the laptop’s specifications and price. In this case, set your configuration
type to Disabled.
191
Manage Your Quotes with CPQ Product Rules
4. Select Enable Large Configurations. Salesforce CPQ will apply large configuration processing when configuring any of your org's
bundles products.
In Salesforce CPQ Summer '19 and later, you can also enable large configurations on specific bundle parents by selecting the product's
Enable Large Configurations field. We recommend enabling product-level large configurations so that Salesforce CPQ doesn't spend
longer loading times on small bundles that wouldn't otherwise hit governor limits. Users upgrading to Salesforce CPQ Summer '19
from an earlier version should add Enable Large Configurations to their product page layout.
SEE ALSO:
Apex Governor Limits
Product Rules
You can evaluate a product option, quote, or a quote line against user-made conditions and perform
EDITIONS
an action in response. Organize your conditions and actions in a product rule object.
All product rules contain related lists for Error Conditions, Actions, and Configuration Rules. Available in: All CPQ Editions
An Error Condition contains two sections: Information and Filter Information. Information defines
an object, a field on an object, or a variable to test. Filter Information defines a logical operator and
a value to test against. When Salesforce CPQ processes a product rule, it tests all the rule’s error conditions and evaluates whether they’re
true or false. It then considers the rule’s Conditions Met field when evaluating whether to fire an action. You can set Conditions Met so
that the rule fires when:
• All error conditions are true
• Any number of error conditions are true
• The error conditions evaluate to user-determined custom logic.
All rule types require at least one Error Condition.
Your use of Actions and Configuration Rules depends on the type of product rule you’re using.
Important: When you’re using features with the option selection method set to Dynamic, selected products aren’t considered
product options by product or price rules, unless the Dynamic feature is the child of a product option.
Product Actions
A product action performs an action on a product option, such as selecting or deselecting the option within its bundle, or hiding
the option from view. Product actions target options based on the parent product rule’s scope, conditions, and evaluation event.
You can also use product action fields to change the action’s target scope.
CPQ Validation Rules
Validation rules confirm that a quote’s product combinations or quote line field values match predetermined conditions. Users see
an error message and can’t save their product configuration or quote until they meet these conditions.
Alert Rules
Alert rules provide informational messages during configuration or pricing. Unlike a validation rule, alert rules let you save your
configuration or quote without having to change anything. They’re useful for providing suggestions on optimal but nonrequired
configurations and pricing processes such as best practices.
Selection Rules
Set up your product rules to automatically add, remove, hide, enable, or disable options in a bundle.
Filter Rules and Dynamic Bundles
Allow your sales reps to choose their own options in a bundle. You can use filter rules to filter the options they can choose from.
192
Manage Your Quotes with CPQ Product Rules
Product Actions
A product action performs an action on a product option, such as selecting or deselecting the
EDITIONS
option within its bundle, or hiding the option from view. Product actions target options based on
the parent product rule’s scope, conditions, and evaluation event. You can also use product action Available in: All Salesforce
fields to change the action’s target scope. CPQ Editions
A Product action target one or more product options in all quotes to which the parent product rule
applies. You can choose either one product option or use filtering logic to apply the action to a
group of products that fall within the filter. For example, you could target all products where the product name contains “US.”
Important: You can use product actions on only product rules with a Type field set to Selection.
Example: An IT hardware distributor has a catalog where several products have different US and UK versions. They would like a
quote setup where sales reps can choose which region's products are displayed. You can configure this beginning with the
following product rule.
Product Rule
Conditions Met: All
Scope: Product
Evaluation Event: All
Type: Selection
Active: Selected
Add two product actions to this rule. These actions use filter to automatically display all product with product names containing
“US” and hide all products with product names containing “UK.”
Product Action 1 - Show US Products
Type: Show
Filter Field: Product Name
Operator: Contains
Filter Value: US
Product Action 2 - Hide UK Products
Type: Hide & Remove
Filter Field: Product Name
Operator: Contains
Filter Value: UK
You can then create a second rule with action that shows all UK products and an action that hides all US products. This setup has
almost all the same values as your first product rule. Switch around “US” and “UK” in each action’s filter value and make sure that
the product rule has a fitting name.
193
Manage Your Quotes with CPQ Product Rules
Currency
A product action considers a product for evaluation only if the product has a matching currency.
Product
The product action performs the result of the Type field on this product. This product must be optional for at least one product
option. Use this field only for selection rules.
Product Action
The reference number for this product action.
Required
This field must be selected on product actions for selection rules with Type fields set to Add, Enable & Add, or Show & Add. When
the product rule fires in the quote line editor, Salesforce CPQ performs the selection rule on the product defined in the action’s
Product field.
This field must be deselected on product actions for all other types of selection rules.
Rule
The product rule that contains this product action.
Type
Use this field with selection rules and filter rules. Default Filter and Option filter control search logic for filter rules. All other values
determine which action a selection rule performs on a product option.
Add
Select a product option's selected checkbox. If the product option is hidden, this action won't show it in the configurator.
Remove
Deselect a product option's selected checkbox. If the product option is currently hidden, this action won't show it in the
configurator.
Enable
Allow users to select the checkbox for the product option.
Disable
Prevent users from choosing the product option's selection checkbox.
Enable & Add
Add a product option and allow users to choose its selection checkbox.
Disable & Remove
Deselect a product option's selection checkbox and make it unselectable.
Show
Show a product option. Its selection checkbox is unselected.
Hide
Hide a product option. While hidden, you can still use other product rules to select or deselect the product option's selection
checkbox.
Show & Add
Show a product option and select its selection checkbox.
194
Manage Your Quotes with CPQ Product Rules
Filter Fields
Use filter fields to apply a selection rule or a filter rule to a filtered set of product options. You can use filter fields with selection rules to
apply the selection action to only certain product options. Use filter fields with filter rules to control a list of products that appear in the
product option selection page when a sales rep configures a bundle. When they select one of those products, Salesforce CPQ adds it to
the bundle as a product option.
Filter Field
Choose a Product field that you want to filter your product options by.
Filter Value
Choose the value on your filter field for filtering your product options. The filter field must be a Product field. Selection rules use the
filter field and filter value to apply the selection type to all product options that match product records.
For example, let's say you sold a custom laptop bundle with a feature for the laptop's case color. You could set your filter field to
your product's custom Color field, your operator Equals, then set the filter value to Silver. When you configure your bundle, the case
color feature would show only product options where the Color field was set to Silver.
Operator
This logical operator determines how the filter rule evaluates the filter value.
Value Attribute
If your Value Field is a global configuration attribute, use this field to select one of its attributes.
Value Object, Value Field, and Value Attribute
Only filter rules can use value objects, value fields, and value attributes.
Use the value object and value field to filter product options based on a predetermined value rather than a value that you manually
set in the Filter Value field. This setup lets the filter rule to act like a configuration rule and filter based on a field and value that the
sales rep chooses on the quote, product, or configuration attribute. For example, your quote has a Deployment Type field that the
sales rep sets during quoting. If they pick a deployment type of Premium, the filter rule could evaluate your product feature so that
it only shows product options that also have a Premium deployment type. In this case, you'd need deployment type fields on that
feature's product options and their related products. You'd also need a value object of Quote, a value field of Deployment Type, and
an operator set to Equals.
If your value field is a global configuration attribute, use the Value Attribute field to select one of its attributes.
195
Manage Your Quotes with CPQ Product Rules
the user tries to save. Set the text for this error message in the product rule’s Message field. The message appears, and users can’t save
the product configuration or quote until the product rule’s error conditions evaluate to true.
Example: You want your quotes to contain more or the same quantity of toner than printers. Your product rule in this case tests
whether the quantity of toner is greater than or equal to the quantity of printers on your quote. Start by creating a summary variable
for your toner quantity and another summary variable for your printer quantity. Then create a product rule with the following
fields.
• Product Rule Name: Toner Quantity Greater or Equal to Printer Quantity
• Conditions Met: All
• Scope: Product
• Evaluation Event: Always
• Type: Validation
• Message: Toner quantity must be greater than or equal to printer quantity.
Next, create an error condition.
• Tested Variable: Toner Quantity
• Operator: Less Than
• Filter Type: Variable
• Filter Variable: Printer Quantity
Now, if a user adds more printers than toner in the quote line editor, they see the message you set when they try to save.
196
Manage Your Quotes with CPQ Product Rules
Important: Validation rules run immediately only for options on the same level as the option or attribute that prompted an Apply
Immediately event. To apply your product rule to a different level, save the configuration of the product associated with your
configuration rule.
Example: You sell a bundle with three total levels. The quantity of all product options throughout the bundle must be less than
or equal to five. Your validation rule contains a configuration rule that returns an error if the total product quantity is greater than
five. For this example, we refer to the three levels of your bundle as grandparent, parent, and child.
Table 33: Parent Bundle Condition Level = 1 and Child Bundle Condition Level = 1
Grandparent Quantity Parent Quantity Child Quantity Result
2 2 2 Validation Fails
1 2 2 Validation Passes
2 2 1 Validation Passes
In the first case, the validation fails because the configuration rule considers the grandparent, parent, and child quantities, for a
grand total of six. The second and third cases validate because the configuration rule considers the grandparent, parent, and child
quantities for a grand total of five.
Table 34: Parent Bundle Condition Level = None and Child Bundle Condition Level = 1
Grandparent Quantity Parent Quantity Child Quantity Result
2 2 2 Validation Passes
2 2 4 Validation Fails
4 2 2 Validation Passes
In the first and third case, the validation passes because the configuration rule considers the parent and child quantities, for a
grand total of four. The validation fails in the second case because the parent and child quantities add up to six.
Table 35: Parent Bundle Condition Level = 1 and Child Bundle Condition Level = None
Grandparent Quantity Parent Quantity Child Quantity Result
2 2 2 Validation Passes
4 2 4 Validation Fails
2 2 4 Validation Passes
In the first and third case, the validation passes because the configuration rule considers the parent and child quantities, for a
grand total of four. The validation fails in the second case because the parent and child quantities add up to six.
Table 36: Parent Bundle Condition Level = None and Child Bundle Condition Level = None
Grandparent Quantity Parent Quantity Child Quantity Result
2 2 2 Validation Passes
4 2 4 Validation Passes
197
Manage Your Quotes with CPQ Product Rules
2 6 2 Validation Fails
In the first three cases, the validation passes because the configuration rule considers only the parent quantity of 2. The validation
fails in the fourth case because the parent quantity is six.
Alert Rules
Alert rules provide informational messages during configuration or pricing. Unlike a validation rule,
EDITIONS
alert rules let you save your configuration or quote without having to change anything. They’re
useful for providing suggestions on optimal but nonrequired configurations and pricing processes Available in: All CPQ Editions
such as best practices.
To configure a product rule as an alert rule, set the Type field to Alert and the Evaluation Event field
to Save. When an alert rule fires and finds a configuration value or quote value that matches its error condition, users see an error message.
They can revise their configuration or quote, or continue without making changes.
Example: Your company sells server hardware, including power supply units. Company best practices recommend sales reps
sell at least one 208-V fan with your PSUs. However, you don’t want to require this sale via a validation rule in case your customers
have this fan or an equivalent model. In this case, you can use an alert rule to remind sales reps that 208-V fans are recommended.
From there, reps can check to see if their customer has the necessary fan. You need two summary variables: one that outputs the
count of PSUs in your quote and one that outputs the count of fans.
Product rule
• Conditions Met: Custom
• Scope: Product
• Evaluation Event: Always
• Type: Alert
• Active: Selected
• Message: We recommend the 208-V fan for this PSU.
• Advanced Condition: 1 AND 2
Error Condition 1
• Tested Variable: PSU Count
• Operator: greater than
• Filter Type: Value
• Filter Value: 0
Error Condition 2
• Tested Variable: Fan Count
• Operator: equals
• Filter Type: Value
• Filter Value: 0
198
Manage Your Quotes with CPQ Product Rules
Selection Rules
Set up your product rules to automatically add, remove, hide, enable, or disable options in a bundle.
EDITIONS
Selection rules let you adjust product options in a bundle on your quote. For example, let’s say you
sell a reporting software bundle. You can sell training license only after your user buys a software Available in: All CPQ Editions
license, both of which are product options in your bundle. In this case, you can create a selection
rule that initially hides the Reporting Software Training product option from the bundle. The
configurator then shows Reporting Software Training only when the sales rep selects the bundle’s Reporting Software License option.
Selection rules use configuration rules to specify a bundle to target. The configuration rule’s Product field represents the bundle you’re
targeting. You can also set your configuration rule’s product field to a specific bundle so your product rule can target that bundle across
multiple quotes.
Only product selection Load rules run on the option lookup page.
Selection rules also use actions alongside error conditions. An action represents the step your selection rule performs when the rule
meets its error conditions. When your rule meets its conditions, it checks the action for a product to target. This product is the product
option you want to change within the bundle you defined in the configuration rule. The rule then performs the step defined in the
action’s Type field. You can select from the following action types:
Type Description
Add Add the specified option.
Disable and Remove Deselect an option and disable it so users can’t select it.
Example: Let’s jump back to the example at the beginning of this topic. Before making your rule, create a summary variable to
count the quantity of Software Reporting License product option. Then, use that variable in your rule’s error condition.
199
Manage Your Quotes with CPQ Product Rules
Example: Your computer design company has a quote with two quote line groups: one for a red monitor package and one for
a silver monitor package. You control these package types with a custom Color field on the quote line group. Users who buy either
package can add a monitor bundle, which contains a product option for the monitor stand. You want a product rule that adds a
support stand for every monitor added to the red package:
200
Manage Your Quotes with CPQ Product Rules
Important: Selection rules run immediately only for options on the same level as the option or attribute that prompted an Apply
Immediately event. To apply your product rule to a different level, save the configuration of the product associated with your
configuration rule.
Example: You sell a software suite with two training level options. Option 1 is basic training, which your bundle selects by default.
Option 2 represents admin training. It’s a configurable option that lets users select from three admin training levels. Customers
who select any admin training level don’t require basic training, so the selection rule removes Option 1 from the suite.
You can break down this suite into the following bundle layout.
• Parent Product: software suite
• Children: training types
• Grandchildren: admin training levels
If a user selects any of the admin training levels, Salesforce CPQ should deselect basic training. This setup means that your conditions
test against the grandchildren, and the actions apply to the children. Create a selection rule with the following setup. The
configuration rule targets the software suite.
• Child Bundle Condition Level: 1
• Parent Bundle Condition Level: None
• Child Bundle Action Level: None
If your software suite required selecting or deselecting license add-ons based on the selected training level, your conditions test
against the children and apply the actions to the grandchildren.
• Child Bundle Condition Level: None
• Child Bundle Action Level: 1
201
Manage Your Quotes with CPQ Product Rules
The default functionality tests against children, so you don’t test any other levels. However, you need another level of consideration
from the parent product, because your actions apply to its grandchildren.
Important: If Percent of Total is added as an option to Dynamic features, that product’s reconfiguration isn’t supported on the
product configuration page.
202
Manage Your Quotes with CPQ Discounts
• You can configure selection rules to perform an action on their targeted product options based on the selection of other options
and configuration attributes. This process means that users can receive immediate feedback about valid and invalid operations
instead of receiving it only when they save their configuration. Processing selection rules in real time is useful for making a guided
configuration: You can make configuration attributes in the form of questions. Salesforce CPQ makes a configuration based on user
response, possibly by selecting multiple options in one step.
• To make a selection rule that functions in real time, select Apply Immediately and System on the product option that you want
to function in real time. We recommend setting your selection rule’s Evaluation Event field to Always, ensuring that the real-time
processing happens throughout anything you do in the quote line editor.
• Date fields in your error condition’s filter value must use the format YYYY-MM-DD 00:00:00.
• Configurator-scoped product rule conditions can’t use quote line summary variables.
• Configurator-scoped product rules of type Validation/Selection can’t be evaluated against dynamic features.
• Product-scoped product rules can’t use Quote Line as a tested object in their error conditions.
• Salesforce CPQ doesn’t support selection rules that add products from different price books. Instead, create unique selection rules
to handle product selection from different price books.
• When you’re using features with the option selection method set to Dynamic, selected products aren’t considered product options
by product rules or price rules.
• Quote-scoped product rules can’t use Product Option or Configuration Attributes as tested objects in their error conditions.
• Quote-scoped product rules run only during product selection or bundle configuration. If the product rule’s error condition is based
on quote or quote line data, Salesforce CPQ doesn’t evaluate the error condition until quote lines are added, which can require a
second save during product bundle reconfiguration or product selection.
• When a quote-scoped product rule adds a product, the product is last in the quote line’s numbering order. If the price rule evaluates
multiple quote lines, the quote line’s number can affect price rule evaluation.
• Quote-scoped product selection rules add a product to a quote only one time. If the product exists on the quote or the product is
added to the quote when the quote-scoped product selection rule is applied, the rule doesn’t add the product.
Discounts
Salesforce CPQ provides several ways to discount prices for your customers. You can set discounts
EDITIONS
across an entire quote or on individual products and product groups.
Available in: All CPQ Editions
Discount Schedules
Use discount schedules to create volume discounts based on quantity or terms for your quote
lines. Set the quantity or term ranges in tiers of percentages or amounts of currency.
Pricing Guidance
Pricing guidance uses Salesforce Analytics to create recommended discounts based on historical pricing trends. You can then assign
pricing guidance to your products. When a sales rep adds a product with pricing guidance to their quote, they can see the target,
norm, and floor discount recommendations in the quote line editor.
Distributor Discounts Fields
Distributor discounts let you apply extra discounts to your quotes and quote lines based on your opportunity’s distributor. Use
specific fields on quotes to manage distributor discounts.
Target Price for Quotes and Groups
Apply proportional discounts across your quote so the quote total matches a certain amount. This process is useful if your customer
has a specific budget that they can’t exceed.
203
Manage Your Quotes with CPQ Discounts
Compound Discounts
While most discount schedules define discounts for a quantity range, a compound discount provides a discount that automatically
changes for every unit of your product. Compound discounts help you define a product discount that scales based on each unit of
quantity for your product.
Discount Categories
Use the discount category object to store values that you want to apply via rules to one or more products. After you associate the
discount category with your products, you can use a product rule or price rule to apply that value to those products.
Discount Schedules
Use discount schedules to create volume discounts based on quantity or terms for your quote lines.
EDITIONS
Set the quantity or term ranges in tiers of percentages or amounts of currency.
Discount schedules provide tier-driven discounts to the list price of your quote lines. For example, Available in: Salesforce CPQ
you can sell routers for $25 each, but apply the following discounts based on how many routers a Summer ’14 and later
customer buys. In this case, you create a discount schedule with three tiers by clicking Edit Tiers.
• Tier 1: 10% discount for 1–9 products
• Tier 2: 20% discount for 10–19 products
• Tier 3: 30% discount for 20+ products
Use the Type field to determine how Salesforce CPQ applies the discount.
• Range: Products are discounted at the rate of whatever tier applies to the quoted quantity. Let’s say you ordered 30 products under
the discount schedule in the first two paragraphs. All 30 units receive a 30% discount. Only range-type discount schedules can be
term discount schedules.
• Slab: Units within a certain bound receive discounts equal to their tier’s discount value. Let’s say you ordered 30 products under the
discount schedule in the first two paragraphs. Units 1 through 9 receive a 10% discount, units 10 through 19 receive a 20% discount,
and units 20 through 30 receive a 30% discount. Slab discount products aren't allowed on partial orders.
The Discount Unit field defines the type of discount applied to your quote line:
• Percent: Applies the discount as a percentage of your quote line’s list price.
• Amount: Applies the discount as an amount taken off your quote line’s list price. This value is useful when you want to arrive at an
exact discounted price without calculating discount percentages that could contain many decimals.
If a product falls under a discount schedule, a calendar icon appears on any of its quote lines in the quote line editor. You can hover over
the icon to show the discount schedule’s name, discount unit, and all its discount tiers.
Discount Tiers
A discount tier represents a single discount level for your discount schedule. For example, 1 through 10 products receive a 10% discount.
You can create a tier in your discount schedule’s Discount Tiers related list.
The Lower Bound value is the smallest value needed for the discount. The Upper Bound value is the highest value needed for the discount.
However, the Upper Bound value isn’t inclusive. Make sure that your upper bound is one digit higher than the value you want to include.
For example, if you want your tier to include values 1 through 10, set your Upper Bound value to 11.
If you select the Allow Override field on your discount schedule record, sales reps can edit Discount Tier fields within the quote line
editor.
204
Manage Your Quotes with CPQ Discounts
Note:
• Sales reps with read-only access to discount tier and its fields can create discount tiers by cloning an existing record. To prevent
them from creating or modifying discount tiers, remove the Clone button from the page layout or remove the sales rep's user
access to the EditDiscountTiers custom page.
• For block pricing, the upper bound and lower bound lengths and decimals places are (12,0). However, for the Quote Line
Quantity field (SBQQ__Quantity__c), the decimal places are (10,2). An error occurs when the customer inputs a quantity in
the billions: “Quantity: value outside of valid range on numeric field: 1.0E10.”
SEE ALSO:
Knowledge article: Updates to CPQ Discount Schedules and Block Price Tiers Can Modify Saved Quotes
205
Manage Your Quotes with CPQ Discounts
term of 5 months, it would fall in the first tier. Use this feature to control discount schedule pricing based on a subscription product’s
Term instead of its Quantity. Only range-type discount schedules can be term discount schedules.
If you’re using a term discount schedule, we recommend naming your tiers by term periods for ease of reference.
Note:
• Salesforce Billing doesn’t support invoicing an amendment order product related to a product that has a term discount
schedule.
• Amendment quotes don’t support quote lines for a product that has a term discount schedule and a slab discount schedule.
• Term discount schedules and volume discount schedules apply in parallel based on List Unit Price.
If you applied this schedule to a product with a 12-month term, it receives a 20% discount.
Example: You have a product with the following pricing and discount values.
• Price Book Entry Unit Price: $10
• Block Tier 1: 1–11 = $100
• Block Tier 2: 11–21 = $180
• Slab Tier 1: 21–31 = 10% discount
• Slab Tier 2: 31–41 = 20% discount
• Slab Tier 3: 41+ = 25% discount
When you order this product, Salesforce CPQ creates this tiered price schedule.
• Price Tier 1: 1–11 = $100 flat fee
• Price Tier 2: 11–21 = $80 flat fee. This price represents the difference from Block Tier 1.
• Price Tier 3: 21–31 = $9 per unit. This price represents the $10 unit price with Slab Tier 1’s 10% discount.
• Price Tier 4: 31–41 = $8 per unit. This price represents the $10 unit price with Slab Tier 2’s 20% discount.
206
Manage Your Quotes with CPQ Discounts
• Price Tier 5: 41+ = $7.50 per unit. This price represents the $10 unit price with Slab Tier 3’s 25% discount.
When you order 60 units of the product under this price schedule, Salesforce CPQ prices the order products as follows.
• Units 1 10: $100
• Units 11–20: $80
• Units 21 30: $90 (10 units at $9.00 each)
• Units 31–40: $80 (10 units at $8.00 each)
• Units 41–60: $150 (20 units at $7.50 each)
Important: In the quote line editor, the discount schedule editor can show only the standard Quantity field
(SBQQ__Quantity__c). If the discount schedule’s Quote Line Quantity Field (SBQQ__QuoteLineQuantityField__c) references
a different quantity field, Salesforce CPQ still uses Quantity for showing the discount schedule tier, while using the value
of Quote Line Quantity Field for calculations. If Quote Line Quantity Field has a null value, Salesforce CPQ also uses Quantity
for calculation.
207
Manage Your Quotes with CPQ Discounts
When you save in the quote line editor, Salesforce CPQ creates quote lines after the save action. Therefore, if you add a product with a
discount schedule, edit the discount schedule, then save the quote, Salesforce CPQ doesn’t populate the discount schedule’s Quote
Line field. If you want the discount schedule’s Quote Line field to populate consistently, add your product first, save the quote, and then
edit the discount schedule.
Example: Your company sells fabric bolts at a cost of $50 per bolt. You’ve applied the following discount schedule to your Fabric
Bolt product’s Cost Schedule field.
11–20 11 21 15
21–30 21 31 20
If your sales rep quotes 12 fabric bolts and applies a $10 markup, you end up with a net total of $630.$50 * .85 = $42.50
+ $10 = $52.50 * 12 = $630.00
208
Manage Your Quotes with CPQ Discounts
209
Manage Your Quotes with CPQ Discounts
Range
The 10 products fall in discount tier 2 at 10%.
Price = (Total Quantity) * List Price * (1-10%)
Price = 10 * 10 * 90% = $90
Note:
• Custom fields aren’t supported for discount schedules that include cross-orders.
• Targeting an amendment quote line with the same custom-quantity slab discount schedule that targeted the original quote
line on the original quote isn’t supported.
210
Manage Your Quotes with CPQ Discounts
• If you apply block pricing and a discount schedule to a product, and the product’s quantity goes outside the upper bound of both,
Salesforce CPQ sets the quote line’s net total price to 0.
• The upper bound of a tier must be one unit above the range you want to include. For example, if you want your tier to include
quantities of up to 30, set its upper bound to 31.
1. In your product record, set up your block price tiers.
To use discount schedules and block prices on the same product, your last block price tier requires an upper bound.
2. Create a discount schedule and associate it with the same product record.
The lower bound of the first discount tier must be exactly one unit above the upper bound of the highest block price tier. These
bound values can't overlap.
Example: Your company sells wireless routers with a list price of $100 and the following block prices. Customers usually don’t
order quantities of over 60, but you want to provide a percentage-based range discount schedule to accommodate customers
who do.
2 21 41 $3,500
3 41 61 $4,750
2 66 null 20
Let’s see how Salesforce CPQ prices a few quote lines for your routers based on their quantity.
211
Manage Your Quotes with CPQ Discounts
Constraint Field
If you’re using cross-order discount schedules, limit the records Salesforce CPQ considers to records with matching fields. The field
must exist on both the quote line being evaluated and the subscriptions and assets the discount schedule evaluates against. The
constraint field can’t be a formula field. This feature doesn’t work with amendments, as amendments don’t look up to other orders.
Cross Orders
Discount schedules will include previously purchased quantities of a line item for a given customer. For example, if a customer
already bought 5 laptops, and the current quote for this customer contains 10 laptops, Salesforce CPQ uses a quantity value of 15
when evaluating the current quote line against volume discount tiers. Salesforce CPQ evaluates this field only on primary quotes.
Subscriptions or assets from expired or inactive contracts aren’t included in quantity calculation for a quote line with a cross-order
discount schedule.
Cross Products
This discount schedule combines the quantities of all products on the quote when evaluating line quantity against volume discount
tiers.
212
Manage Your Quotes with CPQ Discounts
Description
Enter a brief description so sales reps know the purpose of this discount schedule.
Discount Unit
Choose whether this discount schedule applies discounts as a percentage or as a static amount.
Excluded Pricebook IDs
This discount schedule does not apply discounts to products in the selected pricebook.
Include Bundled Quantities
When the discount schedule evaluates a bundle product, include the quantities of the bundle’s product options in the aggregation
scope.
Order
The order that the discount schedule applies to.
Order Product
The order product that the discount schedule applies to.
Original Discount Schedule
The discount schedule that was overridden to create the current discount schedule.
Price Scale
Decimal places for prices calculated by the discount schedule.
Controls the number of decimal places that appear in the Discount Schedule Editor within the quote line editor.
Quote Line Quantity Field
Field used to calculate discount schedule pricing.
User Price for Amount
Sets the user-defined discount schedule’s discount unit to Price.
User Defined
Shows whether the discount schedule was created by an end user or by an admin.
Price Book
Apply this discount schedule to only a product from this price book. Define the product in the discount schedule’s Product field.
Product
Apply this discount schedule to only this product, from the price book defined in the discount schedule’s Price Book field.
Quote
The quote containing a quote line with this discount schedule.
Quote Line
The discount schedule applies to this quote line. Salesforce CPQ uses this field to track the related quote line only when sales reps
can edit the line’s discount schedule while the Override Behavior field is Current Tier Only or All. Otherwise, the discount schedule
still applies to the quote line, but this field doesn’t show a value.
Salesforce CPQ assigns this field a quote line lookup only after sales reps add a product and save the quote, then edit the quote line’s
discount schedule or add a new discount schedule, and then save the quote again.
Override Behavior
Defines whether sales reps can edit this discount schedule’s discount tiers in the quote line editor.
Schedule Name
We recommend giving your discount schedule a name that makes it easy to tell apart from your other discount schedules.
Type
Choose how this discount schedule applies its discounts to a quote line’s price.
213
Manage Your Quotes with CPQ Discounts
• Range: Products are discounted at the rate of whatever tier applies to the quoted quantity. Let’s say you ordered 30 products
under the discount schedule in the first two paragraphs. All 30 units receive a 30% discount.
• Slab: Units within a certain bound receive discounts equal to their tier’s discount value. Let’s say you ordered 30 products under
the discount schedule in the first two paragraphs. Units 1 through 9 receive a 10% discount, units 10 through 19 receive a 20%
discount, and units 20 through 30 receive a 30% discount. Slab discount products are not allowed on partial orders.
Pricing Guidance
Pricing guidance uses Salesforce Analytics to create recommended discounts based on historical
EDITIONS
pricing trends. You can then assign pricing guidance to your products. When a sales rep adds a
product with pricing guidance to their quote, they can see the target, norm, and floor discount Available in: Salesforce
recommendations in the quote line editor. CPQ+ Summer ’19 and later
When sales reps add a product with pricing guidance to their quote, the quote line's icon lets
them open the Pricing Guidance detail page. The detail page shows discount values based on
historical guidance and pricing strategist revision. The target discount is highlighted as the ideal discount, while the norm and floor
discounts give the sales rep context when choosing whether to accept the target discount.
Note: To indicate that there's no discount, leave the discount field empty. Don’t use 0% for the discount value.
214
Manage Your Quotes with CPQ Discounts
Target
The lowest ideal discount. This value maximizes the sale price for the sales rep while still providing customer purchase incentive
through a discount.
Norm
A mid-range discount that represents a middle ground between the target and floor discounts. Many admins set the norm discount
close to the median discount.
Floor
The highest recommended discount. This value represents a generous discount used only in special circumstances, such as a final
incentive to close a deal or to prevent the attrition of a long-time customer.
If the sales rep clicks Accept Recommended Price, Salesforce CPQ applies the target discount in the Additional Discount field on their
quote line. The sales rep manually enters the median or floor discounts. Based on your org's approval settings, discounts from pricing
guidance may still require further approval.
215
Manage Your Quotes with CPQ Discounts
216
Manage Your Quotes with CPQ Discounts
The Filters section (1) lets you define parameters for the quote lines you want to evaluate. In this case, the pricing analyst is filtering
quote lines for products named Workstation, with quantities of 0 or greater, on accepted quotes created within the last 6 years. Salesforce
CPQ supports only the predefined fields as filter options.
The Guidance Tiers section (2) lets you define percentages for your target, norm, and floor discounts. Each discount is a percentage of
the median discount percentage for a quantity range. For example, the pricing analyst sets the target discount as -10% from the median.
If a quote line quantity’s median discount is 12%, the target discount is 10.8%.
Note: You can apply positive or negative percentages away from the median for the target, norm, and floor discount percentages.
We recommend making the target and norm discounts lower than the median, and making the floor discount higher than the
median.
The Pricing table (3) shows your median discount and quantity ranges based on your filters, and your suggested discounts based on
your Discount Ranges. When you update a filter or discount range and apply the changes, Salesforce CPQ updates the Pricing table
accordingly.
• Each row represents one pricing tier for your pricing guidance. When a sales rep loads pricing guidance in the quote line editor,
Salesforce CPQ shows them the suggested discounts for the pricing tier that contains their quote line quantity.
• Discounts apply up to, but not including, the value in the upper bound column. For example, the first row applies to quote line
quantities of 11 through 19, and the second row applies to quote line quantities of 20 through 29.
• Salesforce CPQ initially creates tiers so that each tier evaluates at least 30 total quote lines. The quote line with the lowest quantity
sets the Quantity Lower Bound and the quote line with the highest quantity sets the Quantity Upper Bound.
• If the total number of evaluated quote lines is below 30, Salesforce CPQ includes them all in one tier. If there's an overlap between
tiers, Salesforce CPQ combines their quote lines into one tier. For example, during initial evaluation, your first has 30 quote lines each
with a quantity of one. The second tier has 23 quote lines with quantities of one and two. Since there's overlap of quantity-one quote
lines, Salesforce CPQ combines them into one tier that evaluates 53 total quote lines. The tier has a lower bound 1 and an upper
bound of 3.
• The median discount represents the median of Total Discount field values for all quote lines in a quantity bound range.
217
Manage Your Quotes with CPQ Discounts
Example: Here’s a simple report template that groups the rows by the Guidance Used field.
Group Rows
Guidance Used
Columns
Product Name
Additional Discount (%)
Guidance
Viewed
Quote: Quote Number
Created by: Full Name
Last Modified By: Full Name
218
Manage Your Quotes with CPQ Discounts
Let’s run this report in a sample org. Since we grouped rows by the Guidance Used field, the report shows us quote lines where
pricing guidance wasn’t available (1), where pricing guidance wasn’t used (2), and where pricing guidance was used (3).
Important: Analytics Integration users in Einstein Analytics also require a CPQ license in order to access CPQ objects such as the
quote and quote line.
219
Manage Your Quotes with CPQ Discounts
1. If you haven’t already enabled Analytics, from Setup, in the Quick Find box, enter Analytics. Select Getting Started, and then
select Enable Analytics.
2. Enable Data Sync and Connections, and Analytics Templates.
a. From Setup, in the Quick Find box, enter Analytics, and then select Settings.
b. Select Enable Data Sync and Connections and Enable CRM Analytics.
Important: You must also turn on Enable Pricing Guidance in the CPQ package settings.
6. To show sales reps the suggested target discount before they open the Pricing Guidance page, add the Guidance field to the quote
line’s Line Editor field set.
This field shows the Target discount for the pricing guidance tier that covers the quote line’s quantity. Sales reps can use the Guidance
field to quickly see the suggested Target discount before they open the Pricing Guidance page.
7. Assign the Analytics Template Administration permission set license to admins who work with pricing guidance.
8. For Salesforce Classic users, add the Create Pricing Guidance tab to your tab list. The Create Pricing Guidance tab is available (in
Classic and Lightning) only when you have a CPQ Einstein Analytics license and package or CRM Analytics Plus license and package.
SEE ALSO:
Considerations for Pricing Guidance
220
Manage Your Quotes with CPQ Discounts
To quickly access the Create Pricing Guidance page in Salesforce Classic, add it as a custom object tab.
You can also manually assign pricing guidance by going to a product and providing a value for its Pricing Guidance field. Multiple
products can look up to the same pricing guidance.
221
Manage Your Quotes with CPQ Discounts
b. Provide a description and a summary. The description is a brief overview of the guidance that you and other admins can reference
while managing Pricing Guidance records. Use the Summary field to provide a detailed explanation of the parameters that you
evaluated to determine the discounts and boundaries of your pricing tiers.
c. Provide an explanation for your sales reps. They see the explanation when they open this Pricing Guidance on their quote in the
quote line editor.
d. Set your pricing guidance as active. Inactive Pricing Guidance records don't appear for your sales reps in the quote line editor.
3. Assign your pricing guidance to a product’s Pricing Guidance field. You can associate a pricing guidance record with more than one
product.
222
Manage Your Quotes with CPQ Discounts
SEE ALSO:
Enable Pricing Guidance in Salesforce CPQ
Sharing Views
• Pricing Guidance views must be shared manually. Go to Analytics Studio, navigate to the dashboard, and share the view with other
users.
Renewals
• The pricing guidance icon doesn't appear on renewed quote lines until the first time the renewal quote is calculated. This way, the
renewed quote line's pricing guidance can evaluate pricing guidance record or product updates made since the original quote.
• If a sales rep accepts pricing guidance and renews the quote line, the renewal quote line inherits the original quote line's Additional
Discount.
223
Manage Your Quotes with CPQ Discounts
224
Manage Your Quotes with CPQ Discounts
225
Manage Your Quotes with CPQ Discounts
226
Manage Your Quotes with CPQ Discounts
If an admin enabled pricing guidance for a product in your quote, the guidance appears as the Available in: Salesforce
icon in quote lines for that product. CPQ+ Summer ’19 and later
1. When you see the icon on one of your quote lines, click it to open pricing guidance.
Salesforce CPQ shows the pricing guidance for your quote line. Review your suggested discounts.
• The target discount represents an ideal discount percentage that supports customer purchase without discounting your quote
line too heavily.
• The norm discount represents an average discount for this product based on historical pricing trends.
• The floor discount represents a high discount only for special circumstances, such as a final incentive to close a deal or to prevent
the attrition of a long-time customer.
Example:
• Additional discounts may require approvals based on your org's approval settings.
• Admins often set up pricing guidance so that suggested discounts vary as the quote line's quantity changes. If you edit your quote
line's quantity and reopen pricing guidance, you may see different suggested discounts. If you already accepted a discount and edit
your quote line's quantity, your Additional Discount may also change.
• If a product has pricing guidance and a discount schedule, the quote line editor always uses pricing guidance and ignores the
discount schedule, even if the guidance is inactive.
227
Manage Your Quotes with CPQ Discounts
Distributor Discount
Admins can manually define a percentage for this field. Or, they can create a workflow rule that automatically provides a value based
on the quote’s Distributor field. By default, all quote lines inherit the value of the quote’s distributor discount. However, you can
change the quote line’s distributor discount to override the value passed from the quote’s distributor discount.
Salesforce CPQ applies distributor discounts to the quote’s partner price when the quote line price is calculated. The result of this
calculation is applied to the quote line’s net unit price.
If you don’t see the Distributor and Distributor Discount fields on the Quote page layout, or the Distributor Discount field on the Quote
Line page layout, check with your admin.
Note: If you want to allow sales reps to edit distributor discounts in the quote line editor, add Distributor Discount to the quote
or quote line’s Line Editor field set.
Note:
• The target customer amount is a unit-based discount. Quote line items with large quantities don’t always get an exact discount
value. Salesforce CPQ looks for a line with a quantity of one and then allocates the difference. If no lines have a quantity of one,
your amount can be off by one or two units of your smallest currency unit. To avoid this discrepancy, add a discount product
to your quote.
• Salesforce CPQ applies the discount for target customer amount in real time only when the Pricing and Calculation package
setting Calculate Immediately is set to True. Otherwise, click Calculate or Save in the quote line editor to apply the discount.
• The target customer amount behavior changes when you use the ApplyAdditionalDiscountLast special field with other
discounting methods. For example, let’s say you’re using target customer amount and a partner discount while
ApplyAdditionalDiscountLast is active. In this case, Salesforce CPQ applies the partner discount before applying the discount
that’s needed to reach the target customer amount.
• A target customer amount and an additional discount applied at the same time on the quote header isn’t supported.
• Target Customer Amount doesn’t calculate correctly when Percent of Total product included in the quote is marked as
Non-Discountable.
228
Manage Your Quotes with CPQ Discounts
Compound Discounts
While most discount schedules define discounts for a quantity range, a compound discount provides
EDITIONS
a discount that automatically changes for every unit of your product. Compound discounts help
you define a product discount that scales based on each unit of quantity for your product. Available in: Salesforce CPQ
You define a compound discount as a percentage value on your product’s Compound Discount Spring ’16 and later
(%) field. Then, Salesforce CPQ calculates the value of a compound-discounted quote line using
the following formula.
Discount Percent = 1 / (quantity ^ (compound discount value / 100))
Example: Your company sells a wireless router priced at $100 per unit, with a compound discount of 25%. Let’s look at a few
prices for this router based on quote line quantity. Assume that this quote has a decimal precision value of 2.
2 $84.09 $168.18
5 $66.87 $334.35
10 $56.23 $562.30
25 $44.72 $1,118.00
Discount Categories
Use the discount category object to store values that you want to apply via rules to one or more
EDITIONS
products. After you associate the discount category with your products, you can use a product rule
or price rule to apply that value to those products. Available in: All CPQ Editions
A discount category acts as a storage object that can hold custom fields. Reference one of those
fields in a product rule or price rule and use it on any product that has a lookup to your discount
category.
You can create any kind of custom field on a discount category. We’ve shipped the discount category object with a Max Discount %
field. This number field doesn’t perform any action on its own. However, you can use it with a product rule or price rule to enforce a
value on all related product fields.
Example: Let’s say you want to make sure the Additional Discount field on several of your products doesn’t rise above 30%.
Create a discount category object where Max Discount % is set to 30. Then associate that discount category with all the products
where you want the additional discount constrained.
Discount Category
• Name: Enforce 30 Percent Max Discount
• Max Discount %: 30
Next, create a price rule with a formula that retrieves the Max Discount % value from the Max Discount % field on your discount
category. The price rule checks the Additional Discount field of all products that look up to your discount category. The price rule
then injects the Max Discount % value to any of those products where the Additional Discount value is higher than the Max
Discount % value. Here’s one way to make this type of price rule.
229
Manage Your Quotes with CPQ Price Rules
Price Rule
• Price Rule Name: Discount Category
• Evaluation Scope: Calculator
• Calculator Evaluation Event: On Calculate
• Conditions Met: All
• Active: Selected
• Evaluation Order: 1
• Lookup Object: SBQQ__DiscountCategory__c
Price Rule Lookup Query
• Tested Object: Quote Line
• Tested Field: SBQQ__Discount__c
• Operator: Greater Than
• LookupField: SBQQ__MaxDiscountRate__c
Price Action
• Target Object: Quote Line
• Target Field: Discount (%)
• Rule Lookup Object: SBQQ__DiscountCategory__c
• Source Lookup Field: SBQQ__MaxDiscountRate__c
Find products where you want the 30% maximum discount enforced. Then make sure that their Discount Category field looks up
to Enforce 30 Percent Max Discount.
Price Rules
Price rules automate price calculations and update quote line fields. This feature is useful if your
EDITIONS
business contains products that change in response to the presence of other products on your
quote. Available in: All Salesforce
Price rules inject a static value, field value, or summary variable into a quote or quote line field. For CPQ Editions
example, create a price rule so that the quantity of maintenance kits in your quote is always twice
the quantity of that quote’s printers. When a customer changes the printer quantity and saves the
quote, Salesforce CPQ activates the price rule and updates the maintenance kit quantity.
Price rules can target the configurator or the quote line editor’s calculator. If you target the calculator, you can set the Calculator Evaluation
Event field to apply the price rule:
• Before calculation
• After calculation
• During calculation
• Or during any combination of the above three
To learn more about events that trigger calculations, check out The CPQ Quote Calculation Sequence.
If you target the configurator, you can set the Configurator Evaluation Event field to apply the price rule:
• When the user saves
• When the user edits the bundle and also when they save
230
Manage Your Quotes with CPQ Price Rules
The price rule record contains Price Rules, Price Conditions, and Price Actions.
Note: Sales reps with read-only access to price rules and its fields can create price rules by cloning an existing record. To prevent
them from creating or modifying price rules, remove the Clone with Related button from the page layout or remove the sales rep's
user access to the ClonePriceRule custom page.
Active
Activate this price condition. If this field is not selected, Salesforce CPQ does not consider this condition when evaluating a price.
Advanced Condition
If the Conditions Met field has a value of Custom, define the logic used in evaluating the rule’s conditions.
Calculator Evaluation Event
When the price condition evaluation scope targets the calculator, choose the action that causes Salesforce CPQ to evaluate the price
rule.
• On initialization—After a calculation is triggered, Salesforce CPQ evaluates the price rule during Step 4 of the Loading and
Initialization process on page 244.
• Before calculate—Before Salesforce CPQ calculates the quote’s price
231
Manage Your Quotes with CPQ Price Rules
Price Conditions
A price condition compares a field value, summary variable, or formula against another field value,
EDITIONS
summary variable, or formula. A rule can contain as many conditions as you like. You specify which
conditions must be true for your rule to apply its action. For example, a rule can fire its action in Available in: All Salesforce
response to meeting all its conditions, one condition, or a certain logically determined combination CPQ Editions
of its conditions.
232
Manage Your Quotes with CPQ Price Rules
Field
For price conditions that target an object to evaluate a field value, choose the field on the target object. The price condition evaluates
only the field that appears on the target object, even if the same field appears on other objects.
You can select only one type of target (field, tested variable, or tested formula) per price condition.
Filter Formula
If you set Filter Type to Formula, define the formula here.
Filter Type
Choose the type of record that the price condition evaluates its target record against.
Filter Value
If you set Filter Type to Value, define the value here.
Filter Variable
If you set Filter Type to Variable, define the summary variable here.
Index
If your price rule uses advanced conditions, choose a number to use in the rule’s Advanced Conditions field. For example, you could
assign this field a value of 1, and then use it in the advanced condition 1 OR (2 AND 3).
Object
For price conditions that target an object to evaluate a field value, choose the target object.
Operator
Choose the logical operator that Salesforce CPQ uses to evaluate the target record against your filtered record.
Tested Variable
Choose the summary variable that the price condition evaluates. You can select only one type of target (field, tested variable, or
tested formula) per price condition.
Tested formula
Define a formula for the price condition to evaluate. You can select only one type of target (field, tested variable, or tested formula)
per price condition.
233
Manage Your Quotes with CPQ Price Rules
3. Choose the operator to use in the logical statement that evaluates the tested record against the filter.
4. In the Filter Type field, define the type of record you’re evaluating the tested record against.
5. Choose a filter record to define the record that you’re evaluating the tested record against.
a. If the Filter Type field is set to Value, provide a text string as a value.
b. If the Filter Type field is set to Variable, define a lookup to a summary variable in the Filter Variable field.
c. If the Filter Type field is set to Formula, enter a formula in the Filter Formula field.
You can construct a formula using Salesforce’s operators and functions. You can also add information from the quote or the
target object field (for example, SBQQ__QuoteLine__c.SBQQ__ListPrice__c).
6. If you’re referencing this price condition in a price rule’s Advanced Condition field, enter a number value for the price condition’s
Index field. Advanced conditions allow you to create conditional logic under which a price rule fires, for example, IF (1 AND 2) OR 3.
7. Save your price condition.
Example: Your company sells industrial printing hardware. You want a price rule that applies a 10% discount on a quote for an
industrial printer if the customer account has purchased one in the past. You can use a summary variable and 2 price conditions
in your price rule. The summary variable adds the total number of industrial printer assets across the entire account. The first price
condition ensures that the quote contains a quote line with an industrial printer. The second price condition ensures that the
account has at least one industrial printer asset. Your price rule has a Conditions Met field value of All, so it applies the discount
when both these conditions evaluate to true.
Summary Variable
• Variable Name: Industrial Printer Count
• Target Object: Asset
• Aggregate Function: Count
• Aggregate Field: Quantity
• Filter Field: Asset_Product_Code__c
• Operator: equals
• Filter Value: IND_PRINT
Price Condition 1
• Object: Quote Line
• Field: SBQQ__ProductCode__c
• Operator: equals
• Filter Type: Value
• Filter Value: IND_PRINT
Price Condition 2
• Tested Variable: Industrial Printer Count
• Operator: greater than
• Filter Type: Value
• Filter Value: 0
234
Manage Your Quotes with CPQ Price Rules
Price Actions
When your price rule meets its conditions, the rule applies its price actions to a target field. A price
EDITIONS
action sources the value from a summary variable, formula, user-defined value, or other quote line
field and sends that value to your target field. A price rule must have at least one action. You can Available in: All Salesforce
have several actions that target the same field, or several actions that each target a different field. CPQ Editions
Price actions usually apply discounts to a pricing field on a quote line.
Formula
If the action applies a formula to your target field, define the formula here. You can use fields that are available on your target object.
Note: Formulas aren’t supported when the target object is Product Option.
Order
If your price rule has multiple actions, Salesforce CPQ applies actions with lower numbers first.
Rule
The rule that contains the price action. Salesforce CPQ provides a value for this field by default.
Source Field
Enter the field containing the value that you want to insert into your target field. This field can’t be the same as your target field. You
can select only 1 type of source per price action.
Source Lookup Field
If your price rule uses lookup queries, choose the API name of the field that you want to return from the lookup object record that
matches your condition. You can select only 1 type of source per price action.
Source Variable
Choose the summary variable that you want to insert as the value of your target field. You can select only one type of source per
price action.
Target Field
Choose the field that receives an updated value as the result of this price action.
Price actions can't target the quote's Group field.
Target Object
Choose the object containing the field that you want to update as the result of this price action.
235
Manage Your Quotes with CPQ Price Rules
b. To insert the result of a formula into your Target Field, enter the formula in the Formula field. You can construct a formula using
Salesforce operators and functions. You can also add information from the Quote or the Target Object field (for example,
SBQQ__QuoteLine__c.SBQQ__ListPrice__c).
Important:
• As of Salesforce CPQ Spring ‘20, we changed the way literal values representing percentages are evaluated in the
Formula field of a price action to be consistent with the way price action formulas evaluate percentage values. This
change also brings consistency with the way Salesforce formulas are evaluated in custom field definitions overall. To
avoid any issues, update existing price action formula fields that contain percentage field values. Use decimals for
values representing percentages, such as 1 for 100%, or 0.5 for 50%.
• Before Salesforce CPQ Summer '19, when a price action formula evaluated a quote or quote line percentage field, it
divided that field value by 100 within the formula logic. For example, a percent field value of 50% was evaluated as
0.005 rather than 0.5 within the formula. Fields that used the result of the price action formula had an incorrect value.
Users could avoid this issue by multiplying quote or quote line percentage field values by 100 in their price action
formulas. As of Salesforce CPQ Summer '19, price action formula fields don’t divide quote or quote line percentage
field values by 100. If you have price action formula fields where you multiplied percentage field values by 100 to avoid
this error, you need to update them.
c. To insert a value from another quote line field on your quote, enter the field’s API name in the Source Field field.
d. To insert a value from a summary variable, enter the lookup to that variable in the Source Variable field.
e. To insert a value from a lookup query, select the field for the Source Lookup Field.
5. If your price rule contains multiple actions, set their Order fields to control when Salesforce CPQ evaluates each action. Actions with
lower numbers are evaluated first.
Example: You want your quotes to contain one wireless router for every 12 laptops your customers order. Your routers have a
Product Code of WIFIAP, and your laptops have a Product Code of LTPRO. In this case, you want a calculator-scoped price rule that
applies the rule on calculation, one condition, and two actions. Make sure that you have a summary variable that counts the total
quantity of laptops on your quote and divides the quantity by 12. You reference this variable in the first action.
Price Condition
• Object: Quote Line
• Field: SBQQ__ProductCode__c
• Operator: Equals
• Filter Type: Value
236
Manage Your Quotes with CPQ Price Rules
Note: If the Apply Immediately field is disabled, Salesforce CPQ doesn't apply changes until the sales rep saves the bundle or
navigates to a different bundle level. To give users the ability to run edit rules on demand, use the Apply Rules custom action. The
Apply Rules custom action allows sales reps to choose when to run edit rules while changing a bundle.
Example: Let’s look at a basic configurator-scoped price rule and see how its evaluation event affects when we see the results
of a configuration change.
Your company sells an enterprise server management bundle for $6,000 each. However, you want to reduce its price to $5,000
when one of its product options, an admin training license, reaches a quantity of 2.
1. Create a price rule called “Set Price on Quantity 2.”
• Evaluation Scope: Configurator
• Conditions Met: All
• Configurator Evaluation Event: None
• Active: Selected
• Product: Enterprise Server Management Bundle
• Condition #: 0
237
Manage Your Quotes with CPQ Price Rules
4. Configure your server management bundle and change the admin training license’s quantity to 2. Notice that the bundle’s
price hasn’t changed.
5. Click Save and view your bundle in the quote line editor. The price has dropped to $5,000.
6. Configure your server management bundle, set the admin training license’s quantity to a different number, and then save.
7. Return to your price rule and change its configurator evaluation event to Save.
8. Configure your server management bundle, change the admin training license’s quantity to 2, and then click Save. Notice
that the bundle’s price didn’t change in the configurator until you clicked Save.
9. Configure your server management bundle, set the admin training license’s quantity to a different number, and then save.
10. Return to your Set Price on Quantity 2 price rule and change its configurator evaluation event to Edit.
11. Configure your server management bundle and change the admin training license’s quantity to 2. Notice that the bundle’s
price changes when you leave the quantity textbox.
238
Manage Your Quotes with CPQ Price Rules
Other
• When Salesforce CPQ evaluates a price rule formula, it doesn’t account for differences between the source record’s currency and
the quote’s currency. For example, suppose a quote line references a USD product while the quote uses EUR. In this case, price
rules targeting the quote line use the quote line’s USD price without converting it to EUR.
• When a price action without price conditions targets the Quote, the action evaluates the quote line or quote line group with
the lowest Number__c value. We recommend using price conditions to ensure that your price action targets the correct
record
• Price actions can target ListPrice__c or Quantity__c only if those actions send values other than null. Salesforce
CPQ supports values other than null for Quote Line Quantity__c. If Quote Line Quantity__c is null, Salesforce
CPQ stops the calculation for that line.
• If you’re using a source value instead of a formula, make sure that you write your dates as YYYY-MM-DD. No other date format
is supported.
• Salesforce CPQ doesn’t insert records upon calculation, so it can’t have a Required By field that looks up to a quote line. If your
price rule contains SBQQ__RequiredBy__c, it doesn’t fire until after a line gets saved to the database on the advanced
calculator. Because of this process, price rule formulas with SBQQ__RequiredBy__c don’t always function correctly.
• If your price rule targets list price, use Original Price as the source field rather than List Price. This process helps prevent infinite
calculation loops.
• Structure your price rules to evaluate as early in the calculation sequence as possible. This structure ensures that your rule sends
values to as many fields as it can during one sequence. This way, you don’t have to revise your rules if you add requirements.
• Price rules targeting the Additional Discount (%) or Additional Discount (Amt) fields must have an action that sends a null value
to the other Additional Discount field.
Note: On renewal generation where Renewal Pricing Method is defined as Same, you can’t manipulate these fields until
the After Calculate step, because the values are calculated On Calculate.
• Salesforce CPQ doesn’t execute price rules during Apex test class execution. The JavaScript Quote Calculator performs triggered
calculations in an external web service requiring a callout, and Apex test classes can’t make arbitrary callouts.
• A custom metadata object can be the target of a price rule lookup field. If multiple price rules target the same custom metadata
object, all price rules must target the same field on the metadata object.
• When you’re using price conditions, and a picklist field in the Field parameter then comparing against a filter value, the filter
value must be surrounded by single quotes.
SEE ALSO:
Knowledge Article: Troubleshoot Price Rule Issues
239
Manage Your Quotes with CPQ Price Rules
240
Manage Your Quotes with CPQ Refreshing Quote Prices
When a sales rep opens a quote that matches the price conditions, Salesforce CPQ adds an extra 10% discount to the Target (%) value.
It also updates the pricing guidance description.
241
Manage Your Quotes with CPQ The CPQ Quote Calculation Sequence
2. Add the Refresh Prices button to the opportunity's Quotes related list.
Sales reps can refresh prices on several of an opportunity's quotes at once by selecting each quote in the related list and then clicking
Refresh Prices.
Important:
• The Advanced Quote Calculator doesn’t support inserting a quote line or updating the calculating fields directly from a
queueable job. These actions start a queued calculation from the quote line trigger, which results in an error.
• After placing an order against a quote, do not modify any parts of the quote that affect cost. Do not modify products, dates
and schedules, quantity, or price.
• When multicurrency is enabled, the currency value from a product record is converted via exchange rate and the quote line
inherits the converted value. However, the Advanced Quote Calculator in Lightning Experience doesn’t support currency
conversion, so this value isn’t mapped properly from quote line to the opportunity product. To get the correct currency value,
create a formula field on the opportunity product instead of mapping the fields from the quote line.
242
Manage Your Quotes with CPQ The CPQ Quote Calculation Sequence
243
Manage Your Quotes with CPQ The CPQ Quote Calculation Sequence
Important: Salesforce CPQ prevents users from chaining multiple calculations within 1 transaction. This allows Salesforce CPQ
to stay within Salesforce platform governance limits. Salesforce CPQ sets a flag the first time that CPQ triggers run for calculations
that prevent the trigger from firing again. As a result, workflow rule and process builder updates to a calculating field don’t cause
a second calculation.
Important: If a user or process changes a product during calculation, data from the new
product is not available until a new calculation begins.
244
Manage Your Quotes with CPQ The CPQ Quote Calculation Sequence
3. Executes price rules where the value in the Event field is On Calculate
4. If you’re using a plugin, execute the plugin’s onAfterPriceRules() method
5. Updates related records in case the plugin or price rules sent new IDs
6. Ensures that any discount schedules injected by price rules have loaded properly
7. Indexes line item quantities according to schedule and group keys
8. If the quote contains a target amount, reset the quote’s discounts
9. Resets quote and group totals
Important:
• Salesforce CPQ prevents users from chaining multiple calculations within one transaction. This allows Salesforce CPQ to stay
within Salesforce platform governance limits. Salesforce CPQ sets a flag the first time that CPQ triggers run for calculations that
prevent the trigger from firing again. As a result, workflow rule and process builder updates to a calculating field don’t cause
a second calculation.
• Block price products populate List Price on the “Calculates fixed items” calculation stage.
245
Manage Your Quotes with CPQ Enhance Quotes with Custom Scripts
246
Manage Your Quotes with CPQ Enhance Quotes with Custom Scripts
SEE ALSO:
Call a Custom Script in the Quote Calculator Plugin
SEE ALSO:
Enhance Quotes with Custom Scripts
Example: This custom script uses a custom quote field called UbpDiscount__c.
Name
UBP Discount
Quote Line Fields
UbpDiscount__c
SBQQ__Price__c
Code
export function onBeforeCalculate(quote, lines, conn) {
if (lines) {
lines.forEach((line) => {
247
Manage Your Quotes with CPQ Enhance Quotes with Custom Scripts
248
Manage Your Quotes with CPQ Lookup Queries
Last Modified By LastModifiedBy The username of the user who last edited
the script
Quote Fields SBQQ__QuoteFields__c The API names of fields on the quote object
referenced by the script. Fields that aren’t
listed can’t be used in the script. Enter one
field per line, but don’t enter fields you don’t
need. The more fields you enter, the slower
the script runs.
Quote Line Fields SBQQ__QuoteLineFields__c The API names of fields on the quote object
referenced by the script. Fields that aren’t
listed can’t be used in the script. Enter one
field per line, but don’t enter fields you don’t
need. The more fields you enter, the slower
the script runs.
Quote Line Group Fields SBQQ__GroupFields__c The API names of fields on the quote object
referenced by this script. Fields that aren’t
listed can’t be used in the script. Enter one
field per line, but don’t enter fields you don’t
need. The more fields you enter, the slower
the script runs.
SEE ALSO:
CPQ Quote Fields
CPQ Quote Line Fields
CPQ Quote Line Group Fields
Consumption Rate Fields
Consumption Schedule Fields
Lookup Queries
Create lookup queries on your product rules and price rules to evaluate field values on objects other
EDITIONS
than quotes. You can then use your rule’s actions and conditions to send those values to a quote,
quote line, or product option. Available in: Salesforce CPQ
Winter ’16 and later
249
Manage Your Quotes with CPQ Lookup Queries
Product rules and price rules contain the Lookup Object field, which defines the object containing fields that you want to evaluate. Rules
also contain a related list for making lookup queries. Lookup queries reference the fields on the object that you can compare against
your quote, quote line, or product option fields.
For example, your insurance company has a custom Premium Rate object with fields for age, crash history, and car type. When a sales
rep makes an insurance quote for a prospective customer, they enter their customer’s age, crash history, and car type into matching
custom quote fields. You set up lookup queries on either type of rule based on your needs.
• A product rule lookup query tests Premium Rate to see if your customer was in more than five accidents in their lifetime. If they were,
the product rule adds a subscription product called High-Risk Insurance Premium to your quote.
• A price rule lookup query tests Premium Rate to see if your customer has never been in an accident. If so, the price rule applies a 5%
discount to your insurance package.
The object that your lookup query evaluates can be a custom object, such as Premium Rate, or Salesforce CPQ’s Lookup Data object. If
you don’t want to make a new object in your Salesforce org, use the lookup data object. All you have to do is create custom lookup data
fields to store information such as age, crash history, and car type.
The lookup query object contains the following important fields.
Tested Object
Define the object that contains the field your lookup query evaluates.
Lookup queries evaluate tested objects only on product options selected in product configuration or on quote lines that exist within
the quote line editor.
Tested Field
Define the quote field that your lookup query evaluates.
Match Type
Choose where this lookup query evaluates its target data. If you choose Static Value, Salesforce CPQ compares the value of the query’s
Tested Value field against all the values in your dataset. It then selects the first dataset value that matches your tested value. If you
choose Field Value, the query takes the value referenced in your quoting process and matches that value against the data in the
table.
Tested Value
Define this value if your query uses a static match type.
Lookup Field
Define the lookup data field or custom object field that you want to test.
Operator
Define how Salesforce CPQ compares your lookup field to the field you’re testing.
250
Manage Your Quotes with CPQ Lookup Queries
Product Rule Field Selection Rules Require Validation Rules Require Alert Rules Require These
These Values From Your These Fields From Your Fields From Your Lookup
Lookup Object Lookup Object Object
Lookup Type Field SBQQ__Type__c or a custom None None
field
Important: When a product rule uses a lookup query, it ignores the value of the Feature field on the product rule’s configuration
rule. This ensures that the product rule filters using only the lookup query’s parameters.
251
Manage Your Quotes with CPQ Lookup Queries
Example: You sell an IT Service bundle that contains a Bronze Support product option, a Silver Support product option, and a
Gold Support product option. The bundle also has a configuration attribute called Support Level so your sales reps can change
the type of support they want while configuring the bundle.
Configure a selection rule and lookup query that hides and shows your support options in the configurator based on whether you
select Bronze, Silver, or Gold in the Support Level configuration attribute menu. First, create the following lookup data records.
Remember, all Add, Show & Add, and Enable & Add lookup data records must have a Required field with a value of Yes.
When you associate these objects with your product rule, each record acts like a combination of error conditions and actions when
you’re in the configurator. Category is your filter, Type is your action, and Product refers to each option of your support bundle.
Next, create a standard selection rule.
Name
Configuration Selection Lookup Rule
Conditions Met
Any
Scope
Product
Evaluation Event
Always
Type
Selection
Make sure that you add a configuration rule that looks up to your support bundle. Instead of error conditions and actions, create
lookup queries on the product rule. Because you’re using a selection rule, fill out the Lookup Type, Lookup Product, and Lookup
Required fields.
252
Manage Your Quotes with CPQ Lookup Queries
Lookup Object
SBQQ__LookupData__c
Lookup Type Field
SBQQ__Type__c
Lookup Product Field
SBQQ__Product__c
Lookup Required Field
SBQQ__Required__c
Add a lookup query to your selection rule.
Match Type
Configuration Attribute Value
Tested Configuration Attribute
Support Level
Operator
Equals
Lookup Field
SBQQ__Category__c
Create a quote with your support bundle and enter the configurator. When you change the support level configuration attribute,
your product rule references the relevant lookup object record. It then changes your options accordingly. For example, if you
choose Bronze, the product rule adds your Bronze Support option while removing the Silver Support and Gold Support options.
Example: Marketing wants to ensure that a promotional discount applies to all products of
a particular type during a season. Your sales reps also want to offer a promotional code to
help sell a new line of products between 04/01/2018 and 05/31/2018. Your sales reps want
to apply a promotional discount when they quote a product between 04/1/2018 and
05/31/2018. They also want to enter a promotional code in the quote line editor to apply a
discount independent of the promotional discount. You can store your promotional data in
a custom object and use a set of lookup queries to reference it. Then use the price rule to
apply that data to your quote line’s list price. Here are the steps you complete.
1. Create a custom Promotion object with fields that store your promotional data: Start Date,
End Date, Promo Code, and Discount (%). Start Date has a value of 4/1/2018, End Date
has a value of 5/31/2018, Promo code has a value of Promo1, and Discount has a value
of 10%.
2. Add a Promo Code text field to your quote. When your price rule is active, your sales reps
can enter Promo1 on the quote to receive a 10% discount.
3. Create a price rule with the following fields.
• Evaluation Scope: Calculator
253
Manage Your Quotes with CPQ Lookup Queries
4. Create a price condition so that the price rule fires when your quote’s promo code field doesn’t have a blank value.
5. Create your lookup queries. Test whether the quote’s promo code matches the promotion’s promo code, and whether the
quote expires before the promotion begins. Remember that the tested field refers to the quote field you’re evaluating, and
lookup field refers to the Promotion object field that you’re testing against. Each lookup query should have the quote as the
tested object. After that, set up each query as follows.
6. Create your price actions. Your price rule performs these actions when all its lookup queries are true. The first action sets your
source lookup field to find the value of your quote line’s discount field and sends that value to your promotional discount field.
The second action pulls the promotional discount into a formula to determine your quote line’s final list price.
This is your first price action.
Target Object
Quote Line
Target Field
Promotional Discount__c
Source Lookup Field
Discount__c
This is your second price action.
Target Object
Quote Line
Target Field
SBQQ__ListPrice__c
Formula
SBQQ__OriginalPrice__c * (1 – Promotional_Discount__c)
254
Manage Your Quotes with CPQ CPQ Quote Fields
You can use one price rule that sends multiple lookup queries to a large table. Or you can break Product rule lookup queries
your dataset into several smaller tables and use several price rules that each send one query to one are available in Salesforce
of the smaller tables. The ideal workflow depends on whether your lookup query has a narrow CPQ Summer ’17 and later
scope. Multiple rules, each with one specific lookup query, allow you to access specific data more
quickly than one rule with multiple lookup queries. However, if your lookup queries contain any of
the following setups, you can minimize the number of records you need the dataset to return.
• An error condition that uses the equals operator
• A tested field on the Quote object
• A static tested value, like a text or number field
If you’re using any of these three setups, you can use one set of lookup object records and one rule, which makes administration easier.
Here’s one way you could use a price rule to query a dataset of 75,000 records on a single lookup object.
Condition
Picklist value isn’t blank.
Lookup Query
To find one match out of 75,000 records, match two quote line text values to two dataset record values.
Actions
Update a percentage field and a number field on the quote line with the value you matched.
To improve query performance:
• To avoid using a lookup query, use a rollup field on your quote or quote line.
• When running multiple lookup queries on one object type in the same action use fewer lookup queries to reduce the number of
records.
• Combine multiple product rules with similar lookup queries on the same object into one product rule.
• Limit when a product rule lookup query applies to the Load or Save actions when possible.
• Avoid using “not equal to” operator in lookup queries on object types with large datasets. Queries perform better when you search
for what you’re looking for rather than what you’re not looking for.
255
Manage Your Quotes with CPQ CPQ Quote Fields
Average Customer Discount (%) SBQQ__AverageCustomerDiscount__c Formula (Percent) Average customer discount (in
percentage) for this quote.
Average Partner Discount (%) SBQQ__AveragePartnerDiscount__c Formula (Percent) Average partner discount (in
percentage) for this quote.
Bill to City SBQQ__BillingCity__c Text (40) City of the Bill To address for this
quote.
Bill to Country SBQQ__BillingCountry__c Text (80) Country of the Bill To address for
this quote.
Bill to Name SBQQ__BillingName__c Text (255) Name for the Bill To address.
Bill to Postal Code SBQQ__BillingPostalCode__c Text (20) Postal Code of the Bill To address
for this quote.
Bill to Street SBQQ__BillingStreet__c Text Area (255) Street portion of the billing
address for this quote.
256
Manage Your Quotes with CPQ CPQ Quote Fields
Customer Amount SBQQ__CustomerAmount__c Rollup Summary (SUM Quote This field is a rollup summary
Line) field.
Days Quote Open SBQQ__DaysQuoteOpen__c Formula (Number) Number of days the quote has
been open.
Default Template SBQQ__DefaultTemplate__c Lookup (Quote Template) Template to use with this quote.
Salesforce CPQ automatically
selects the template specified
here when you click Generate
Document.
257
Manage Your Quotes with CPQ CPQ Quote Fields
First Segment Term End Date SBQQ__FirstSegmentTermEndDate__c Date Used with multi-segment
products to prorate first
segment. Enter the end date to
prorate first segment.
Introduction SBQQ__Introduction__c Long Text Area (2,000) Introduction that can be printed
on the generated PDF
document.
Key SBQQ__Key__c Text (80) (External ID) (Unique Internal unique key used for
Case Insensitive) identifying shopping cart quotes
without relying on internal IDs.
Last Calculated On Quote__c.LastCalculatedOn Date/Time The date and time of the last
successful calculation.
Last Saved On Quote__c.LastSavedOn Date/Time The date and time the quote
was last saved.
Line Item Count SBQQ__LineItemCount__c Rollup Summary (COUNT Quote Number of line items in this
Line) quote.
List Amount SBQQ__ListAmount__c Rollup Summary (SUM Quote Total List Amount of each
Line) non-optional line item in this
quote.
258
Manage Your Quotes with CPQ CPQ Quote Fields
Master Evergreen Contract SBQQ__MasterEvergreenContract__c Lookup (Contract) Master evergreen contract that
determines which evergreen
contracts are tied to this quote.
Net Amount SBQQ__NetAmount__c Rollup Summary (SUM Quote Total net amount of each
Line) non-optional line item in this
quote.
Notes SBQQ__Notes__c Long Text Area (2,000) Notes printed on the generated
PDF document.
Order By Quote Line Group SBQQ__OrderByQuoteLineGroup__c Checkbox Automatically splits orders based
on quote line group.
259
Manage Your Quotes with CPQ CPQ Quote Fields
Price Book SBQQ__PriceBook__c Lookup (Price Book) Price book associated with this
quote.
Price Book ID SBQQ__PricebookId__c Text (18) ID of the price book used by this
quote.
Primary Contact SBQQ__PrimaryContact__c Lookup (Contract) Primary contact for the quote.
This person's name appears on
generated quote document.
260
Manage Your Quotes with CPQ CPQ Quote Fields
Regular Amount SBQQ__RegularAmount__c Rollup Summary (SUM Quote Total amount of non-optional
Line) line items before additional
discounts are applied.
Sales Rep SBQQ__SalesRep__c Lookup (User) Sales rep responsible for this
quote if different from the user
who owns the quote record.
Ship To City SBQQ__ShippingCity__c Text (40) City on the Ship To address for
this quote.
Ship To Name SBQQ__ShippingName__c Text (255) Name on the Ship To address for
this quote.
Ship To Postal Code SBQQ__ShippingPostalCode__c Text (20) Postal Code on the Ship To
address for this quote.
Ship To Street SBQQ__ShippingStreet__c Text Area (255) Street on the Ship To address for
this quote.
261
Manage Your Quotes with CPQ CPQ Quote Fields
Target Customer Amount SBQQ__TargetCustomerAmount__c Currency (12, 2) Enter desired customer amount
to automatically calculate an
additional discount on
discountable line items.
262
Manage Your Quotes with CPQ CPQ Quote Line Fields
SEE ALSO:
Custom Script Fields
Important: Fields that appear in the quote line editor are defined by the Line Editor field Available in: All Salesforce
set, which is defined on the Quote, Quote Line, and Quote Line Group objects. After a Salesforce CPQ Editions
upgrade, sometimes the Line Editor field set doesn’t reflect new field restrictions. As a result,
some fields in the quote line editor don’t behave as expected. If fields don’t behave as
expected, ensure they’re available for the Line Editor field set on the Quote, Quote Line, and
Quote Line Group objects.
263
Manage Your Quotes with CPQ CPQ Quote Line Fields
Block Price SBQQ__BlockPrice__c Lookup (Block Price) Assign a fixed price to a product
based on quantity and quantity
range. This field’s value overrides
the automatic calculation of
quantity multiplied by unit price.
Component List Total SBQQ__ComponentListTotal__c Currency (14, 2) List total of components in this
configuration. This field is
populated only if the line item
references a configurable
product.
Component Net Total SBQQ__ComponentTotal__c Currency (14, 2) Net total of components in this
configuration. This field is
populated only if the line item
references a configurable
product.
264
Manage Your Quotes with CPQ CPQ Quote Line Fields
• Package
• Components
• Both
Component Uplifted By Package SBQQ__ComponentUpliftedByPackage__c Checkbox Fixes uplift for this component
to the parent bundle uplift. Uplift
applies only to multi-segmented
products.
Contracted Price SBQQ__ContractedPrice__c Lookup (Contracted Price) Contracted price if the product
has negotiated pricing for
opportunity's account.
Contracted prices are available
on the Account and can be
applied to any product in any
price book.
Cost SBQQ__Cost__c Lookup (Cost) Cost record for the line item.
Customer Total SBQQ__CustomerTotal__c Formula (Currency) Customer total price for the
quote line item. This total is the
net total, excluding any partner
discounts.
Customer Unit Price SBQQ__CustomerPrice__c Currency (12, 2) Customer unit price for the
product quoted by the line item.
This price is the net unit price,
excluding partner discounts.
Default Subscription Term SBQQ__DefaultSubscriptionTerm__c Number (5, 0) Term length of the subscription,
which applies only if the product
is a subscription. It’s copied from
the subscription term of the
related product when the line
item is first generated.
Description SBQQ__Description__c Rich Text Area (32000) Description of the line item.
265
Manage Your Quotes with CPQ CPQ Quote Line Fields
Discount Tier SBQQ__DiscountTier__c Lookup (Discount Tier) Discount tier used by the line
item. This field is populated only
if a product is volume
discounted and the discount
schedule is of type Range.
Earliest Valid Amendment Start SBQQ__EarliestValidAmendmentStartDate__c Formula (Date) The earliest amendment start
Date date allowed, based on
previously amended
subscriptions.
Effective End Date SBQQ__EffectiveEndDate__c Formula (Date) Effective end date for this
subscription.
266
Manage Your Quotes with CPQ CPQ Quote Line Fields
Effective Start Date SBQQ__EffectiveStartDate__c Formula (Date) Effective start date for this
subscription.
Gross Profit SBQQ__GrossProfit__c Currency (14, 2) Gross profit amount on this line
item.
Group SBQQ__Group__c Lookup (Quote Line Group) Group to which this line
belongs, if any.
267
Manage Your Quotes with CPQ CPQ Quote Line Fields
Markup (Amount) SBQQ__MarkupAmount__c Currency (14, 2) Markup amount for the line
item.
Maximum List Unit Price SBQQ__MaximumPrice__c Currency (14, 2) Maximum unit price for the
product. Used to enforce list
price ceiling for products with
dynamically calculated prices.
Minimum List Unit Price SBQQ__MinimumPrice__c Currency (18, 0) Minimum list unit price for this
product. Used to enforce list
price floor for products with
dynamically calculated list
prices.
Net Total SBQQ__NetTotal__c Formula (Currency) Net total price for this quote line
item.
Net Unit Price SBQQ__NetPrice__c Currency (12, 2) Net unit price for the product
quoted by this line item.
268
Manage Your Quotes with CPQ CPQ Quote Line Fields
Option Discount (%) SBQQ__OptionDiscount__c Percent (3,2) If this line item is for an optional
SKU, this field captures any
discount given to the bundle
and extended to the option.
Option Level SBQQ__OptionLevel__c Number (5,0) Indicates the nesting level of this
option (applies only to line items
generated from options).
Original Price SBQQ__OriginalPrice__c Currency (12,2) The original unit price for the
product quoted by this line item.
Original price originates from the
price book. Also known as MSRP.
Original Unit Cost SBQQ__OriginalUnitCost__c Currency (14,2) Cost for one unit of product
quoted on this line item if cost
schedules weren’tapplied.
269
Manage Your Quotes with CPQ CPQ Quote Line Fields
Package Product Code SBQQ__PackageProductCode__c Text (255) Product code for the bundle.
Salesforce CPQ generates this
code by appending codes of
selected components according
to a user-specified pattern.
Package Product Description SBQQ__PackageProductDescription__c Rich Text Area (32,000) Dynamic product description
generated from the components
inside this bundle.
Partner Unit Price SBQQ__PartnerPrice__c Currency (12, 2) Partner unit price. Price after
partner discount but before
distributor discount.
Percent of Total Base SBQQ__SubscriptionBase__c Text (30) Determines the price that serves
as the base for percent-of-total
calculations.
270
Manage Your Quotes with CPQ CPQ Quote Line Fields
Percent of Total Target Price SBQQ__SubscriptionTargetPrice__c Currency (12, 2) Percentage of the subscription
target product price for
calculating maintenance.
Previous Segment Regular Price SBQQ__PreviousSegmentPrice__c Currency (12, 2) When set, this value takes the
place of the previous segment's
regular price when uplift is
calculated for this segment.
Previous Segment Uplift SBQQ__PreviousSegmentUplift__c Currency (10, 2) When set, this value takes the
place of the previous segment's
uplift amount when uplift is
calculated for this segment.
Pricing Method SBQQ__PricingMethod__c Picklist Indicates how the price for this
line item is calculated. List
subtracts the discount from the
list price. Cost adds markup to
the cost.
271
Manage Your Quotes with CPQ CPQ Quote Line Fields
• List
• Cost
• Block
• Custom
Product Code SBQQ__ProductCode__c Formula (Text) Code for the product referenced
by this line item.
Product Family SBQQ__ProductFamily__c Formula (Text) A category you can use to help
you organize this line item in
Salesforce (whether it's a new or
existing product family). Use this
field during product selection to
filter to the correct product or
product SKU.
Product Option SBQQ__ProductOption__c Lookup (Product Option) Product option that generated
this line item (if any).
Prorated List Price SBQQ__ProratedListPrice__c Currency (16, 2) Prorated list unit price.
Prorated Unit Price SBQQ__ProratedPrice__c Currency (12, 2) Prorated price of the product
quoted by this line item. This
price differs from the special
price only if the product is a
subscription and the line item is
prorated.
272
Manage Your Quotes with CPQ CPQ Quote Line Fields
Regular Unit Price SBQQ__RegularPrice__c Currency (12, 2) Unit price before additional
discount.
Renewed Asset SBQQ__RenewedAsset__c Lookup (Asset) Asset being renewed if this line
item represents product
renewal.
Renewed Subscription SBQQ__RenewedSubscription__c Lookup (Subscription) The subscription that this quote
line item renews.
Required By SBQQ__RequiredBy__c Lookup (Quote Line) Links this line item to another
line item in the same quote
whose product requires this line
item's product.
Source SBQQ__Source__c Lookup (Quote Line) Source of the cloned quote line
item.
Special Price SBQQ__SpecialPrice__c Currency (12, 2) If the Special Price Type field has
a value, special price replaces list
price as the starting point in the
quote line price calculation
sequence.
273
Manage Your Quotes with CPQ CPQ Quote Line Fields
274
Manage Your Quotes with CPQ CPQ Quote Line Fields
Special Price Description SBQQ__SpecialPriceDescription__c Text (80) Name of the discount tier or
contracted price applied to
achieve the special price for this
line item.
Special Price Type SBQQ__SpecialPriceType__c Picklist Stores the type of special price
offered on this line item. A null
value indicates that there’s no
special pricing. Under normal
circumstances, this field isn’t
modified via the UI.
Subscribed Asset IDs SBQQ__SubscribedAssetIds__c Long Text Area (19,000) Comma-separated list of asset
IDs covered by the subscription
line. Only applicable to renewal
quotes. Don’t update unless
instructed.
275
Manage Your Quotes with CPQ CPQ Quote Line Fields
Term Discount Schedule SBQQ__TermDiscountSchedule__c Lookup (Discount Schedule) Schedule for discounts based on
subscription term. This field is
useful when you want to show
a breakdown of payments in
separate groups for different
terms, yet you want to apply the
discount for the entire duration
of the subscription. Leave Term
Discount Level blank if you want
discount schedules applied
276
Manage Your Quotes with CPQ CPQ Quote Line Fields
Term Discount Tier SBQQ__TermDiscountTier__c Lookup (Discount Tier) Tier within the term discount
schedule used to discount this
line item.
Total Discount (%) SBQQ__TotalDiscountRate__c Formula (Percent) Total discount for this line item
including volume discount,
contracted discount, and
additional discount.
Total Discount (Amount) SBQQ__TotalDiscountAmount__c Formula (Currency) Total discount amount for this
line item including volume
discount, contracted discount,
and additional discount.
Unit Cost SBQQ__UnitCost__c Currency (14, 2) Cost for one unit of product
quoted on this line item.
Upgraded Asset SBQQ__UpgradedAsset__c Lookup (Asset) The asset that this quote line is
upgrading. When the quote is
contracted, this asset’s Usage
End Date field is populated to
indicate it's been retired.
Upgraded Quantity SBQQ__UpgradedQuantity__c Number (10, 2) Portion of this line item's prior
quantity upgraded to another
product.
Upgraded Subscription SBQQ__UpgradedSubscription__c Lookup (Subscription) The subscription that this quote
line is upgrading. When the
quote is contracted, this
subscription’s Terminated Date
field is populated.
277
Manage Your Quotes with CPQ CPQ Subscription Fields
SEE ALSO:
Custom Script Fields
278
Manage Your Quotes with CPQ CPQ Subscription Fields
• Semiannual
• Annual
• Usage
Customer Price SBQQ__CustomerPrice__c Currency (12, 2) Customer unit price for the
product quoted by this line item.
This price is the net price,
excluding any partner discounts.
Dimension Type SBQQ__DimensionType__c Formula (Text) Type set on the price dimension.
279
Manage Your Quotes with CPQ CPQ Subscription Fields
End Date SBQQ__EndDate__c Formula (Date) The last date this contract is
valid.
280
Manage Your Quotes with CPQ CPQ Subscription Fields
Option Level SBQQ__OptionLevel__c Number (5, 0) Indicates nest level of this option
(applies only to lines generated
from options).
Order Product SBQQ__OrderProduct__c Lookup (Order Product) The order product from which
this subscription was generated.
Populated only when the
subscription is contracted from
an order.
Original Quote Line SBQQ__OriginalQuoteLine__c Lookup (Quote Line) Original quote line of the
subscription.
Original Unit Cost SBQQ__OriginalUnitCost__c Currency (12, 2) Cost of one unit of product
quoted on this line item if cost
schedules weren’t applied.
Package Product Code SBQQ__PackageProductCode__c Text (255) Product code for the bundle.
Salesforce CPQ generates this
281
Manage Your Quotes with CPQ CPQ Subscription Fields
Package Product Description SBQQ__PackageProductDescription__c Rich Text Area (32,000) Dynamic product description
generated from the components
inside this bundle.
Price Dimension SBQQ__Dimension__c Lookup (Price Dimension) Price dimension associated with
this subscription.
Pricing Method SBQQ__PricingMethod__c Picklist Indicates how the price for the
related line item is calculated.
"List" = discount is subtracted
from list price. "Cost" = markup
is added to cost. Values are as
follows.
• List
• Cost
• Percent Of Total
• Block
• Custom
Product Option SBQQ__ProductOption__c Lookup (Product Option) Product option that generated
this subscription (if any).
282
Manage Your Quotes with CPQ CPQ Subscription Fields
Quote Line SBQQ__QuoteLine__c Lookup (Quote Line) Quote line that generated the
subscription.
Renewal Price SBQQ__RenewalPrice__c Currency (12, 2) Define the price of quote lines
that appear on the renewal
quote when you renew this
subscription. This field overrides
the result of price calculations
from your account’s renewal
pricing method. If your account
uses Uplift renewal pricing, the
uplift is applied directly to the
Renewal Price field.
Renewal Product Option ID SBQQ__RenewalProductOptionId__c Formula (Text) ID of the renewal product option
defined on the product option.
Renewal Product Option Product SBQQ__RenewalProductOptionProductId__c Formula (Text) ID of the optional SKU defined
ID on the renewal product option.
Renewal Product Option Sub SBQQ__RenewalProductOptionSubscriptionPricing__c Formula (Text) Subscription pricing defined on
Pricing the optional SKU of the renewal
product option.
Renewal Uplift (%) SBQQ__RenewalUpliftRate__c Percent (8, 3) Rate of renewal price increases.
283
Manage Your Quotes with CPQ CPQ Subscription Fields
Start Date SBQQ__StartDate__c Formula (Date) The first effective date of this
subscription.
284
Manage Your Quotes with CPQ CPQ Subscription Fields
Subscription Start Date SBQQ__SubscriptionStartDate__c Date This field is populated only when
the quote line’s start date and
the contract’s start date are the
same. When the quote line’s
start date and the contract’s start
date are different, this field is
blank.
Term Discount Schedule SBQQ__TermDiscountSchedule__c Lookup (Discount Schedule) Schedule for discounts based on
subscription term.
285
Manage Your Quotes with CPQ CPQ Quote Line Group Fields
SEE ALSO:
Root ID Field on Subscriptions
Knowledge Article: Legacy data upload with Renewals and Amendments in Salesforce CPQ
Subscription Terms
Amending MDQ Products
286
Manage Your Quotes with CPQ CPQ Quote Line Group Fields
Last Modified By LastModifiedById Lookup(User) The user who edited this quote
line group more recently
List Total SBQQ__ListTotal__c Currency(12,2) Total for this group's line items
before any discounts are applied
Net Total SBQQ__NetTotal__c Currency(12,2) Net total price for this quote line
item
Quote Process SBQQ__QuoteProcess__c Lookup(Quote Process) Quote process used with this
group. Overrides the quote level
field.
Solution Group SBQQ__SolutionGroup__c Lookup(Solution Group) Solution group from which this
quote group was generated (if
any)
287
Manage Your Quotes with CPQ Send Your CPQ Quotes
Target Customer Amount SBQQ__TargetCustomerAmount__c Number(5,0) Lets sales reps define a new
value for the quote line group
subtotal. Salesforce CPQ applies
an equal Additional Discount
value to the group’s
discountable quote lines so that
the group’s subtotal matches
the target customer amount.
Approval requirements still
apply to quote lines discounted
this way.
SEE ALSO:
Custom Script Fields
288
Manage Your Quotes with CPQ Building Your CPQ Documents with CPQ Templates
Note: Salesforce CPQ doesn't support quote templates without template sections.
When you’re ready to generate your quote document, click Generate Quote to go to the Generate Document page. Here you choose
your template, paper size, and document name.
Example: Create several templates to cover different types of business documents within your company.
Quote template: Contract
• Template section: Contract Header
• Template section: Terms and Conditions Heading
• Template section: Terms and Conditions
• Template section: Signature Block
Quote template: Statement of Work
• Template section: Cover Page
• Template section: Cover Letter
• Template section: Project Services
• Template section: Assumptions
• Template section: Terms and Conditions
• Template section: Signature Block
Quote template: Quote
• Template section: Ungrouped Line Items
• Template section: Grouped Line Items
• Template section: MDQ Line Items
• Template section: Terms and Conditions
• Template section: Signature Block
289
Manage Your Quotes with CPQ Building Your CPQ Documents with CPQ Templates
290
Manage Your Quotes with CPQ Building Your CPQ Documents with CPQ Templates
Merge Fields
Your template content can store fields that show field values from different objects. These merge
EDITIONS
fields are automatically updated in your content when the referenced field is updated on the other
object. This process is useful if you want template content to reflect changes made elsewhere in Available in: All CPQ Editions
your org.
291
Manage Your Quotes with CPQ Building Your CPQ Documents with CPQ Templates
For example, let’s say you have a template content record that displays vendor information. This content could include a merge field
that references the sales rep field on your quote. You can use this content in templates for different quotes, and the content’s sales rep
information in the document always matches the sales rep on any of the quotes you choose. If the sales rep changes during the quoting
process, the documents for a given quote are up to date.
Merge fields take the format of {!recordname.fieldname} in your template content. Replace fieldname with your field's
API name and recordname with the name of the object containing your field. If you're using a Salesforce CPQ field, enter SBQQ__
at the beginning of your field name. If you're using a custom field, including fields from a managed package such as Salesforce CPQ,
include __c at the end of your field name.
When a merge field references a picklist field, Salesforce CPQ uses either the field’s Label or API Name based on the Enable Multi-Language
Translations package setting. If the setting is active, Salesforce CPQ uses the picklist value’s Label. Otherwise, it uses the picklist value’s
API Name.
Tip: If your merge field includes a lookup field, Salesforce CPQ shows the ID of the referenced record when the merge field appears
in your quote document. To show the referenced record's name instead, create a formula field that returns the record's name. You
can then reference that formula field in your merge field instead.
Salesforce CPQ template content supports merge fields that reference fields from the following objects.
This merge field references all fields related !quote. Standard fields, CPQ managed package
to the Salesforce CPQ quote object. fields, custom fields
This merge field references all fields related !primaryContact. Supported standard fields on page 293
to the Primary Contact on the Salesforce
CPQ quote object.
This merge field references all fields related !salesRep. Supported standard fields on page 293
to the Sales Rep on the Salesforce CPQ
quote object.
You can also use !companyLogo on its own to show the image referenced in your quote template's Logo field.
Note: If you use a rich text field as a merge field and apply both color and formatting such as bold, italic, or underlining, the
template doesn’t apply color.
Example:
{!template.SBQQ__ShipToTitle__c} References the Ship To Title field on the quote template object.
{!primaryContact.Name} References the Primary Contact lookup (to the Contact object)
field on the quote object. The field does not reference the
"SBQQ__" prefix because contacts are standard Salesforce
objects. Although this field is a lookup field, you don't need a
292
Manage Your Quotes with CPQ Building Your CPQ Documents with CPQ Templates
{!quote.Type_of_Transaction__c} In this case, the admin made a custom Type of Transaction field.
This merge field references the Type of Transaction field on the
quote object.
• Email • City
• Fax • Country
• FirstName • Email
• LastName • Extension
• MailingCity • Fax
• MailingCountry • FirstName
• MailingPostalCode • LastName
• MailingState • MobilePhone
• MailingStreet • Name
• MobilePhone • Phone
• Name • PostalCode
• OtherCity • State
• OtherCountry • Street
• OtherPostalCode • Title
• OtherState
• OtherStreet
• Title
293
Manage Your Quotes with CPQ Building Your CPQ Documents with CPQ Templates
Note: Use Shift+Enter to create a new paragraph in your Body text. Use Enter as a carriage return. Salesforce CPQ does not create
whitespace for repeated carriage returns when it renders the quote term on an output document.
Example: Your proposal quote contains the following terms. Each line represents a unique quote term record associated with
your template’s Quote Terms content record.
1. Main Services Agreement
2. Definitions
3. Services
4. Use of the Services
5. Fees and Payments for Services
6. Proprietary Rights
7. Confidentiality
8. Warranties and Disclaimers
294
Manage Your Quotes with CPQ Building Your CPQ Documents with CPQ Templates
Example: Your company sells industrial power generators. Your legal department requires you to display a term containing extra
liability information if your customer purchases more than five 500-kW generators.
Use a term condition record to manage this optional term. First, create a summary variable that counts the total quantity of 500-kW
generators on your quote. Give your summary variable a name of Total Quantity of 500-kW Generators. Then
you can create a term condition as follows.
• Tested Variable: Total Quantity of 500-kW Generators
• Operator: Greater than or equals
• Value: 5
295
Manage Your Quotes with CPQ Building Your CPQ Documents with CPQ Templates
3. To show your image on your quote documents, add a merge field to your template content.
a. Go to the template content that you want to include your image.
b. Insert a merge field in the HTML template content markup editor.
For example, if your rich text field has an API name of laptop_pic__c, your merge field is {!quote.laptop_pic__c}.
7. Enter a value for Top Margin and Bottom Margin, in inches, to space each section relative to any section above or below it.
8. To control where page breaks occur in your section, choose values for the page break fields.
Important: If Keep Together is set to Always, the section runs off the bottom of the page where it starts, past the margin,
and doesn’t continue on the next page. Data past the edge of the page doesn’t appear anywhere in the document. To avoid
296
Manage Your Quotes with CPQ Building Your CPQ Documents with CPQ Templates
this issue, set Keep Together to Auto, and if you want the template section to start on next page, use Page Break = Before and
after as needed.
9. To group line items in this section by a field, select a value for Group Field.
Note: Salesforce CPQ ignores Group Field if your quote’s Group Line Items field is selected.
297
Manage Your Quotes with CPQ Building Your CPQ Documents with CPQ Templates
Roll-Up
If the quote template’s Roll Up Field value matches this line column’s Field Name value, and quote lines have the same value for
that field, Salesforce CPQ combines the quote lines into one line on the quote document.
Section
Specify a template section here if you want this column to appear only in that section. Otherwise, this column appears in all sections.
Separate Line
To print the field on its own line, select the checkbox. Use this setting for long text fields such as Product Description. To generate
quote documents properly, deselect Separate Line for at least one line column in any given line item section.
Width
This value represents the percentage of the overall document width taken up by this column. Quote documents sometimes appear
incorrectly if the total Width values on your template aren’t 100.
Dynamic Number Scale
Set the decimal places for numbers in the column based on the record with the greatest precision. For example, if the record with
the greatest precision has 4 decimal places, all the numbers in the column are set to display 4 decimal places.
You can then adjust the appearance of your line columns with the Style Information and Column Option fields.
298
Manage Your Quotes with CPQ Building Your CPQ Documents with CPQ Templates
This field contains a value of Group Line Items by default, but you can add other quote fields as needed.
299
Manage Your Quotes with CPQ Building Your CPQ Documents with CPQ Templates
Line Numbering
Specify how to number line items on made documents. “Start at quote” numbers all lines in order, starting at 1, across the quote
regardless of groups. “Start at group” resets numbers to 1 at the beginning of a group.
2. Add the API name of the field you’re filtering by to your template section’s Filter Field field.
3. Use filter fields in each template section to define the line items you want to filter. For example, the Hardware template section could
include the following filter field values.
• Filter Field: SBQQ__ProductFamily__c
• Filter Operator: Equals
• Filter Value: Hardware
4. Create a “catch-all” filter for any line items that do not fit within the filtered lists. For example, you could have a section with a filter
field of SBQQ__ProductFamily__c, an operator of equals, and a null filter value. This filter would include all your products that do
not have a value for their product family.
300
Manage Your Quotes with CPQ Building Your CPQ Documents with CPQ Templates
You can also show quote totals outside your line item sections by hiding totals in your template. Then use the {!quoteTotal} and
{!quoteSubTotal} merge fields anywhere in your template content records.
2. From Setup, enter Objects, select Objects, and then select Quote Template.
3. From the Quote Template page, select Group Field.
4. From the Values related list, click New.
5. Add the API name of the field you made in Step 1 and click Save.
6. On your quote template, find the Group Field field and set its value to the value you added in Step 5.
Tip: Salesforce CPQ can set the heading label for your grouping based off a different field than you use for the rest of your grouped
line items. Create a group label field on the Quote Line object using a naming convention of [field name]Label__c. For
example, if the API name of your Group Field is "Required__c," the label field for it would be called "RequiredLabel__c".
301
Manage Your Quotes with CPQ CPQ Quote Document Management
6. Copy the document ID, which is the string of numbers at the end of the document record’s URL.
7. Return to your quote template and enter the document ID in the Logo Document ID field.
8. Click Save.
302
Manage Your Quotes with CPQ CPQ Quote Document Management
Flexible Page Numbers in CPQ Quote Documents Available in: Salesforce CPQ
The quote template record contains several fields that let you control how page numbers appear Summer ’14 and later
on PDF quote document pages. Customizing your page number layout lets you organize your
quote document based on your company’s styling needs. Learn how to use each page number
field to customize quote documents for your sales reps.
Document Output Size
Set your document’s page size with the Paper Size menu on the Generate Document page. For example, if your sales rep needs to
generate a document in Japanese, they would set the output size to A4.
Add PDFs to Your Quote Document
Add PDFs that appear between your template sections. The PDF is static, which means that Salesforce CPQ does not change its
position when creating your quote document, unlike pages made from template content. This feature is useful if your sales reps
want standardized content in their quote documents, such as a certification or corporate overview.
Show Product Image Fields in Quote Documents
If your product record contains a custom image field, you can show that image next to any related quote lines in a quote document.
Add the name of your custom image field to a line column record on the quote template where you want to show product images.
Display Watermarks on Draft Quote Document Previews
Add a watermark to the background of quote documents. This way, when your sales reps preview a document on the Generate
Document page, they and their users will not confuse a draft quote document with the completed version.
Remove CPQ Quote Document Headers and Footers
Remove headers and footers from the first, last, or first and last pages of your quote template. This feature is useful if you want a title
page that doesn’t include a header or footer.
Show Discount Schedules on CPQ Quote Documents
Show volume discount schedules, term discount schedules, and price breaks for each quote line on your quote document. Then
your sales reps can provide customers with more insight into how their quote line items are priced. Customers might also be more
likely to move up to a higher discount tier if they realize their order is close to that next tier.
303
Manage Your Quotes with CPQ CPQ Quote Document Management
Note: Exceptionally long text strings—for example, an 8-inch string on a 6-inch wide page— wrap.
304
Manage Your Quotes with CPQ CPQ Quote Document Management
Important: Salesforce CPQ doesn't support including publicly accessible documents if they’re already in a customer’s Salesforce
org.
• Customers don’t see page numbering on PDFs that you’ve attached to your quote document, though they can see numbers on
standard pages.
• If you add an extra document to a quote document that contains HTML content with a hyperlink, the hyperlink appears as a URL
instead on the generated document.
• Embedded links in more Document PDFs aren’t clickable in previewed or generated quote documents.
• Documents generated or previewed as Microsoft Word files don’t show attached PDF content.
305
Manage Your Quotes with CPQ CPQ Quote Document Management
Salesforce CPQ displays the watermark image behind the text on each page of your quote document, excluding static PDFs. You can
use one of your own images or Salesforce CPQ’s standard image. The Salesforce CPQ watermark is located in the Document Assets folder.
1. Create a Document record.
2. Give your document a name and then upload the file you want to serve as the watermark.
Salesforce CPQ has a standard “Draft” watermark image available by default. You can find it in the Document Folder field within the
Documents tab of Salesforce CPQ package settings.
5. Go to the quote template where you enable the watermark for draft documents. Add your SFDC ID to the Watermark ID field.
6. Save your quote template.
You can create a workflow rule to control when a watermark appears on your quote output. This way, only non-finalized quotes receive
a watermark. This workflow should apply to the quote document object.
Note: Salesforce CPQ considers headers as footers as 1 entity, and page numbers as another. Available in: Salesforce CPQ
Removing headers and footers doesn’t remove page numbers, and vice versa. Summer ’17 and later
1. From your quote template, choose a value for the Exclude Header & Footer field.
To remove both of these entities from your first and last pages, set Exclude Header & Footer to First and Last, and then set Exclude
Page Numbers toFirst and Last or to All Pages.
2. In the quote template record where you want to show discount schedules, select a value for the Show Discount Schedule field.
3. Save your changes.
306
Manage Your Quotes with CPQ CPQ Quote Document Management
Note: Salesforce CPQ document generation is compatible with multi-factor authentication using the Multi-Factor Authentication
for User Interface Logins permission. Salesforce CPQ document generation is incompatible with the multi-factor authentication
session security level required at login profile setting at high assurance. See Enable MFA for Direct User Logins in Salesforce Help.
1. Go to a quote record and click Generate Document.
2. Choose an output format. See Let Users Change Output Formats.
Note: Microsoft Word doesn't support page breaks from CPQ quote documents.
Note: The “na” that begins any Salesforce org must be capitalized. For example, https://NA35.salesforce.com.
307
Manage Your Quotes with CPQ CPQ Quote Document Management
3. Use the Apex class MassQuoteDocumentSender to define a batch document creation schedule.
a. Make sure your quotes have values for their primary contacts and quote template IDs.
MassQuoteDocumentSender picks up only quotes with a pending document status. We recommend creating a workflow rule
that changes a quote’s document status to Pending when it’s ready for document creation.
b. From Setup, enter Apex Classes and then click Apex Classes.
c. Click Schedule Apex.
d. Enter a name for your job. For example, you could use “GenDocs.”
e. Use the Apex Class lookup to find and select MassQuoteDocumentSender.
f. In the Schedule Apex Execution section, enter a time range, frequency, start time, and date for your recurring document generation.
g. Click Save.
When Salesforce CPQ performs a batch document generation, it changes the Document Status field of each related quote to either Sent
or Failed. The admin running the MassQuoteDocumentSender Apex class also receives an email showing whether the batch generation
was successful or failed. If the batch generation failed, the email shows the errors that occurred while the class was running.
In Salesforce CPQ Spring ’17 and later, you can control the language of batch-generated quotes on by using the quote’s Quote Language
field. If this field is blank, the language of batch-generated documents for that quote defaults to the language chosen in your org’s user
settings. Quote-level language selection lets you establish document language before the generation process begins, making it useful
for batch document generation — just make sure all the quotes involved in the batch generation process have a quote language
specified. This field works for only batch generation; it doesn’t affect document language when a sales rep clicks Generate Document.
In that case, the rep still has to choose a document language on the Generate Document page.
308
Manage Your Quotes with CPQ CPQ Quote Document Management
We recommend adding the Output Format field to the Quote Documents related list on your opportunity and quote page layouts. This
layout ensures that other users can quickly see whether a quote document is a PDF or a .doc.
Note: When a sales rep previews a quote, Salesforce CPQ still shows the quote document in their browser’s window. The output
selection only affects generated quote documents that they save or email.
4. Click Save to store your translations and return to your template content record, or click Quick Save to save your translations and
remain on the Translations page.
5. To define translations for other languages, repeat steps 2 through 4.
6. In your template content record, click Edit.
7. Add your variables to your template content.
Example: Your company needs Spanish translations for their Quotation and QuoteNumber template content variables, so you
define translations for these variables as follows.
Quotation
Variable Name: {!template.Quotation__c}
Definition: Label for Quotation
Translated Value: Cita de vente
QuoteNumber
Variable Name: {!template.QuoteNumber__c}
Definition: Quote Number
Translated Value: Numero de cita
The variable name on the Translations page must be the field’s API name without the __c. In this example, you would use
Quotation.
Important:
• When you want to translate a quote document, make sure that you select a specific document language rather than Default.
When you select Default, Salesforce CPQ shows only untranslated content. This process means that Salesforce CPQ doesn’t
show user-translated template content such as merge fields and labels with variable translation values.
• Picklist values aren’t translated when the picklist field is used in the Group Field of the quote template, even if the document
language and user language are changed.
309
Manage Your Quotes with CPQ Conga Quote Generation for Salesforce CPQ
SEE ALSO:
OmniStudio Document Generation
Post Install Steps for OmniStudio Document Generation
OmniStudio and OmniStudio Document Generation with Salesforce CPQ+
Note: Custom total fields on the quote template must be non-null currency fields. Available in: All Salesforce
CPQ Editions
Template Information
Default
Select whether this quote template is the default selection when quotes are generated.
Deployment Status
Choose whether users can select this quote template.
• In Deployment: Hide this quote template from users while an admin edits it. Only users with Customize Application permission can
see quote templates with this status.
• Deployment: Sales reps can select this quote template after clicking Generate Document or Preview Document.
Generator Name
Store the name of a Visualforce page used to generate an XSL:FO tree.
310
Manage Your Quotes with CPQ CPQ Quote Template Fields
Logo Document ID
Enter the Document ID from the URL of the document that contains your logo.
Template Name
Provide a unique name for this template.
Page Information
Margins (Bottom, Left, Right, Top)
The quote document’s margins, in inches.
Page Height
The page height is in inches. 11.0 is the standard value.
Page Width
The page width in inches. 8.50 is the standard value.
Corporate Information
Company Name, Address, Fax, Phone, and Email fields
By default, a quote template inherits its company name and address information from your organization settings. You can also edit them
on the quote template details page.
Company Slogan
Enter a company slogan if you want to display one on your quote documents.
Style Information
Border Color
Enter the HEX code for the table borders.
Font Family
Choose the font family for your quote document. Text on your quote document can use only fields within the template’s font family.
311
Manage Your Quotes with CPQ CPQ Quote Template Fields
Print Options
Customer Discount Field
Choose a field that computes a customer discount to display on the quote document. Use the default value, Total Discount (Amt), or
add a custom field to the picklist. If you add a custom field, it appears on the quote document only when the template has a Group Field
value.
Group Field
Organize the quote document’s line items into groups based on shared field values. For example, if you sold desktop cases with different
covers, you could group your quote lines by the values of their Color field.
Salesforce CPQ ignores Group Field if your quote’s Group Line Items field is selected.
Hide Component Products
Your quote document doesn’t show product options.
Hide Group Subtotals
Your quote document doesn’t show group subtotals.
Hide Totals
Your quote document doesn’t show quote totals.
Line Numbering
Choose how to number line items on the quote document.
• “Start at quote” gives your first line item a value of 1, and then continues to the last line item, even if your quote document contains
groups.
• “Start at group” numbers lines in each group, and then resets the numbering to 1 for the first line item in the next group.
Line Sort Field
Order the quote document’s line items based on a field value. If the template has a Group Field value, Salesforce CPQ orders lines within
each group.
Number Terms
Show ordered numbers for your quote terms.
Roll-Up Field
312
Manage Your Quotes with CPQ Quote Template Permissions
Provide a field. Salesforce CPQ combines the line items into one line on the quote template when both of the following conditions apply.
• Quote lines have the same value for this field
• The line column for this field has an active Roll Up field
The new line has the quantity of all the rolled-up lines.
Show All Package Products
Show package products on the quote document. If you don’t select this value, the quote document shows package products only with
non-zero values.
Show Bundled Products
Show quote line items for product options with a selected Bundled field.
Show Customer Discount
Show quote-level customer discounts in the quote total.
Show Partner Discount
Show quote-level partner discounts in the quote total.
Show Renewed Products
Show renewed products on your quote document.
Sub-Group Field
If your quote template uses groups, you can further group line items in each group by sharing values from a different field.
Quote Templates
Dynamic Quote • Quote Terms • Quote Terms • Quote Terms • Quote Terms None
Terms (Admin)
• Term Conditions • Term Conditions • Term Conditions
313
Manage Your Quotes with CPQ Advanced Approvals
Solution Groups • Solution Groups • Solution Groups • Solution Groups • Solution Groups None
(Admin)
Advanced Approvals
Automate and customize your approval process with the Advanced Approvals package for Salesforce
EDITIONS
CPQ. You can require approvals when records meet certain conditions, automate resubmitted
approvals, and control the order that approvers receive requests. Available in: Salesforce CPQ
Note: The Advanced Approvals package doesn’t support Salesforce Platform users or Sales Summer ‘16 and later with
Advanced Approvals 3.1 and
Agreement (Manufacturing Cloud) use cases.
later
Advanced Approvals uses approval rules to determine which approvers receive an approval request
and the email template used to send the requests. When a sales rep submits a record for approval,
such as a quote or opportunity, the Advanced Approvals package evaluates the package’s approval rules. If any of those rules meet their
conditions, the rule runs, and Salesforce CPQ sends approval request emails to your approvers. Users or user groups with approval
permissions in your org can be approvers. Approval chains allow you to send requests to a series of approvers in sequence. The record
isn’t approved until all approvers in all chains have confirmed their approval.
When an approval rule runs, Advanced Approvals also makes an approval record for each approver who received an approval request.
The approval record includes information about the status of the approval request as it moves through approvers. Both the submitted
record and the corresponding approvals have approval status fields allowing admins and sales reps to track their position in the approval
process.
314
Manage Your Quotes with CPQ Advanced Approvals Release Notes
SEE ALSO:
Trailhead: Advanced Approvals for Sales Reps and Approval Managers
315
Manage Your Quotes with CPQ Setting Up Advanced Approvals
316
Manage Your Quotes with CPQ Setting Up Advanced Approvals
3. Create a date field on the Quote object. This field stores the submitted date for the approval.
• Name: Submitted Date
• API Name: SubmittedDate__c
4. Create a user lookup field on the Quote object. This field stores the user record for the user who submitted the quote for approval.
• Name: Submitted User
• API Name: SubmittedUser__c
5. If you’re enabling advanced approvals on quotes, make sure the quote validation rule Invalid_First_Segment_term_end_Date is
inactive.
6. From Setup, in the Quick Find box, enter Apex Classes, and then select Apex Classes.
7. Create an Apex class titled QuoteExtController and add the following code. Remember, if you’re enabling an object other than
quotes, replace the word Quote with the object’s name.
Important: The Salesforce CPQ package already comes with a QuoteExtController for the SBQQ namespace. However, for
this step, you’re creating a different QuoteExtController class. Since it’s a custom class, it doesn’t have a namespace and can
run at the same time as SBQQ__QuoteExtController.
public with sharing class QuoteExtController {
private Id quoteId;
317
Manage Your Quotes with CPQ Setting Up Advanced Approvals
8. Create another Apex class and title it QuoteExtControllerTests. This class is a test class for the class you made in Step 6. In the class
body of QuoteExtControllerTests, add the following code.
@isTest
private class QuoteExtControllerTests {
Test.startTest();
QuoteExtController con = new QuoteExtController(new
ApexPages.StandardController(quote));
con.onSubmit();
quote = [SELECT ApprovalStatus__c FROM SBQQ__Quote__c WHERE Id = :quote.Id LIMIT
1];
Test.stopTest();
System.assertEquals('Approved', quote.ApprovalStatus__c);
}
Test.startTest();
QuoteExtController con = new QuoteExtController(new
ApexPages.StandardController(quote));
con.onRecall();
quote = [SELECT ApprovalStatus__c FROM SBQQ__Quote__c WHERE Id = :quote.Id LIMIT
1];
Test.stopTest();
System.assertEquals('Recalled', quote.ApprovalStatus__c);
}
}
318
Manage Your Quotes with CPQ Setting Up Advanced Approvals
d. Create a Visualforce page that sales reps use when recalling quotes. Use the following values.
• Label: RecallQuote
• Name: RecallQuote
• Visualforce Markup:
<apex:page standardController="SBQQ__Quote__c" extensions="QuoteExtController"
action="{!onRecall}">
<apex:pageMessages />
</apex:page>
319
Manage Your Quotes with CPQ Setting Up Advanced Approvals
Note: To create a Preview Approval button in a Lightning Community, use a global action of the Type: Custom
Visualforce that refers to the Preview Approvals Visualforce page. Add the action to the quote’s Lightning Actions.
When a user clicks the Preview Approval button, the Preview Approvals page for the quote opens.
• Button Label: Preview Approval
• Button Name: Preview_Approval
• Behavior: Display in an existing window with a sidebar.
• Button or Link URL: /apex/sbaa__PreviewApprovals?Id={!SBQQ__Quote__c.Id}
• Link Encoding: Unicode (UTF-8)
SEE ALSO:
How Page Layout Elements Display in Lightning Experience
320
Manage Your Quotes with CPQ Setting Up Advanced Approvals
SEE ALSO:
Troubleshooting Advanced Approval Email Issues
321
Manage Your Quotes with CPQ Setting Up Advanced Approvals
• View email logs to verify that emails are being sent. If an email was sent, review the email platform you’re using.
– Determine whether the IP address is restricted.
– Check with your company resources to identify any security settings that restrict incoming emails.
– Check the Spam folder.
• If the approver has a group ID, and a specific user isn’t getting an email, set up an approver with that user and verify that the email
is being sent. If the user is still not getting the email, verify that the email was sent from Salesforce. (See previous bullet.)
• When choosing a context user for the email service, make sure the user has the permissions and licenses required to access all
referenced objects and fields in your Visualforce email template.
Inbound Emails
• Verify that the Access Level setting is set to All Emails. Find the setting in Setup, in Email Administration, under Deliverability.
• Verify that email services are set up correctly. See Set Up Email Service for Advanced Approvals.
• Verify that the email address in the email services matches the package setting in Inbound Approval Email (Long).
• Verify that the email is an accepted email address based on the email service setting.
• Verify that the context user has the Modify All Data permission.
• Determine whether email templates are set up for the approval rule.
• Determine whether the email template has a reference to the ID in the approval. See Set Up Email Service for Advanced Approvals.
• Determine whether the reply to the email address is the same as the email address you set up.
• If you’re getting the error message “Unable to determine user,” see Error ‘Unable to Determine User’ in Advanced Approvals.
SEE ALSO:
Set Up Email Service for Advanced Approvals
322
Manage Your Quotes with CPQ Preview or Submit a Record for Approval
Note: You can also reassign approvals in bulk via the Replace button on an Approval record.
2. Select the approval records you want to resend, then click Select.
3. Click Resend Request.
You can resend an approval request for a single record. From the record's Approvals related list, click Resend Request next to the
approval.
323
Manage Your Quotes with CPQ Approvers and Approver Groups
324
Manage Your Quotes with CPQ Approvers and Approver Groups
13. Add the API name of the field you named in Step 5.
Important: Dynamic approvals require a single approver record and therefore don’t support delegated approvers.
SEE ALSO:
Knowledge Article: Subordinates Not Recognized as Approval Recipients in Groups for Approval Rule Assignment
Delegate Approvers
Choose a user to receive another user’s approval requests over a predefined time period. Delegated
EDITIONS
approvers are helpful when the original approver can’t respond to approvals, such as during a
vacation. Available in: Salesforce CPQ
1. In the Delegated Approver field, enter the user record of the user you want to delegate. Summer ’16 and later with
Advanced Approvals 3.1 and
2. Use the Delegate Start and Delegate End fields to define the delegation period. The period
later
begins at 12:00 AM. on the delegate start date and ends at 11:59 PM on the delegate end date.
If the delegate approver hasn’t worked with Advanced Approvals before, it’s possible that Salesforce
isn’t configured to quickly view approvals as a regular approver does. After you set up the delegate, make sure that they have the Approve
and Reject buttons on the approval objects page layout and that they have permissions to approve or reject an approval.
SEE ALSO:
CPQ Permission Requirements for Advanced Approvals
Managing Advanced Approval Permissions
Approver Fields
Depending on the page layout and field-level security settings, not all approver fields are visible or
EDITIONS
editable.
Delegated Approver Available in: Salesforce CPQ
This approver receives approval requests instead of the approver defined by the User or Group Summer ‘16 and later with
ID fields. Selecting a delegated approver is useful if you want an approver to remain active for Advanced Approvals 3.1 and
a limited time. For example, you could have an employee be a temporary approver for a user later
who has taken medical leave.
Note: Advanced Approvals doesn’t pass approvals from one delegated approver to
another delegated approver. For example, let’s say John is out of the office and assigns
Mary as his delegated approver. Mary is also out of the office and assigned Ted as her
delegated approver. When John receives an approval request, Advanced Approvals sends
the request to Mary.
Delegation End
Delegated approvers don’t receive requests after this date.
Delegation Start
Delegated approvers don’t receive requests until this date.
Group ID
If the approver represents a group, this field looks up to that Group record’s ID.
325
Manage Your Quotes with CPQ Approval Rules
Unanimous
If the approver represents a group, the request is not considered approved until all members of the group approve it.
User
If the approver is a single user, this field looks up to that person’s User record.
If multiple users have the same email, Advanced Approvals will send an “unable to determine user” email when one of the users
attempts to approve via email.
Approval Rules
Create approval rules to control who receives an approval request or rejection notice and the email
EDITIONS
templates that deliver these messages.
When a sales rep submits a record for approval, Salesforce CPQ evaluates all the active approval Available in: Salesforce CPQ
rules targeting that record’s object. If any of the approval rules meet their approval conditions, the Summer ’16 and later with
rule fires, and Salesforce CPQ sends an approval request email to an approver or group of approvers. Advanced Approvals 3.1 and
You provide a lookup to the approver on the approval rule record. later
Each approval rule contains optional lookups to a request template, approval template, and rejection
template. You can configure your rule so it sends a certain type of email based on your conditions.
Let’s look at a few basic approval rule examples.
• If your sales rep submits a quote with a net total over $100,000, your approval rule sends approval request emails to your company’s
accounting department.
• If your sales rep submits a quote that contains over 10 premium servers, your approval rule sends an approval request email to your
company’s VP of Information Technology.
• If your sales rep submits an opportunity with over 500 line items, your approval rule sends an approval request email to all your
company’s VPs.
You can include several conditions on your rule and use them within conditional logic. Consider these examples.
• Your rule fires if only one of the following conditions is true.
– The quote has a net total of $500,000 or greater.
– The quote has over 1,000 line items.
• Your rule fires if the first condition is true and the second condition is false.
– The quote contains a 500-kilowatt generator
– The quote doesn’t contain a warranty.
326
Manage Your Quotes with CPQ Approval Rules
When comparing them, Advanced Approvals ignores the order and white space of the individual chunks and considers the two values
equal.
These two values aren’t considered equal.
• “ketchup, mustard, pickles”
• “mustard, onions, ketchup”
For Smart Approvals, this comparison is made when we look at the previous snapshot value to determine whether the value changed
and whether the rule must be evaluated again.
Approval Variables
Approval variables aggregate data from child records for evaluation in an approval condition. Advanced Approvals evaluates them
in real time along with the approval condition. They provide an easier way to aggregate data in approval conditions when compared
to roll-up summary fields or Apex Triggers that aggregate data and send it to a field on the object evaluated for approval. For example,
your approval variable can summarize the total number of opportunity products that contain “Premium” in their name across your
opportunity.
Tracked Fields
The Tracked Field object, on an approval rule, tracks changes to a field on a record that a sales rep submitted for approval. When the
approval rule runs, Advanced Approvals stores information about the change in a Tracked Value record. You can review the tracked
values to see what changes were made at various stages of the approval process. You can also configure Advanced Approvals to
show a Tracked Values related list on the record submitted for approval.
Set Up Tracked Fields
Configure a tracked field for an approval rule.
Create an Approval Rule
Add an approval rule to your approval process and define the templates and target objects for your approval actions.
Approval Rule Fields
Approval rules define the conditions under which Advanced Approvals sends an approval request to approvers. With certain page
layouts and field-level security settings, some fields aren’t visible or editable.
Approval Condition Fields
An approval rule runs when it meets its approval conditions relative to the rule’s Conditions Met field.
Approval Variables
Approval variables aggregate data from child records for evaluation in an approval condition.
EDITIONS
Advanced Approvals evaluates them in real time along with the approval condition. They provide
an easier way to aggregate data in approval conditions when compared to roll-up summary fields Available in: Salesforce CPQ
or Apex Triggers that aggregate data and send it to a field on the object evaluated for approval. Summer ’16 and later with
For example, your approval variable can summarize the total number of opportunity products that Advanced Approvals 3.1 and
contain “Premium” in their name across your opportunity. later
Important: Where possible, we changed noninclusive terms to align with our company
value of Equality. We maintained certain terms to avoid any effect on customer
implementations.
Let’s look at some important approval variable fields.
Aggregate Field
Your approval variable performs the aggregate function’s action on this field. For example, if you want to find the average partner
discount across all your quote lines, your example looks up to your quote line’s Partner Discount field.
327
Manage Your Quotes with CPQ Approval Rules
Aggregate Function
Pick the math function to perform on your aggregate field.
Combine With
Provide another approval variable to combine with this approval variable. Advanced Approvals returns the result of that combination
as the output of this approval variable. For example, you want your variable to combine the total number of quote lines containing
“Tablet” with another approval variable that counts the number of quote lines containing “Laptop.” If you have 20 tablet quote lines
and 10 laptop quote lines, your first approval variable returns a value of 30. Your second approval variable returns a value of 10.
Filter Field
Pick a field if you want to filter your target object based on a certain value. For example, you can evaluate only quote lines with a
Product Family field set to Hardware.
Filter Value
Pick a value if you’re filtering your target object.
Operator
Choose the operator to use with your filter.
Target Object
Specifies the child object that this variable aggregates. The child object must have a lookup or master-detail relationship with the
object that a user is submitting for approval.
Note: When no target objects match the filter criteria, the approval variable returns 0 for the minimum and maximum values.
The approval rule uses that value when evaluating the approval condition.
Type
Summary approval variables evaluate several fields, while discount approval variables evaluate a list price and a net price. If you’re
using a summary approval variable, provide values for the Filter Field and Filter Value fields. If you’re using a discount approval
variable, provide values for the List Variable and Net Variable fields.
Example: This approval variable returns the highest quantity value among opportunity product lines that contain “W012671” in
their product code field.
• Target Object: Opportunity Product
• Aggregate Field: Quantity
• Aggregate Function: Max
• Filter Field: ProductCode
• Filter Value: W012671
• Operator: Equals
• Type: Summary
328
Manage Your Quotes with CPQ Approval Rules
5. Click Save.
Example: This approval variable returns the highest quantity value of opportunity product lines that contain “W012671” in their
product code field.
Target Object
Opportunity Product
Aggregate Field
Quantity
Aggregate Function
Max
Filter Field
ProductCode
Filter Value
W012671
Operator
Equals
Type
Summary
329
Manage Your Quotes with CPQ Approval Rules
Tracked Fields
The Tracked Field object, on an approval rule, tracks changes to a field on a record that a sales rep
EDITIONS
submitted for approval. When the approval rule runs, Advanced Approvals stores information about
the change in a Tracked Value record. You can review the tracked values to see what changes were Available in: Salesforce CPQ
made at various stages of the approval process. You can also configure Advanced Approvals to Summer ’16 and later with
show a Tracked Values related list on the record submitted for approval. Advanced Approvals 3.1 and
later
Get Started with Tracked Fields
Review the objects, fields, and configurations needed to set up tracked fields in Advanced
Approvals.
330
Manage Your Quotes with CPQ Approval Rules
Setting up a Tracked Field configuration requires a few components. We can use a flowchart to view how they’re related. In this example,
we want to track the Partner Discount field on the CPQ quote object.
When your approval rule evaluates a tracked field, it creates a Tracked Value record to store information about the field's value. The
Tracked Value record looks up to the record containing the evaluated field. By default, it contains an Opportunity lookup field. If your
tracked object isn’t an opportunity, go to the Tracked Value Custom Object page and add a custom lookup field for that object. In this
example, your tracked object is a CPQ quote, so your Tracked Value object needs a CPQ quote lookup field.
Advanced Approvals makes the tracked value records on its own. The only record that you must make is the Tracked Field record on
your approval rule. It has four fields.
Tracked Object
The object containing the field that you want to track. This field contains only the Opportunity value by default. To use a different object,
add its API name to the picklist.
Tracked Field
331
Manage Your Quotes with CPQ Approval Rules
The field that you’re tracking on the tracked object. Contains only the Type and Amount fields by default. To use a different field, add its
API name to the picklist. In this example, you add SBQQ__PartnerDiscount__c.
Record Field
This field establishes a relationship between the tracked value and your tracked object so that the Tracked Values related list appears on
your tracked object. To establish the related list, make sure that the Record Field value uses the API name of the object referenced by
the custom lookup field that you added to the Tracked Value object: in this case, a CPQ quote.
Important: While other Advanced Approval fields require the SBQQ__ prefix when referring to a CPQ package field, the record
field doesn’t. For example, to refer to a CPQ quote, use Quote__c.
Tracking Type
Defines when Advanced Approvals create a Tracked Value record. If Any Change is selected, Advanced Approvals creates a tracked value
only if the tracked field has changed from the last time the approval rule evaluated it. If All Values is selected, Advanced Approvals creates
a tracked value whenever the approval rule evaluates the tracked field, even if the tracked field’s value hasn’t changed.
When the approval rule evaluates the tracked field for the first time, it creates a Tracked Value record. It also populates the tracked value
record’s custom lookup field with the record that was submitted for approval—in this case, Quote 01205. If the approval rule evaluates
the tracked field again, it creates another Tracked Value record. Because your Tracked Field record has a record field, the Tracked Values
related list appears on your quote with both tracked values.
2. On the Tracked Field object, go to the Tracked Field field and add the value and API name of the field that you want to track.
a. From Setup, in the Quick Find box, enter Objects, then select Objects.
b. Select Tracked Field.
c. From the Custom Fields & Relationships table, select the Tracked Field field.
d. From the Values related list, click New.
e. Enter the value and API name of the field you want to track, and then save your changes.
For example, if you want to track the quote's partner discount field, enter SBQQ__PartnerDiscount__c.
3. Go to the Tracked Object field and add a value and API name for the object containing your tracked field.
a. From the Custom Fields & Relationships table, select the Tracked Object field.
b. From the Values related list, click New.
c. Enter the value and API name of the object containing your tracked field, and then save your changes.
For example, if your tracked object is a CPQ quote, enter SBQQ__Quote__c.
332
Manage Your Quotes with CPQ Approval Rules
a. From your approval rule, go to the Tracked Fields related list and click New.
b. Choose your tracking type.
• All Values: The approval rule creates a Tracked Value record for your tracked field every time the rule fires, even if the tracked
field didn’t change. This also occurs if the Tracking Type field is left blank.
• Any Change: When your approval rule fires, it creates a Tracked Value record only if the tracked field changes.
Important: While other Advanced Approval fields require the SBQQ__ prefix when referring to a CPQ package field,
the record field doesn’t. For example, to refer to a CPQ quote, use Quote__c.
2. On the Tracked Field object, go to the Tracked Field field and add the value and API name of the field that you want to track.
a. From Setup, in the Quick Find box, enter Objects, then select Objects.
b. Select Tracked Field.
c. From the Custom Fields & Relationships table, select the Tracked Field field.
d. From the Values related list, click New.
e. Enter the value and API name of the field you want to track, and then save your changes.
For example, if you want to track the quote's partner discount field, enter SBQQ__PartnerDiscount__c.
3. Go to the Tracked Object field and add a value and API name for the object containing your tracked field.
a. From the Custom Fields & Relationships table, select the Tracked Object field.
b. From the Values related list, click New.
c. Enter the value and API name of the object containing your tracked field, and then save your changes.
For example, if your tracked object is a CPQ quote, enter SBQQ__Quote__c.
333
Manage Your Quotes with CPQ Approval Rules
Important: While other Advanced Approval fields require the SBQQ__ prefix when referring to a CPQ package field,
the record field doesn’t. For example, to refer to a CPQ quote, use Quote__c.
334
Manage Your Quotes with CPQ Approval Rules
When the approver on the approval rule is a group, all users of the group appear in the approval step. If any user in the group has
a delegate, those delegates aren’t included as approvers.
335
Manage Your Quotes with CPQ Approval Rules
Override Field
Looks up to a field that overrides the value of your approval rule’s conditions.
If your approval rule includes this field, when you create a quote that causes an approval condition to evaluate to true, the quote
requires approval. A value evaluates to true if string = true or 1, Boolean = true, or Decimal isn’t zero.
Parallel
All approvals at an approval step happen in parallel. Select this field only if you’re using Advanced Approvals with native approvals.
Recall Template
The email template that this rule sends for approval recalls.
Rejection Recipients
The email template that this rule sends for approval rejections.
Reevaluate Smart Approvals Individually
Reevaluate smart approval conditions even if this rule’s Conditions Met field has a value of All or Custom. If any smart approval
condition returns true, the re-evaluation stops, and Salesforce CPQ considers all this rule’s conditions to be met.
Rejection Template
Sales reps receive an email with this template when the object they submitted for approval is rejected.
Request Template
Sales reps receive an email with this template when approvers request more information or actions for the approval process.
Require Explicit Approval
When an approver completes an approval that this rule created, Salesforce CPQ also approves all of that user’s other approvals.
However, if this field is active, users must manually approve each of their approvals instead.
Target Object
The object that this rule evaluates. When a user submits a record for an approval, Advanced Approvals evaluates all active approval
rules targeting that record’s object.
336
Manage Your Quotes with CPQ Approval Chains
Index
If the approval rule evaluates several conditions in a logical statement, provide a value for referencing each condition in the statement.
For example, you assign an index value of 1 and use it in the statement 1 OR (2 AND 3).
Operator
The operator used to compare the condition’s tested field or tested variable against the filter field or filter value.
Tested Field
The condition evaluates this field against the condition’s filter field, filter value, or filter variable.
Tested Variable
The condition evaluates this approval variable against the condition’s filter field, filter value, or filter variable.
Example: This condition evaluates whether the quote’s Net Amount field has a value over 1,000.
Tested Field
SBQQ__NetAmount__c
Operator
Greater Than
Filter Type
Value
Filter Value
1000
Approval Chains
Use an approval chain to send an approval to several approvers simultaneously. When the approval
EDITIONS
process is completed, Advanced Approvals moves to the next step of approval rules.
An approval chain represents a series of approvals that must happen in a specific sequence. Each Available in: Salesforce CPQ
part of the chain represents an approval rule with a shared Approval Chain field value and an Summer ‘16 and later with
increasing Approval Step field value. For example, you can set up a chain that sends approvals Advanced Approvals 3.1 and
through each management level of your finance team. When the accountant approves an approval, later
the finance manager receives an approval email. When the finance manager approves, the VP of
finance receives an approval email. The request is not fully approved until the VP of Finance provides
their approval.
Approval Rule 1
Approval Chain: 1
Approval Step: 1
Approver: Accountant
Approval Rule 2
Approval Chain: 1
Approval Step: 2
Approver: Finance Manager
Approval Rule 3
Approval Chain: 1
Approval Step: 3
Approver: VP of Finance
337
Manage Your Quotes with CPQ Approval Chains
You can also run several approval chains simultaneously. All chains are initiated when an approval is requested, even if they begin on
different steps. After it’s initiated, a chain moves through its steps independent of other chains. This way, higher levels of the approval
process don’t get bottlenecked if one approver takes a long time to respond. After all chains complete their final approval steps, the
approval process is completed and the record is approved.
Let’s look at a complex approval process with several chains.
If a quote has a net total greater than $1,000,000, the sales rep must receive approval from all five of your company’s managed service
teams.
We’ve outlined this approval path in the following diagram. As soon as the approval is requested, the first approver in each chain receives
the approval request. After they approve, the approval request moves to the next approver in the chain. Each box represents a unique
approval rule, where the text inside matches the rule’s approver. The columns represent each rule’s Approval Chain field, while the rows
represent each rule’s Approval Step.
Remember, all chains must approve the request before the record is approved. In this case, the VP of Finance is the last approver.
338
Manage Your Quotes with CPQ Advanced Approval Emails
Note: If a user replies to an approval email with an invalid keyword, Advanced Approvals halts the approval process and sends
them an email stating "Unrecognized Keyword." The user can still respond to the original approval email with a valid keyword to
move forward with the approval process.
339
Manage Your Quotes with CPQ Advanced Approval Emails
e. Choose the folder where you want to store your email template.
Make sure that the folder is publicly accessible if you want your email template to be publicly accessible.
k. Repeat this process for your rejection, approval, and recall templates.
c. In the Template ID field, enter the ID of the Salesforce request template you made in Step 1.
You can find the ID by going to your Salesforce approval request template, finding the URL in your browser, and copying the
string of numbers and letters after salesforce.com/.
d. Click Save.
340
Manage Your Quotes with CPQ Smart Approvals
Smart Approvals
Smart approvals let you streamline the approval resubmission process for your sales reps. When
EDITIONS
you enable smart approvals on an approval condition, Advanced Approvals compares the condition’s
tested field value during resubmission with the tested value of the previous submission. If the values Available in: Salesforce CPQ
are the same, the approvers for that rule aren’t asked to approve it again during resubmission. Summer ’16 and later with
Enable smart approvals by selecting Enable Smart Approvals on an approval condition. While Advanced Approvals 3.1 and
smart approvals are active, a rejected approval stores the original value of an approval condition’s later
tested field in the Approval Snapshot object. Approval snapshots appear as a related list on the
approval record.
When the sales rep resubmits the quote, Advanced Approvals compares the snapshot value with the value of the new tested field, using
the condition’s logical operator. If the comparison still evaluates to true, the approval condition returns true.
Important:
• If you enable smart approvals on a condition that uses the equals operator, snapshot comparisons always return false. We
recommend avoiding smart approvals on conditions with the equals operator.
• Approval snapshots don’t update for auto-approved approvals.
Let’s look at a basic example. Your sales rep submits a quote under the following approval rule.
Approval Rule
Approver: Finance Team
Condition 1
• Net Total > $60,000
• Smart Approvals: true
A sales rep submits a quote with a net total of $70,000 for approval. Because the tested field meets the approval condition, Advanced
Approvals sends the quote to the finance team, who approves it. The sales rep revises the quote so it has a net total of $75,000, then
resubmits it for approval.
Because smart approvals are active on your condition, Advanced Approvals creates an approval snapshot on your approval record. The
approval snapshot has an Approved Value (Numeric) field with a value of $70,000, representing the original tested value. Advanced
Approvals then compares the new value to the snapshot using the condition’s operator of >=. Because $75,000 is greater than $70,000,
the condition returns true, and Advanced Approvals sends the quote to the finance team for reevaluation. If the net total didn’t change
or was less than $70,000, the condition returns false, and the approval doesn’t require resubmission.
341
Manage Your Quotes with CPQ Smart Approvals
342
Manage Your Quotes with CPQ Smart Approvals
To enable this feature, select the Reevaluate Smart Approvals Individually field on your approval rule.
Example: Your sales rep submits a quote line for approval under the following approval rule.
Approval Rule
Reevaluate Smart Approvals Individually: Enabled
Approver: Sales Manager
Condition 1
• Quantity > 0
• Smart Approvals: Enabled
Condition 2
• Additional Discount > 0%
• Smart Approvals: Enabled
Condition 3
• Partner Discount > 0%
• Smart Approvals: Enabled
Rule Condition: (1 OR 2) AND 3
The quote has a quantity of 10, additional discount of 0%, and partner discount of 20%, which provides the logical statement of
(true OR false) AND true = true. The condition evaluates to true, so Advanced Approvals sends the quote to the Sales
Manager, who approves it. The sales rep recalls the quote, then updates the tested fields.
• Quantity: 20
• Additional Discount: 0%
• Partner Discount 20%
Upon resubmission, Condition 3 becomes false because the value of Partner Discount didn’t change. The rule condition’s logic
is now (true OR false) AND false = false. However, because the rule uses Reevaluate Smart Approvals Individually,
Advanced Approvals recognizes that the tested value for Condition 1 changed, and so the results are ignored. Advanced Approvals
sends the quote to the Sales Manager for reevaluation.
343
Manage Your Quotes with CPQ Smart Approvals
344
Manage Your Quotes with CPQ Smart Approvals
Condition 2
The new value of 0 isn’t greater than the snapshot value of 3. Therefore, this condition requires re-evaluation, so it returns a
value of true.
After the comparisons, the rule condition returns a statement of false AND (true OR false), which evaluates to false.
Therefore, the quote is approved automatically. Due to your rule condition’s logical statement and the fact that Condition 1
reevaluated to false, the quote doesn’t require reapproval, even though your second and third conditions changed between
evaluations.
Example: Rules with smart conditions can still require re-evaluation if a sales rep resubmits a record without changing any of
the tested conditions. You often see this situation in rules with complex rule conditions and mixed condition types, where one
smart condition moving from true to false isn’t enough to change the condition’s overall logical result. Let’s look at an example.
Your sales rep submits a quote under the following approval rule.
Approval Rule
Approver: Sales Manager
Condition 1
• Opportunity Type = New
• Smart Approvals: Disabled
Condition 2
• Service Discount > 15%
• Smart Approvals: Disabled
Condition 3
• Subscription Discount > 15%
• Smart Approvals: Enabled
Rule Condition: 1 AND (2 OR 3)
The quote meets all three conditions, which returns the logical statement true AND (true OR true) = true. The statement
returns true, so Advanced Approvals submits the quote to the Sales Manager, who approves it. The sales rep then recalls the
approval, changes a noncondition value, and resubmits the quote.
Because Condition 3 is a smart approval, Advanced Approvals checks whether the tested value’s original state and its new state
are different. They aren't different, so Condition 3 now returns false, and the new logical statement is true AND (true OR
false) = true. The logic still evaluates to True, so Advanced Approvals sends another approval request to the Sales Manager.
345
Manage Your Quotes with CPQ Smart Approvals
Example: When rules use mixed condition types, conditional logic can also cause a resubmitted approval not requiring reevaluation,
even when a condition changes. Let’s look at an example.
Your sales rep submits a quote line under the following approval rule.
Approval Rule
Approver: Sales Manager
Condition 1
• Quantity < 10
• Smart Approvals: Disabled
Condition 2
• Additional Discount > 10%
• Smart Approvals = Enabled
The quote has a quantity of 9 and additional discount of 15%, which returns the logical statement true OR false = true.
The statement returns true, so Advanced Approvals submits the quote to the Sales Manager, who approves it. The sales rep
recalls the approval, changes a nonconditional value, and then resubmits it.
Because condition 2 is a smart approval, Advanced Approvals checks whether the tested value’s original state and its new state
are different. They aren't different, so Condition 2 returns false, and the new logical statement is true OR false = true.
The logic still evaluates to True, so Advanced Approvals sends another approval request to the Sales Manager, who approves it.
Finally, the sales rep recalls the quote a second time, changes the quantity to 11, and resubmits it. The first condition returns
false, and because the tested value for our smart condition hasn’t changed, the second condition still returns false. This
configuration provides the logical statement false OR false = false. Because the logic evaluates to false, Advanced
Approvals doesn’t send an approval request to the sales manager.
Example: Let’s review an approval rule that uses mixed conditions with a complex rule condition.
Approval Rule
Approver: Sales Manager
Condition 1
• Opportunity Type = New
• Smart Approvals: Disabled
Condition 2
• Service Discount > 15%
• Smart Approvals: Enabled
Condition 3
• Subscription Discount > 15%
• Smart Approvals: Enabled
Condition 4
• Net Total > $500,000
• Smart Approvals: Disabled
Condition 5
• Customer Type = Partner
• Smart Approvals: Enabled
346
Manage Your Quotes with CPQ Managing Advanced Approval Permissions
SEE ALSO:
CPQ Permission Requirements for Advanced Approvals
Permissions for Advanced Approval Actions
347
Manage Your Quotes with CPQ Managing Advanced Approval Permissions
• Approval Chain
• Approval Rule
• Approver
• [Object being
approved]
• Approval Chain
• Approval Rule
348
Manage Your Quotes with CPQ Managing Advanced Approval Permissions
• Approver
• Email Template
• [Object being
approved]
SEE ALSO:
Assign Advanced Approval Permission Sets
349
Manage Your Quotes with CPQ Managing Advanced Approval Permissions
Sales Reps with the ability • Quote Line Groups • Quote Line Groups • Quote Line Groups • Quote Line Groups
to group line items
Block prices (Admin) • Block Prices • Block Prices • Block Prices • Block Prices
Discount Schedules • Discount Schedules • Discount Schedules • Discount Schedules • Discount Schedules
(Admin) • Tiers • Tiers • Tiers • Tiers
350
Manage Your Quotes with CPQ Managing Advanced Approval Permissions
Price Rules (Admin) • Price Actions • Price Actions • Price Actions • Price Actions
• Price Conditions • Price Conditions • Price Conditions • Price Conditions
• Price Rules • Price Rules • Price Rules • Price Rules
• Price Conditions
• Price Rules
Guided Selling (Admin) • Process Inputs • Process Inputs • Process Inputs • Process Inputs
• Quote Processes • Quote Processes • Quote Processes • Quote Processes
• Quote Processes
Product Rules (Admin) • Product Actions • Product Actions • Product Actions • Product Actions
• Product Rules • Product Rules • Product Rules • Product Rules
• Product Rules
Dynamic Quote Terms • Quote Terms • Quote Terms • Quote Terms • Quote Terms
(Admin)
• Term Conditions • Term Conditions • Term Conditions
351
Manage Your Quotes with CPQ Advanced Approvals Package Settings
SEE ALSO:
Assign Advanced Approval Permission Sets
352
Manage Your Quotes with CPQ Approval Fields for CPQ Advanced Approvals
353
Manage Your Quotes with CPQ Manage Your CPQ Orders
Record Field sbaa__RecordField__c String (80) API name of the Approval field
looking up to the record being
approved. Required.
354
Manage Your Quotes with CPQ Set Up Salesforce CPQ Orders
e. To create orders from approved quotes only, select Require Approved Quotes.
4. On the user profiles for CPQ users working with orders, enable Create, Edit, and Read permissions on these fields.
355
Manage Your Quotes with CPQ Guidelines for Setting Up CPQ Orders
Important:
• After placing an order against a quote, don’t modify any parts of the quote that affect cost. Don’t modify products, dates and
schedules, quantity, or price.
• We recommend leaving Price Calculation Status as a read-only field. Making the field editable can cause errors during the price
calculation process.
• Don’t edit or delete the Status field’s Draft and Activated picklist values.
356
Manage Your Quotes with CPQ Create 1 Order Per Quote
• To avoid an order creation failure when you’re using the enabled State / Country Picklist, if the integration value and country
value don’t match, enter the country code into country code fields such as SBQQ__BillingCountry__c and
SBQQ__ShippingCountry__c on SBQQ_Quote.
If you make one order for your entire quote, you can’t change order product quantities unless you contract your quote and amend it.
1. Make sure that Allow Multiple Orders is not selected.
2. Click Create Order on your opportunity or quote. You can also select Ordered on your opportunity or quote and then click Save.
3. Complete the detail fields, and then save your changes.
Salesforce CPQ creates an order with order products that cover the entire quantity of all quote lines on your account.
357
Manage Your Quotes with CPQ Create Multiple Orders from a Quote
SEE ALSO:
Edit Order Product Quantities
358
Manage Your Quotes with CPQ Create Multiple Orders from a Quote
Before you begin, make sure the CPQ Orders package setting Allow Multiple Orders is selected.
1. On your opportunity or quote, click Create Order.
2. Complete the detail fields, and then save your changes.
The Select Products page shows the quantity per quote line that you have available to order from the quote and shows the quantity
that has been ordered.
3. Select the checkbox to include a quote line on your order.
The Quoted Quantity field shows the total quantity of the quote line. You can order some, all, or none of a quote line. If you’re ordering
a partial quantity, enter that value in the Quantity field.
Salesforce CPQ creates the order record and updates the Select Products page to reflect the new Ordered Quantity values.
You can also click Ordered on your opportunity or quote and then save your changes. This process creates an order with all remaining
unordered quote lines from your quote.
You can order a partial quantity of covered assets for a Percent of Total subscription. Salesforce CPQ brings these assets and the Percent
of Total subscription onto the order, where the Percent of Total order product always has a quantity of one. The Percent of Total order
product’s total price equals the quantity of covered assets multiplied by the subscription quote line’s list price.
Before you begin, make sure the CPQ Orders package setting Allow Multiple Orders is selected.
This feature is helpful if you can easily organize your quoted products by groups—for example, you can have one group for hardware,
one group for apps, and one group for license subscriptions. When you order your quote, quote lines from each group go into a different
order.
1. On your quote, select Order by Quote Line Group.
2. Select Ordered.
Note: Only the Ordered field causes Salesforce CPQ to split orders based on the Order By field. If you click Create Order,
Salesforce CPQ takes you to the Edit Order Products page for manual order splitting.
359
Manage Your Quotes with CPQ Create Multiple Orders from a Quote
Before you begin, make sure the CPQ Orders package setting Allow Multiple Orders is selected.
Salesforce CPQ supports quote line field values for the Order By field. When you order a quote that has a non-null Order By field value,
Salesforce CPQ looks for a quote line field with an API name that matches the Order By value. It then groups the quote lines into orders
based on shared values by the chosen field. If any quote lines have a null value, they’re grouped into one order.
1. From the object management settings for CPQ quotes, edit the Order By field, and then add a picklist value for the API name of the
quote line field that you want to use for grouping quote lines into different orders.
2. On your quote, select the Order By field, and then change its value to the value you added in Step 1.
3. Select Ordered, and then save your changes.
Note: Only the Ordered field causes Salesforce CPQ to split orders based on the Order By field. If you click Create Order,
Salesforce CPQ takes you to the Edit Order Products page for manual order splitting.
If you set Unit_Color__c as the quote’s Order By value and select Ordered, Salesforce CPQ creates four orders.
360
Manage Your Quotes with CPQ Create Multiple Orders from a Quote
3 Yellow Monitor 5
4 • Standard Tablet • 3
• Premium Tablet • 2
If you have the Order By Quote Line Group selected while Order By also has a value, Salesforce CPQ organizes your orders first by quote
line group and then by Order By field value.
Note: In Lightning, clicking the Create Order button only creates the order related to the quote. If a user then clicks Edit Order
Products, order products are created for all quote lines related to the order's quote.
SEE ALSO:
Enable Order Product Editing
361
Manage Your Quotes with CPQ Manage Dates for Your Orders and Order Products
362
Manage Your Quotes with CPQ Manage Dates for Your Orders and Order Products
Note: Before Salesforce CPQ Summer ’18, the order’s end date defaulted to the latest end date of all its order products. As of
Salesforce CPQ Summer ’18, the order no longer populates its End Date field. Salesforce CPQ calculates order product end dates
based only on the quote line logic described above, even if you provide an order end date on your own.
Example: If a quote line’s start date is changed to be earlier than the quote’s start date, Salesforce CPQ offsets the quote line to
account for the difference, which carries over to resulting order products. Consider the following quote and quote line.
Quote
Start Date: 02/01/18
End Date: 01/31/19
Quote Line 1
Start Date: 12/01/17
End Date: 11/30/18
After you save the quote, Salesforce CPQ adjusts the quote line’s start date.
Quote Line 1
Start Date: 02/01/18
End Date: 01/31/19
363
Manage Your Quotes with CPQ Generate Accurate Revenue Reports with Bookings
364
Manage Your Quotes with CPQ Order Fields for CPQ and Billing
5. Click Save.
Salesforce CPQ creates the tax exemption certificate for your account. If the certificate is active and default, Salesforce CPQ also
changes your account’s Tax-Exempt field from No to Yes.
• You can create multiple tax exemption certificates on a single account.
• Your account’s Tax-Exempt field has a value of Yes as long as the account contains at least one tax certificate that is default and
active. When this is no longer the case, Salesforce CPQ changes tax-exempt to No.
Estimated Tax SBQQ__TaxAmount__c Roll-Up Summary (SUM Order The estimated amount of tax
Product) before the order is finalized.
Populated by the Salesforce
Billing package's standard tax
integration feature, or by
external tax integration
packages for Salesforce CPQ and
Salesforce Billing. For more
information, review your tax
integration's documentation.
Order Bookings SBQQ__OrderBookings__c Roll-Up Summary (SUM Order Calculates the total amount of
Product Bookings) all order product bookings.
365
Manage Your Quotes with CPQ Order Fields for CPQ and Billing
Price Calculation Status Message SBQQ__PriceCalcStatusMessage Text(255) Shows the status of price
calculation for usage order
products on your order.
Salesforce CPQ updates this field
throughout the calculation
process.
366
Manage Your Quotes with CPQ Order Product Fields for CPQ and Billing
Note: “SBQQ__” fields come with the Salesforce CPQ package, and “blng__” fields come CPQ fields available in
with the Salesforce Billing package. Salesforce CPQ Summer ’16
and later.
367
Manage Your Quotes with CPQ Order Product Fields for CPQ and Billing
Block Price SBQQ__BlockPrice__c Lookup(Block Price) The block price that applied to
the quote line that created this
order product.
368
Manage Your Quotes with CPQ Order Product Fields for CPQ and Billing
Full-Term Net Unit Price SBQQ__UnproratedNetPrice__c Currency(14,2) The full-term net price for this
order product. Inherited from
the quote line. This field is
deprecated as of Salesforce
Billing Summer ‘18.
369
Manage Your Quotes with CPQ Order Product Fields for CPQ and Billing
Quoted List Price SBQQ__QuotedListPrice__c Number(12, 2) List unit price for the product
quoted by this line item. The list
price originates from the price
book.
Quote Line SBQQ__QuoteLine__c Lookup(Quote Line) The quote line where this order
product originated. (Read only)
370
Manage Your Quotes with CPQ Order Product Fields for CPQ and Billing
Term Discount Schedule SBQQ__TermDiscountSchedule__c Lookup(Discount Schedule) The term discount schedule that
applied to the quote line that
created this order product.
371
Manage Your Quotes with CPQ Order Product Fields for CPQ and Billing
Billing Fields
Billed Amount (without tax) blng__BilledAmountwithouttax__c Currency(16, 2) The sum of all this order
product’s invoice lines,
excluding tax.
Billing GL Rule blng__BillingGLRule__c Lookup(GL Rule) Billing rule for including billing
transactions in an external
general ledger.
372
Manage Your Quotes with CPQ Order Product Fields for CPQ and Billing
Important: Included
usage is available only for
usage products using
price schedules.
373
Manage Your Quotes with CPQ Order Product Fields for CPQ and Billing
Invoice Run Processing Status blng_InvoiceRunProcessingStatus__c Picklist Shows the status of an order
product as the invoice run
evaluates it.
• Pending Billing: A future
invoice run creates another
invoice line from the order
product during its
upcoming billing period.
• Will Not Invoice: The invoice
run evaluated the order
product and determined it’s
not invoiceable.
• Error: The invoice run
encountered an error while
trying to invoice the order
product. For more
information, review the
invoice scheduler’s error log.
• In Progress: The invoice has
created an invoice line but
hasn’t posted it yet.
• Completed: The invoice run
created and posted an
invoice line for the order
product. The order product
won’t create any more
invoice lines.
Invoice Run Start Date blng__InvoiceRunStartDate__c Date/Time The start date and time of the
invoice run that is evaluating this
order product.
Invoice Run Status (Index) blng__InvoiceRunStatusIndex__c Text(255) The stage of the invoice run that
is evaluating this order product
for billing. Users must not
update this system field. This
field is automatically updated
374
Manage Your Quotes with CPQ Order Product Fields for CPQ and Billing
Last Charge To Date blng__LastChargeToDate__cs Date The date an order product was
billed through. This date is equal
to the end date of the last
invoice line for this order
product. Salesforce Billing sets
this field automatically and users
can't change it. It's used in the
calculation of invoice charge
amounts.
Last Invoice Target Date blng__LastInvoiceTargetDate__c Date The target date of the most
recent invoice run that
generated an invoice line for this
order product. Salesforce Billing
sets this field automatically and
users can't change it. It's used
mostly for auditing purposes.
Legal Entity blng__LegalEntity__c Lookup(Legal Entity) The legal entity that covers this
order product. When you bill this
order product, Salesforce CPQ
uses the legal entity to apply
billing rules, tax rules, revenue
recognitions rules, and their
related treatments.
Lifecycle-Managed Asset blng_Asset_c Lookup(Asset) The asset for the order product
that is used with the Customer
Asset Lifecycle Management
(CALM) service.
Next Billing Date blng__NextBillingDate__c Date The next date that Salesforce
Billing evaluates and prices this
product for billing. This is a
system field that users and
admins shouldn't change.
Next Charge Date blng__NextChargeDate__c Date The next date that Salesforce
Billing will charge this order
product. Salesforce Billing sets
this field based on this order
product’s billing frequency,
billing type, and date of invoice.
Users can’t change it.
375
Manage Your Quotes with CPQ Order Product Fields for CPQ and Billing
Override Initial Revenue End blng__OverrideInitialRevenueEndDate__c Date Sets the end date of revenue
Date recognition to any desired date.
This controls the end date of any
revenue schedules created from
this order product.
Override Initial Revenue Start blng__OverrideInitialRevenueStartDate__c Date Sets the start date of revenue
Date recognition to any desired date.
This controls the start date of
any revenue schedules created
from this order product.
Override Next Billing Date blng__OverrideNextBillingDate__c Date Set a one-time custom billing
date that invoice schedulers use
instead of the Next Billing Date
field when evaluating order
products for invoicing. Salesforce
Billing erases this field’s value
after invoicing the order
product.
Revenue Recognition Rule blng__RevenueRecognitionRule__c Lookup(Revenue Recognition The revenue recognition rule
Rule) that defines whether Salesforce
Billing creates a revenue
schedule for and applies
revenue recognition treatments
to this order product.
376
Manage Your Quotes with CPQ Order Product Fields for CPQ and Billing
Tax City (Override) blng__TaxCity__c Text(255) The city of the address that
Salesforce Billing uses to
calculate tax for this order
product.
Tax Country (Override) blng__TaxCountry__c Text(255) The country of the address that
Salesforce Billing uses to
calculate tax for this order
product.
Tax County (Override) blng__TaxCounty__c Text(255) The county of the address that
Salesforce Billing uses to
calculate tax for this order
product.
Tax GL Rule blng__TaxGLRule__c Lookup(GL Rule) Tax rule for recording tax
transactions in an external
general ledger.
Tax GL Treatment blng__TaxGLTreatment Lookup(GL Treatment) Tax treatment for recording tax
transaction in an external
general ledger.
Tax Postal Code (Override) blng__TaxZipCode__c Text(50) The postal code of the address
that Salesforce Billing uses to
calculate tax for this order
product. Overrides the postal
code inherited from the account.
Tax Rule blng__TaxRule__c Lookup(Tax Rule) The tax rule assigned to the
order product. Tax rules and
377
Manage Your Quotes with CPQ Order Product Fields for CPQ and Billing
Tax State (Override) blng__TaxState__c Text(255) The state of the address that
Salesforce Billing uses to
calculate tax for this order
product. Overrides the state
inherited from the account.
Tax Street 1 (Override) blng__TaxStreet__c Text(255) The street of the address that
Salesforce Billing uses to
calculate tax for this order
product. Overrides the street
inherited from the account.
Tax Street 2 (Override) blng__TaxStreet__c Text(255) The street of the address that
Salesforce Billing uses to
calculate tax for this order
product. Overrides the street
inherited from the account.
Important: Included
usage is available only for
usage products using
price schedules.
378
Manage Your Quotes with CPQ CPQ Quote to Order Field Mapping
Optional SBQQ__Optional__c
Quote to Order
379
Manage Your Quotes with CPQ Order Permissions
Required By SBQQ__RequiredBy__c
Order Permissions
Depending on your settings and your company’s internal processes, it can be necessary to customize order permissions for your users.
Orders
Note:
• Create-level permissions on orders apply only to CPQ users who don't already have the Salesforce Billing permission set.
• Block prices and discount schedules also require Read access if any of your quote lines use them for pricing.
• For usage products on orders and percent of total (PoT) products on orders, no additional access is required to read, create,
edit, or delete.
• Activating an order product as a standard user with standalone orders requires these permissions.
– Consumption Schedule
– Consumption Rates
– Order Item Consumption Schedule
– Order Item Consumption Rates
380
Manage Your Quotes with CPQ Order Permissions
381
Manage Your Quotes with CPQ Manage Your Subscriptions and Assets
Tip: The contract’s Active Contract Lookup field set lets you customize the columns that appear in the Active Contract Selection
page.
382
Manage Your Quotes with CPQ Manage Your Subscriptions and Assets
Asset-based You don’t sell subscription • To create assets, click • Creates an asset record for
products or you use only Contracted on your quote each nonsubscription
percent of total products to or order. product with asset
represent your subscription conversion and associates
products. these records with your
account.
383
Manage Your Quotes with CPQ Creating a Contract from an Opportunity
Note:
• When you contract an opportunity containing a subscription quote line with a zero quantity, Salesforce CPQ creates a
zero-quantity subscription record on the contract. But zero-quantity products aren’t supported during amendment or renewal.
• Users with read-only access to subscribed assets can create contracts and subscribed assets through the opportunity and order
contracting process. Although this method isn’t a standard security allowance, Salesforce CPQ supports it as a business flow.
384
Manage Your Quotes with CPQ Creating a Contract from an Opportunity
Note: Salesforce CPQ creates contracts only when a user or process selects the Contracted checkbox on an opportunity or
order. Amending a contract with net-new subscriptions on the amended quote while this method is active doesn’t produce
a new contract.
Single Contract
Salesforce CPQ creates one contract for all your opportunity’s subscription products.
The single contracting method is not available for evergreen quote lines. Evergreen and non-evergreen subscriptions must be
managed on different contracts.
Example: You’re contracting an opportunity containing a quote for several of your company’s software subscriptions. Let’s have
a look at how Salesforce CPQ creates your contracts and assigns subscriptions to them based on your quote’s contracting methods.
For example, in Table 1, Contract 1 contains the MDM Subscription and the Data Security Subscription. You can access all these
contracts from your opportunity’s Contracts related list.
385
Manage Your Quotes with CPQ Creating a Contract from an Opportunity
SEE ALSO:
Guidelines for Renewing a Contract with Multiple Subscription End Dates
Contracting Permissions
Depending on your settings and your company’s internal processes, it can be necessary to customize contracting permissions for your
users.
386
Manage Your Quotes with CPQ Creation of a Contract from an Order
Note: When you contract an order containing a subscription order product with a quantity of zero, Salesforce CPQ doesn't create
a subscription record for it on the resulting contract. If you need a subscription with a quantity of zero, contract from the opportunity
instead.
Salesforce CPQ also creates subscribed assets for any of the percent of total subscription products that you contracted.
Through the order record, you can create a contract for percent of total, covered, or bundle order products.
You can also contract a single order product on your order, even when the order record is unactivated. Go to your order product, activate
it, select its Contracted checkbox, and then save your changes. Salesforce CPQ creates a contract and subscription record as if you had
contracted an order with a single order product.
Tip: You can activate and contract an order product even if its parent order is unactivated. This feature is useful if you want to
contract a few subscriptions on a large order and then contract the rest of the order from the order record.
Salesforce CPQ creates assets for your order products with related products that have One per Unit or One per Quote Line asset conversion.
These records contain pricing values for the nonsubscription products you quoted. You can access your asset records from your account.
Note: As of Salesforce CPQ 210.13, the order contracting process respects the value of the Subscriptions and Renewals package
setting Contract in Foreground.
387
Manage Your Quotes with CPQ Creation of a Contract from an Order
The order field Contracting Method controls how Salesforce CPQ sets the start dates and end dates
of contracts you create from your order. The field inherits its value from the quote that created your order.
By Subscription End Date
Salesforce CPQ groups subscription products by end dates into separate contracts. Each contract’s start date is equal to the earliest
start date among its subscription products. This value is the default contracting method value.
Note: Salesforce CPQ creates contracts only when a user or process selects the Contracted checkbox on an opportunity or
order. Amending an order with net-new subscriptions on the amended quote while this method is active doesn’t produce a
new contract.
Single Contract
Salesforce CPQ creates one contract for all your opportunity’s subscription products.
The single contracting method isn’t available for evergreen quote lines. Evergreen and non-evergreen subscriptions must be managed
on different contracts.
When using single contracts, if you start a contract process and then start another contract process before the first one has finished,
Salesforce CPQ creates multiple contracts. To avoid this, make sure to wait until the first contracting process has finished.
Example: You’re contracting an order for several of your company’s software subscriptions products. Let’s have a look at how
Salesforce CPQ creates your contracts based on the contracting methods of your order and order products.
Service Desk 03/01/18 10/12/18 Inherit Contract 2 03/01/18 10/12/18 03/01/18 10/12/18
Subscription
388
Manage Your Quotes with CPQ Creation of a Contract from an Order
Subscription Start Date End Date Contracting Resulting Contract Contract Subscription Subscription
Order (Order (Order Method Subscription Start Date End Date Start Date End Date
Product Product) Product) (Order Goes To
Product)
Data Backup 05/01/18 11/15/18 Inherit Contract 3 05/01/18 11/15/18 05/01/18 11/15/18
Subscription
Data Backup 06/01/18 11/15/18 Inherit Contract 3 05/01/18 11/15/18 06/01/18 11/15/18
Subscription
Release & 06/01/18 11/15/18 Do Not None None None None None
Deployment Contract
Subscription
Service Desk 03/01/18 10/12/18 Inherit Contract 1 01/01/18 11/15/18 03/01/18 10/12/18
Subscription
Data Backup 05/01/18 11/15/18 Inherit Contract 1 01/01/18 11/15/18 05/01/18 11/15/18
Subscription
Data Backup 06/01/18 11/15/18 Inherit Contract 1 01/01/18 11/15/18 06/01/18 11/15/18
Subscription
Release & 06/01/18 11/15/18 Do Not None None None None None
Deployment Contract
Subscription
389
Manage Your Quotes with CPQ Track Contracting Job Status
Asset Guidelines
Assets are records of non-subscription products that you quoted or sold to your customers. You
EDITIONS
can amend or renew your assets on an amendment quote or renewal quote.
Salesforce CPQ creates assets when you click Contracted on an opportunity or order. The asset Available in: All Salesforce
creation process varies based on your account’s renewal model and the value of the asset conversion CPQ Editions
field on the product you’re contracting. We can summarize this process with a flowchart.
390
Manage Your Quotes with CPQ Asset Guidelines
1. First, Salesforce CPQ evaluates whether the product has subscription pricing. If it does, Salesforce CPQ then evaluates whether it has
a one-time price dimension. If it does, Salesforce CPQ creates an asset.
2. If the product doesn't have subscription pricing, Salesforce CPQ evaluates whether it has:
a. Entitlement conversion, for Service Cloud orgs, or
b. Asset conversion, for Revenue Cloud orgs
3. If the product has entitlement conversion or asset conversion, Salesforce CPQ creates an asset.
The Asset Conversion field affects how Salesforce converts the source quote line's quantity to one or more asset records.
One per unit
Salesforce CPQ creates one asset record for each unit of the quote line as indicated by its quantity. For example, a quote line with a
quantity of five for a non-subscription product would create five asset records each with a quantity of one.
One per quote line
Salesforce CPQ creates one asset record that represents the entire quantity of the quote line or order product. For example, a quote
line with a quantity of five for a non-subscription product would create one asset record with a quantity of five.
None
Salesforce CPQ doesn’t convert this quote line to an asset. This setup is useful if you’re selling a one-time product that you don’t
need to renew or track. For example, you could sell a software license subscription and then include a product that represents a user
training class. Your customers continue to renew the subscription, but they don’t need to renew or track the training class.
SEE ALSO:
Amend Your Contracts
Amend Your Assets
Upgrade Assets
391
Manage Your Quotes with CPQ Asset Guidelines
Parent Asset 1
Quantity: 1
Parent Asset 1’s Component Option
Quantity: 5
Parent Asset 2
Quantity: 1
Parent Asset 2’s Component Option
Quantity: 5
Salesforce CPQ doesn’t provide combine key values for assets that you upload from an external source. In this case, you enter a value
manually.
392
Manage Your Quotes with CPQ Subscription Guidelines
When you contract this bundle, Salesforce CPQ has no way of determining how to allocate the accessories and related products among
the two asset records. Instead, the system creates on your account an asset record to serve as the bundle parent for the accessories and
related products. This record exists until you renew the contract and roll the accessories and related products back into their respective
quote lines on an amendment quote or renewal quote. We call this record a virtual asset so users know that it exists only on the contract.
The virtual asset has a lookup to the same quote line and account as your parent asset. It also has a name equal to your parent asset’s
name with “(Virtual)” at the end. All its other fields are null.
Note: Salesforce CPQ doesn’t create virtual asset parents for nested one-per-unit bundle parents that contain an accessory or
related product as a child option.
When you contract your IT bundle, Salesforce CPQ creates an IT Professional Pack (Virtual) to serve as the parent for monitor and printer.
You can see this relationship by their Required by Asset values. The laptops are distributed evenly between the two IT Professional Packs.
Every asset in the bundle has a lookup to IT Professional Pack (Virtual) on their Virtual Asset field, except the virtual asset itself. This lookup
reminds you that the bundle contains a virtual parent and allows you to reference it as needed.
Subscription Guidelines
Subscription records contain information about subscription products on opportunities or orders
EDITIONS
that you’ve contracted.
When you contract an opportunity or order, your subscriptions inherit the following field values Available in: All Salesforce
from their subscription product quote lines or order products. CPQ Editions
• List Price
• Net Price
• Customer Price
• Quantity
• Account
393
Manage Your Quotes with CPQ Subscription Guidelines
Let’s look at some standard subscription fields. Later, we’ll review subscription fields that affect your renewal process.
Start Date
The first date this subscription is in effect. Your subscription inherits this value from the start date of its parent contract.
End Date
The last date this subscription is in effect. Your subscription inherits this value from the end date of its parent contract.
Subscription Start Date
By default, this value matches the quote line start date. To override the Start Date field with a date of your choosing, enter a value for
this field. If left blank, this value matches the contract start date.
Subscription End Date
By default, this value matches the quote line end date. To override the End Date field with a date of your choosing, enter a value for this
field. If left blank, this value matches the contract end date.
Note: Salesforce CPQ doesn’t support creating a single contract through partial ordering for custom subscriptions.
394
Manage Your Quotes with CPQ Subscription Guidelines
Note:
• Our example subscription product lasts for one year, so remember to adjust the product’s subscription term based on the
package-level subscription term unit. If the term unit is months, set the subscription term to 12. If the term unit is days, set the
subscription term to 365.
• The prorate multiplier field that you see on CPQ objects is rounded to four decimal places. However, prorated list prices are
calculated using the complete value.
Day with Calendar Month Weighted This value works similarly to Day. The only Term Unit = Month
difference occurs when your org uses The default subscription term of 12
monthly subscription term units and months from our start date of 05/23/19
calculates one full subscription term. If your puts the default end date at 05/22/20.
quote’s term doesn’t contain a leap day, However, since our effective
Salesforce CPQ doesn’t add an extra day to subscription end date is 09/30/19, we
the full subscription term length. don’t include the leap day (2/29/20) in
Only use 366 days if the effective our calculations, giving us a prorate
subscription term actually includes a leap multiplier of 0.3589, or (131/365). Our
day. prorated list price is $12000 * (131/365)
You can select this setting only if your = $4306.85.
Subscription Term Unit is Month. While this
value is active, the quote line must have a
default subscription term of 12.
This setting is available in Salesforce CPQ
Winter ’20 and later.
395
Manage Your Quotes with CPQ Subscription Guidelines
Monthly + Daily Calculate the subscription term’s length as Term Unit = Month
its number of whole months plus a decimal 05/23/19 through 09/22/19 = 4 months
for any partial month at the end of the term, 09/23/19 through 09/30/19 = 8 days,
then divide this value by your subscription so we’ll use (8/(365/12)) to calculate the
term. The partial month equals the number partial month value in our prorate
of days in the month divided by (365 /12). multiplier.
We recommend using this setting if you sell Prorate multiplier = (4 + (8 / (365 / 12)))
and price products by month or year but / 12 = 0.3553
don’t regularly quote for specific periods of
time. Prorated list price = $12,000 * ((4 + (8 /
(365 / 12))) / 12) = $4263.01.
You can select this setting only if your
subscription term unit is Month.
Calendar Monthly + Daily This setting works the same as Month + Day, Term Unit = Month
but bases calculations on the exact length 05/23/19 through 05/31/19 = (9/31)
of the beginning month and ending month, days
rather than using (365 /12). 06/01/19 through 08/31/19 = 3 months
You can select this setting only if your 09/01/19 through 09/30/19 = (30/30)
subscription term unit is Month. days
This setting is available in Salesforce CPQ Prorate multiplier = (3 + (9 / 31 + 30 /
Winter ’20 and later. 30)) / 12 = 0.3575
Prorated list price = $4,290.32
Proration Day of Month (Calendar Monthly This setting is helpful for customers using For more information and examples, review
+ Daily) CPQ and Billing who want to avoid pending Align CPQ and Billing Cancellation Based on
balances when they cancel an order Billing Periods.
product.
While Proration Day of Month (Calendar
Monthly + Daily) is active, Salesforce CPQ
calculates proration periods based on
quote’s proration day of month. The setting
uses the same formula as Calendar Month
+ Daily to calculate the prorate multipliers.
396
Manage Your Quotes with CPQ Subscription Guidelines
Whole-Month Calculations
For monthly subscription term units, Salesforce CPQ calculates a whole month by adding a value of one to the original month’s number
for each month in the subscription term. If the result goes past the term’s end date, CPQ recalculates using one value less. The period
from this date until the end of the term is a partial period.
Let’s look at some basic examples.
Term Calculation
12/31/2019 through 06/20/2020 We add 6 months to 12/31, which puts us at 06/31. So, we
recalculate using a value of 5 to get us to 05/31.
This calculation gives us a period of five full months + a partial
period of (05/31 through 06/20 = 21 days).
12/30/2019 through 6/20/2020 We add 6 months to 12/30, which puts us at 06/30. So, we
recalculate using a value of 5 to get us to 05/30.
This calculation gives us a period of five full months + a partial
period of (05/31 through 06/20 = 21 days).
397
Manage Your Quotes with CPQ Subscription Guidelines
When start dates fall on or near the end of the month, we run into cases where the last period’s end date would be invalid.
Term Calculation
12/31/2019 through 03/15/2020 We add 3 months to 12/31, which puts us at 03/31. When we
recalculate using a value of 2, we get 02/31. Since this date is
invalid, we use 02/29 instead.
This calculation gives us a period of two full months + a partial
period of (02/29 through 03/15 = 16 days).
When the end date is the true end date of a month, where the quote line’s Default Subscription Term = 1 and Prorate Precision = Monthly
+ Daily, the prorate multiplier calculates a whole value only when the start date is the true start of a month.
Important: Prorate multipliers will be calculated differently when a quote’s start date is on the 29th, 30th, or 31st of the month
and the quote’s second-to-last month has fewer days than the start date’s value. For example, you have a quote that runs from
03/31/2022 to 03/30/2023 for a subscription that’s $10 a month. In the final month of the quote, the subscription’s price will be
$9.03 instead of $10. This different occurs because the quote’s start date is three days greater than the last day of the previous
months (31 versus 28), so Salesforce CPQ subtracts three days of proration from the final month.
398
Manage Your Quotes with CPQ Subscription Guidelines
Example: You have a bundle with a bundle parent, child, and grandchild. All three products are subscriptions. A configuration
rule on the bundle includes one child subscription for every unit of the parent subscription, while the grandchild is optional. You
add this bundle to a quote without adding the grandchild subscription. Salesforce CPQ gives each subscription the same Root ID
value as follows.
Contract your opportunity and amend the contract so you have an amendment opportunity and amendment quote. Go to your
amendment quote and reconfigure your bundle to add a grandchild subscription, and then add another unit of the parent
subscription. Your contract now has three more subscriptions. The grandchild you added has a Root ID value because it’s a net-new
subscription. The revised parent and child aren’t net-new subscriptions, so they don’t have a root ID.
SEE ALSO:
CPQ Subscription Fields
399
Manage Your Quotes with CPQ CPQ Contract Fields
400
Manage Your Quotes with CPQ CPQ Contract Fields
Default Renewal Contact Roles SBQQ__DefaultRenewalContactRoles__c Checkbox Include contact roles from the
original opportunity in the
renewal opportunity.
Expiration Date SBQQ__ExpirationDate__c Formula (Date) Contract end date for use in
time-based workflows.
Opportunity Pricebook ID SBQQ__OpportunityPricebookId__c Formula (Text) The ID of the pricebook that the
parent opportunity uses.
401
Manage Your Quotes with CPQ CPQ Contract Fields
402
Manage Your Quotes with CPQ CPQ Subscription Fields
403
Manage Your Quotes with CPQ CPQ Subscription Fields
Customer Price SBQQ__CustomerPrice__c Currency (12, 2) Customer unit price for the
product quoted by this line item.
This price is the net price,
excluding any partner discounts.
Dimension Type SBQQ__DimensionType__c Formula (Text) Type set on the price dimension.
404
Manage Your Quotes with CPQ CPQ Subscription Fields
End Date SBQQ__EndDate__c Formula (Date) The last date this contract is
valid.
405
Manage Your Quotes with CPQ CPQ Subscription Fields
Order Product SBQQ__OrderProduct__c Lookup (Order Product) The order product from which
this subscription was generated.
Populated only when the
subscription is contracted from
an order.
Original Quote Line SBQQ__OriginalQuoteLine__c Lookup (Quote Line) Original quote line of the
subscription.
Original Unit Cost SBQQ__OriginalUnitCost__c Currency (12, 2) Cost of one unit of product
quoted on this line item if cost
schedules weren’t applied.
Package Product Code SBQQ__PackageProductCode__c Text (255) Product code for the bundle.
Salesforce CPQ generates this
code by appending codes of
selected components according
to a user-specified pattern.
Package Product Description SBQQ__PackageProductDescription__c Rich Text Area (32,000) Dynamic product description
generated from the components
inside this bundle.
406
Manage Your Quotes with CPQ CPQ Subscription Fields
Price Dimension SBQQ__Dimension__c Lookup (Price Dimension) Price dimension associated with
this subscription.
Pricing Method SBQQ__PricingMethod__c Picklist Indicates how the price for the
related line item is calculated.
"List" = discount is subtracted
from list price. "Cost" = markup
is added to cost. Values are as
follows.
• List
• Cost
• Percent Of Total
• Block
• Custom
Product Option SBQQ__ProductOption__c Lookup (Product Option) Product option that generated
this subscription (if any).
Quote Line SBQQ__QuoteLine__c Lookup (Quote Line) Quote line that generated the
subscription.
407
Manage Your Quotes with CPQ CPQ Subscription Fields
Renewal Product Option ID SBQQ__RenewalProductOptionId__c Formula (Text) ID of the renewal product option
defined on the product option.
Renewal Product Option Product SBQQ__RenewalProductOptionProductId__c Formula (Text) ID of the optional SKU defined
ID on the renewal product option.
Renewal Product Option Sub SBQQ__RenewalProductOptionSubscriptionPricing__c Formula (Text) Subscription pricing defined on
Pricing the optional SKU of the renewal
product option.
Renewal Uplift (%) SBQQ__RenewalUpliftRate__c Percent (8, 3) Rate of renewal price increases.
408
Manage Your Quotes with CPQ CPQ Subscription Fields
Start Date SBQQ__StartDate__c Formula (Date) The first effective date of this
subscription.
Subscription Start Date SBQQ__SubscriptionStartDate__c Date This field is populated only when
the quote line’s start date and
the contract’s start date are the
same. When the quote line’s
start date and the contract’s start
date are different, this field is
blank.
409
Manage Your Quotes with CPQ CPQ Subscription Fields
Term Discount Schedule SBQQ__TermDiscountSchedule__c Lookup (Discount Schedule) Schedule for discounts based on
subscription term.
SEE ALSO:
Root ID Field on Subscriptions
Knowledge Article: Legacy data upload with Renewals and Amendments in Salesforce CPQ
Subscription Terms
Amending MDQ Products
410
Manage Your Quotes with CPQ CPQ Asset Fields
Combine Key SBQQ__CombineKey__c Text(18) (External ID) Assets with the same
combine key are rolled
up into a single quote
line upon amendment
or renewal. The
combine key is equal
to the related quote
line’s quote line ID.
411
Manage Your Quotes with CPQ CPQ Asset Fields
From Service Cloud SBQQ__FromServiceCloud__c Checkbox Indicates whether this asset was
created in the service cloud.
Latest Quote Line SBQQ__LatestQuoteLine__c Lookup(Quote Line) Lookup to a quote line record.
List Price SBQQ__ListPrice__c Currency(12, 2) The list price for this asset.
Option Discount (%) SBQQ__OptionDiscount__c Percent(3, 2) If this line is for an optional SKU,
this field captures any
percentage-based discount
given to the package and
extended to the option.
Option Discount (Amt) SBQQ__OptionDiscountAmount__c Currency(10, 2) If this line is for an optional SKU,
this field captures any
amount-based discount given
to the package and extended to
the option.
412
Manage Your Quotes with CPQ CPQ Asset Fields
Order Product SBQQ__OrderProduct__c Lookup(Order Product) The order product related to this
asset.
Original Unit Cost SBQQ__OriginalUnitCost__c Currency(12, 2) This asset's original unit cost at
the time of purchase, before cost
schedules were applied.
Pricing Method SBQQ__PricingMethod__c Picklist Indicates how the price for this
line item is calculated. List
pricing subtracts discounts from
a list price. Cost pricing adds
markups to a cost price.
Quote Line SBQQ__QuoteLine__c Lookup(Quote Line) The quote line that created this
asset.
413
Manage Your Quotes with CPQ CPQ Asset Fields
Root Asset (CPQ) SBQQ__RootAsset__c Lookup(Asset) The top-level bundle parent for
this asset.
Subscription End Date SBQQ__SubscriptionEndDate__c Date The end date for the percent of
total product that covers this
asset.
414
Manage Your Quotes with CPQ CPQ Asset Fields
Term Discount Schedule SBQQ__TermDiscountSchedule__c Lookup(Discount Schedule) The discount schedule for
discounts based on subscription
term. Setting this to "Group"
applies the discount rate for the
group term, while setting it to
"Quote" applies the discount
rate for the entire quote term,
regardless of the different terms
in your groups.
415
Manage Your Quotes with CPQ Things to Know About Amendment and Renewal Services
416
Manage Your Quotes with CPQ Things to Know About Amendment and Renewal Services
SEE ALSO:
Guidelines for Bundle Renewals
Differences Between the Legacy and Large-Scale Amendment and Renewal Services
The Large-Scale Amendment and Renewal service and the Legacy Amend/Renew service determine
EDITIONS
some data differently, such as renewal price and quote start dates. If you switch to the large-scale
service, adjustments can be required, and an optional Visualforce component provides extra
functionality.
Available in: All Salesforce CPQ Editions
Primary Quotes
The services handle primary quotes on amendments and renewals differently. Suppose that you create an amendment or renewal on
an opportunity with several primary quotes. If you use the Legacy Amend/Renew Service, the amendment or renewal you create becomes
the primary quote, and earlier quotes are marked not primary. If you use the Large-Scale Amendment and Renewal Service, you must
manually reset earlier quotes as not primary, except one: the quote referenced in the Primary Quote field on the opportunity related to
the contract.
417
Manage Your Quotes with CPQ Things to Know About Amendment and Renewal Services
CreatedBy User
The services determine the CreatedBy user differently.
• With the Large-Scale Amendment and Renewal service, the Created By user is the Salesforce admin who manages the package
settings.
• With the Legacy Amend/Renew service, the Created By User is the user who amends or renews a contract.
Bundles
• The services handle bundles differently. The package setting Re-evaluate Bundle Logic on Renewals is available only with the Legacy
Amend/Renew service. If you switch to the Large-Scale Amendment and Renewal service, you must manually re-add bundles on
your renewal quotes or use customizations to reevaluate bundles.
• JSAR doesn’t support bundles where the parent is designated as optional.
Price Book ID
The legacy service populates the Price Book ID field with 18 characters and is case insensitive, whereas the large-scale service populates
the field with 15 characters and is case-sensitive. If you switch from the legacy to the large-scale service, avoid issues with quotes by
updating the price book ID to align it between services.
• On the amendment or renewal quote page, remove the last three characters in the Price Book ID field.
• Make your integration compatible with 15-character IDs.
418
Manage Your Quotes with CPQ Service Cloud for Salesforce CPQ
SEE ALSO:
Renewal of MDQ Products
Guidelines for Bundle Renewals
MDQ Products
Feature Availability
The Service Cloud for Salesforce CPQ package contains the following limitations.
• Summary variables in price rules can’t target contract line items.
• Users can’t perform asset-based renewals.
• The Service Cloud for CPQ package doesn’t support using the service contract’s Amendment Price book ID field.
As of Service Cloud Integration Package 2.1 and Salesforce CPQ Spring ’16 version 25.0.13, all other Salesforce CPQ Sales Contract
amendment, renewal, and contracting features are available for service contracts.
419
Manage Your Quotes with CPQ Service Cloud for Salesforce CPQ
SEE ALSO:
Enable Entitlements
Asset Asset
By default, fixed-price subscriptions can’t cover assets. However, you can still use entitlements to create a relationship between a
fixed-price contract line item and asset. You can manually create an entitlement for your fixed-price contract line item and define a
relationship between the entitlement and your desired asset. When you renew your contract, the renewal quote inherits the fixed-price
subscription covering the asset.
Service Cloud for Salesforce CPQ doesn’t create entitlements for standalone assets that aren’t related to any percent of total subscriptions.
Entitlement Conversion
Important:
• Service Cloud for Salesforce CPQ creates an entitlement when a sales rep contracts a subscription product with an Entitlement
Conversion field value of One per Quote Line or One per Unit. This process runs independently from entitlements created from
420
Manage Your Quotes with CPQ Service Cloud for Salesforce CPQ
entitlement templates. If a sales rep contracts a subscription product with an entitlement template and One per Quote Line
or One per Unit entitlement conversion, the product creates two different entitlements.
• Users with read-only access to the Contract object can create contracts. Similarly, users with read-only access to the Entitlement
object can create entitlements.
The Service Cloud Integration package controls entitlement generation with the Entitlement Conversion product field, which contains
the following values.
• None
• One per Quote Line
• One per Unit
The value you choose has a different effect on your entitlement conversion process based on the product’s type and its asset conversion
value.
421
Manage Your Quotes with CPQ Service Cloud for Salesforce CPQ
Additional SBQQSC__Dsicount__c Percent (9, An additional discount for this line item, if expressed
Discount (%) 2) as a percentage.
Additional SBQQSC__AodindtD
aiscloiunAtmoun_t_c Currency An additional discount for this line item, if expressed
Discount (12, 2_ as an amount.
(Amount)
Billing Type SBQQSC__nBiligType__c Picklist Defines when the billing occurs. Billing in advance
lets you bill your customers for products or services
before you provide them; Billing in arrears lets you
bill your customers after the products or services are
provided.
Bundled SBQQSC__Bundeld__c Checkbox Indicates the product on this line item is bundled
(included) with another product in the quote. The
price of bundled line items is 0, and their price and
quantity can’t be edited.
Charge Type SBQQSC__ChagreType__c Picklist The product charge type. This field is a system field
derived from the associated product.
Component SBQQSC__ComponenD
csotuinedtByPackage__c Checkbox Fixes an additional discount for this component to
Discounted by the parent package discount.
Package
Component SBQQSC__ComponenStuopbnitcsSrcope__c Picklist The percent of total scope set at the component level.
Percent of Total This field overrides the percent of total scope copied
Scope from the product option.
422
Manage Your Quotes with CPQ Service Cloud for Salesforce CPQ
Credit Product ID SBQQSC__CredtiProductdI __c Formula (Text) The ID of the upgrade credit product for this line item.
Customer Price SBQQSC__CustomerPrcie__c Currency (12, 2) The price paid for this line item.
Discount Schedule SBQQSC__DsicountScheduel__c Lookup A discount specified in terms of percentage or amount to be taken from
(Discount the product's price, using the quantity purchased or the term. Set quantity
Schedule) or term ranges in tiers of discount percentages. The discount is applied
to the list price, and the resulting total is stored in the regular price.
Discount Schedule SBQQSC__DsicountScheduelType__c Picklist The discount schedule type. Copied from the Type field in the associated
Type discount schedule.
Distributor Discount SBQQSC__Dsitrbi utorDsicount__c Percent (3, 2) A discount to be taken on top of the partner discount.
Dynamic Option ID SBQQSC__DynamciOpotindI__c Text (40) The feature and dynamic option for this line item.
Has Consumption SBQQSC__HasConsumpoitnScheduel__c Checkbox Indicates whether this line item has at least one consumption schedule.
Schedules
List Price SBQQSC__ListPrice__c Currency (12, 2) The list price for this line item. Corresponds to the price book entry list
price associated with this line item. The price book entry can be in the
standard price book or a custom price book. A client application can use
this information to show whether the unit price (or sales price) of the line
item differs from the price book entry list price.
Markup (%) SBQQSC__MarkupRate__c Percent (6, 2) Markup for this line item, if expressed as a percentage.
Markup (Amount) SBQQSC__MarkupAmount__c Currency (12, 2) Markup for this line item, if expressed as an amount.
Net Price SBQQSC__NetPrice__c Currency (12, 2) The net price of this line item.
Number SBQQSC__Number__c Number (5, 0) A number indicating this line item’s position within its group or quote.
Option Discount SBQQSC__Optoi nDsicount__c Percent (3, 2) If this line is for an optional SKU, this field captures any discount given to
the package and extended to the option.
Option Discount SBQQSC__OpotinDsciountAmount__c Currency (10, 2) The discount extended on this product because it’s part of a package.
(Amount)
Option Level SBQQSC__OptionLevel__c Number (5) Indicates nest level of this option (applies only to line items generated
from options).
Option Type SBQQSC__OptionType__c Picklist Indicates the option type. Copied from the related product option.
Determines how quantity is calculated.
Order Product SBQQSC__OrderProduct__c Lookup (Order The order product from which this service contract line item was created.
Product)
Original Quantity SBQQSC__BundeldQuantiy__c Number (10, 2) For items with calculated quantities, this field holds the original quantity
entered by the customer.
423
Manage Your Quotes with CPQ Service Cloud for Salesforce CPQ
Package SBQQSC__Bundle__c Checkbox Indicates whether this line item represents a package and the quote
therefore includes other line items.
Package Product SBQQSC__PackageProductCode__c Text (255) A product code for the package, generated by appending the codes of
Code selected components according to a specified pattern.
Package Product SBQQSC__PackagePorductDescpirotin__c Rich Text Area A product description for the package, generated by appending the
Description (32,000) descriptions of selected components according to a specified pattern.
Partner Discount SBQQSC__PartnerDsicount__c Percent (3, 2) Partner discounts are applied after all automatic and discretionary
discounts. The partner discount is accounted for in the partner price.
Price Dimension SBQQSC__Dimension__c Lookup (Price The price dimension associated with this line item.
Dimension)
Pricing Method SBQQSC__Prcini gMethod__c Picklist Indicates how the price for this line item is calculated. List is calculated
by subtracting the discount from the list price. Cost is calculated by adding
the markup to the cost.
Product ID SBQQSC__ProductId__c Formula (Text) The ID of the product related to this line item.
Product Name SBQQSC__ProductName__c Formula (Text) The name of the product related to this line item.
Product Option SBQQSC__ProductOptoi n__c Lookup (Product Product option that generated this line (if any).
Option)
Product Subscription SBQQSC__ProductSubscpriotinType__c Picklist The subscription type defined on the product record. Determines the
Type available selections for Subscription Type on the contract line item.
Quantity SBQQSC__Quantity__c Number (10, 2) The quantity of this line item purchased by a customer.
Quote Line SBQQSC__QuoteLine__c Lookup (Quote The quote line item that generated this line item.
Line)
Regular Price SBQQSC__RegularPrice__c Currency (12, 2) The regular price of this line item.
Renewal Price SBQQSC__RenewalPrcie__c Currency (12, 2) The renewal price of this line item. This price overrides the default renewal
price computation based on the account's Renewal Pricing field.
Renewal Product ID SBQQSC__RenewaPlroductdI__c Formula (Text) The product ID for the renewal line item.
Renewal Product SBQQSC__RenewaPlorductOpotindI__c Formula (Text) The ID of the renewal product option defined on the product option.
Option ID
424
Manage Your Quotes with CPQ Service Cloud for Salesforce CPQ
Renewed Date SBQQSC__RenewedDate__c Date The date the line item was renewed, as determined by date the renewal
opportunity was contracted. If this field is blank, the line item hasn’t been
renewed.
Required By ID SBQQSC__RequiredById__c Text (18) The ID of the quote line item or contract line item that requires the field.
Revised Line Item SBQQSC__RevsiedSubscpritoin__c Lookup Lookup to the revised contract line item.
(Contract Line
Item)
Root ID SBQQSC__RootId__c Text (18) The ID of the subscription or asset at the root of the bundle that contains
(External ID) this subscription.
Segment End Date SBQQSC__SegmentEndDate__c Date For MDQ products, the end date from the original segment's quote line
item.
Segment Index SBQQSC__SegmentnI dex__c Number (2, 0) For MDQ products, an index representing this quote line item’s position
in the segment table.
Segment Key SBQQSC__SegmentKey__c Text (30) For MDQ products, a shared key used to group multi-dimensional quote
line items.
Segment Label SBQQSC__SegmentLabe_l _c Text (25) For MDQ products, the column header label (for example, “Year 1”)
associated with this line item.
Segment Quantity SBQQSC__SegmentQuantyi__c Number (10, 2) For MDQ Products, the quantity corresponding to the original segment’s
quote line item.
Segment Start Date SBQQSC__SegmentStartDate__c Date For MDQ products, the start date from the original segment’s quote line
item.
Segment Uplift SBQQSC__SegmentUpfilt__c Percent (7, 2) For MDQ products, the Uplift from the original segment’s quote line item.
Special Price SBQQSC__SpecialPrice__c Currency (12, 2) A special price for this line item.
Start Date SBQQSC__StartDate__c Formula (Date) The first day the line item is in effect.
Subscription End Date SBQQSC__SubscpriotinEndDate__c Date Matches the quote line item end date by default. If blank, it matches the
contract end date.
Subscription Start SBQQSC__SubscpriotinStartDate__c Date Matches the quote line item start date by default. If blank, it matches the
Date contract start date.
425
Manage Your Quotes with CPQ Amend Your Contracts and Assets
Term Discount SBQQSC__TermDsicountScheduel__c Lookup A discount schedule based on subscription term. Group applies the
Schedule (Discount discount rate for the group term. Quote applies the discount rate for the
Schedule) entire quote term, regardless of the different terms in your groups.
Terminated Date SBQQSC__Termni atedDate__c Date The date when the line item is terminated. When a covered asset is
upgraded, this field is populated automatically.
Unit Cost SBQQSC__UnitCost__c Currency (12, 2) The unit cost of this line item.
Note: Certain types of changes, called “pricing amendments,” can create unexpected pricing on future quotes. We don’t recommend
doing the following on amendment quotes: modifying any of the standard price fields on the quote line; changing discounts on
the quote line; changing dates on purchased quote lines; adding new lines with an end date different from the contract’s end
date.
426
Manage Your Quotes with CPQ Amend Your Contracts and Assets
Asset Based You created assets by To amend assets, click Amend • Salesforce CPQ creates an
contracting your opportunity or Assets on your account or amendment opportunity
order. Your customer wants to opportunity. and amendment quote.
change their quote or order.
• The amendment quote
contains all the products
from your quote or order.
You can adjust the
quantities of these products
or add new products.
• The amendment
opportunity reflects the
product and quantity
differences between your
original quote and your
amendment quote.
427
Manage Your Quotes with CPQ CPQ Amendment Fields and Settings
428
Manage Your Quotes with CPQ Amend Your Contracts
In Salesforce CPQ Spring ’19 and later, a contract’s Preserve Bundle Structure field must be selected before users can amend that
contract. To update Preserve Bundle Structure on the current contracts in your Salesforce org, we recommend using a Process Builder
or Workflow rule.
Contract Fields
Amendment Start Date
Define a start date for amendment quotes created from this contract. If you leave this field blank, the amendment quote starts on
the day you perform the amendment.
Disable Amendment Co-Term
Prevent Salesforce CPQ from setting an end date for your amendment quote. If you don’t select this field, Salesforce CPQ sets an
end date based on the value of your contract’s Amendment & Renewal Behavior field.
Amendment & Renewal Behavior
Define how Salesforce CPQ determines your amendment quote’s end date.
• Latest End Date: Your amendment quote inherits its end date from the latest end date among all subscriptions on the contract
you’re amending.
• Earliest End Date: Your amendment quote inherits its end date from the earliest end date among all subscriptions on the contract
you’re amending.
Some of the contracts you amend can have different end dates among all their subscription records. Use this field if you don’t want
the amendment quote to have the same end date as your contract.
SEE ALSO:
Guidelines for Amending from a Contract with Multiple Subscription End Dates
429
Manage Your Quotes with CPQ Amend Your Contracts
• You can amend from an active contract or from a contracted opportunity related to an active contract. If you’re amending from a
contracted opportunity, make sure that its Contracted field has been selected.
• As of Salesforce CPQ Spring ’19, for Legacy Amendment and Renewal Services, make sure that your contract's Preserve Bundle
Structure field is selected. Otherwise, you can't amend that contract from the contract record or its related opportunity. We recommend
selecting this field in earlier Salesforce CPQ versions as well. When this field is unselected in versions before Spring ’19, Salesforce
CPQ ignores the configuration of amended bundles and converts them to standalone quote lines on the amendment quote. It can
result in validation errors, unwanted price changes, and ignored product or price rules on the amendment quote.
• Certain types of changes called “pricing amendments” can create unexpected pricing on future quotes. We don’t recommend making
these changes on amendment quotes: modifying standard price fields on the quote line; changing discounts on the quote line; or
changing dates on amendment quote lines when the Updated Subscription field is populated.
• When cross order = false and a product has a discount schedule, we recommend creating another quote line to sell more of the
same item, rather than amending a quote line. This way, you reduce individual line items without interference from the discount
schedule.
1. Click Amend on your contract, or click Amend Contract on your opportunity. Both records provide the same amendment workflow.
Amending a contract from an opportunity is available for users who don’t have access to the contract object.
• Amending from your contract takes you to the Amend Contract page, which shows your contract's amendable active subscriptions
and amendable evergreen subscriptions.
• Amending from your opportunity takes you to the Existing Contracts page, which shows your account's amendable active
contracts and amendable evergreen contracts. Choose a contract, then click Select.
3. Adjust the quantity of the quote lines from your original quote, apply discounts, or add new products, and then save your changes.
You can amend assets to have a lower quantity only if their related product record has an asset amendment behavior of Allow
Refund.
Salesforce CPQ doesn’t support the amendment subscription quote line’s end date.
Salesforce CPQ doesn’t support non-integer quantity amendments.
Salesforce CPQ calculates product quantity and price on your amendment opportunity based on the difference of the original quote
and the amendment quote. The amendment opportunity updates its Amended Contract and Primary Quote fields with links to the
contract you amended and your original quote.
SEE ALSO:
Asset Guidelines
430
Manage Your Quotes with CPQ Amend a Contract from an Opportunity
Example: Let’s say you sell IT maintenance licenses as 12-month subscription products. You always want to capture a full year
of pricing for each license you sell when you make the sale.
You sell 10 licenses with 12-month terms on January 1, 2018, and create a contract for these subscriptions. Then you sell another
five licenses on March 1 and plan on amending your contract. By default, the five new subscriptions on the amendment quote
inherit the contract’s end date of 12/31/2018. However, to cover a full year of pricing, those licenses have to run through 2/28/2019.
Before you make your amendment, select Disable Amendment Co-Term. When you amend the contract and add your five
subscriptions, you’ll end up with an amendment quote that runs from 3/1/2018 through 2/28/2019. This process ensures that you
quote the whole year of subscriptions up front for your five other licenses.
431
Manage Your Quotes with CPQ Guidelines for Amending Subscription Start Dates
When the original quote comes up for renewal on 12/31/2018, Salesforce CPQ renews all 15 subscriptions onto the same renewal
quote.
Example: You have a contract with a start date of 01/01/2018, an end date of 12/31/2018, and several subscription products.
When you’re ready to amend this contract, you have a few options based on your contract’s amendment and renewal behavior.
If your amendment and renewal behavior is the latest end date, your amendment quote has a start date of 01/01/2018 and an
end date of 12/31/2018. Your quote lines then have the following dates.
If your amendment and renewal behavior follows the earliest end date, your amendment quote has a start date of 01/01/2018
and an end date of 08/31/2018. The quote lines for your subscription products then have the following dates.
SEE ALSO:
CPQ Amendment Fields and Settings
432
Manage Your Quotes with CPQ Amend Your Assets
– If you populate this field, the amendment quote starts on the day you chose on the Contract.
• If the date you chose is before the Start Date of the Contract, the amendment quote shows an error.
– After the Quote's Start Date on the amendment quote, the Start Date from the original Subscription record populates as the
Quote Line Start Date. This ensures that the term is not incorrectly extended.
• Amendment services populate the Quote Line's Start Date field with the Start Date from the original Subscription record.
• If you use Quote Groups, the Quote Line inherits the start date of the quote group.
• If the Quote Line Start Date is before that of an existing amendment Subscription whose quantity change isn't canceled by another
amendment, the creation of the amendment quote is blocked.
• If the customer changes the Quote Line Start Date on the amendment quote to a date before that of an existing amendment
subscription whose quantity change isn't canceled by another amendment, the Save function is blocked.
• If you must change the Quote Line Start Date to be before the Start Date of the existing amendment, fully cancel the amended
subscription. Then, replace it with appropriate subscription change.
Note: As of Winter ’21, the backdated amendment restriction was updated to allow add-on products or subscriptions on
amendment quotes. Creating amendments for existing subscriptions with start dates before existing amendments’ start dates is
still blocked.
433
Manage Your Quotes with CPQ Create an Add-On Opportunity
You can add new products, increase quote line quantities, or decrease quote line quantities. If the asset amendment behavior of the
product you’re amending is set to Allow Refund, you can reduce the refund’s quantity to zero. You can’t apply discounts to an asset
that you’re amending.
Salesforce CPQ calculates product quantity and price on your amendment opportunity based on the difference of the original quote
and the amendment quote. The amendment opportunity updates its Primary Quote fields with a link to your original quote.
Amendment assets are refunded at full price regardless of the discounted net total from the original quote. Discounts don’t transfer
to the assets on amendment quotes.
SEE ALSO:
Asset Guidelines
2. On the same account, find the contract that you want to co-terminate with. Click Activate if it’s not yet activated.
3. Create an opportunity on your account. We recommend naming it something like “Add-on Opportunity” so you can clearly identify
it.
4. Set a close date in the future somewhere within the timeframe of your original contract.
5. Set the opportunity’s stage.
6. From the opportunity’s quotes related list New Quote. Select your quote’s primary quote field.
7. Since you enabled co-termination in Step 1, Salesforce CPQ shows the existing contracts page after you save your quote. This page
shows all the active contracts and evergreen contracts on your account. Select the contract you want to include in your add-on
opportunity.
Salesforce CPQ shows the product selection page.
8. Add products on the product selection page. You can also adjust the quote’s start date if needed. Moving the start date forward
prorates your quote’s subscription products. The proration calculation uses the end date of the contract you selected in Step 4. We
call this process co-termination, because all your new products inherit the end date of the contract that you associated with this
add-on opportunity.
9. When you’re done adding products, go back to your account and review the contract you associated with your add-on opportunity.
In the Subscriptions related list, you see the subscriptions that you just added and the contract’s original subscriptions. The subscriptions
you added have your new quote’s start date, but all subscriptions have the same end date.
434
Manage Your Quotes with CPQ Amendment Processes
Amendment Processes
Salesforce CPQ offers several ways to manage the subscriptions and assets you’re amending.
EDITIONS
SEE ALSO:
CPQ Subscription Fields
Guidelines for MDQ Products
Guidelines for MDQ Products
Terminating Subscriptions
Remove a subscription when making an amendment.
EDITIONS
435
Manage Your Quotes with CPQ Amendment Processes
To terminate a subscription, reduce the quantity of the related quote line to zero on your amendment quote. When you contract the
opportunity containing that quote, Salesforce CPQ sets the Terminated Date value of the new subscription record to one day before the
amendment quote’s start date.
When you amend a contract containing terminated subscriptions, the amendment quote doesn’t contain lines for the terminated
subscriptions.
Asset Upgrades
The asset upgrade and downgrade features let your sales reps replace an asset with a different asset
EDITIONS
from within the quote line editor. This feature is useful for processing upgrades.
To enable asset upgrades, select Enable Asset Upgrades in the Salesforce CPQ Line Editor package Available in: All CPQ Editions
settings. Salesforce CPQ will add the Upgrade Asset button to the quote line editor.
We recommend creating a product that represents the price difference between the original product
and the upgrade. For example, your company sells a Basic Network Package for $10,000, an Enhanced Network Package for $15,000,
and a Premium Network Package for $30,000. For this case, we recommend creating three upgrade products to represent the upgrade
differences between each level.
If your sales rep needed to upgrade from a basic to an enhanced subscription, they would amend the quote to remove the basic
subscription and add the Basic to Enhanced upgrade product to represent the price difference.
Your upgrade product uses the Upgrade Source junction object to represent the connection between the source product and the
upgrade product. For example, on your Basic to Enhanced upgrade product, you would create an upgrade source object with a Source
Product field set to Basic Network Package. Your upgrade product's Upgrade Target field defines the product your sales rep upgrades
into. In this case, your Upgrade Target field should look up to the Enhanced Network Package.
When your sales rep contracts an upgrade product with an Upgrade Source object and Upgrade Target value, Salesforce CPQ replaces
the upgrade product asset with the upgrade target asset in your account's Assets related list. In this case, Salesforce CPQ replaces the
Basic to Enhanced asset with an Enhanced Network Package asset.
Asset Downgrades
The asset downgrade process functions similarly to the upgrade process. To configure downgrade products, you would also create
products that represent the price difference. You can then follow the same process for configuring the Upgrade Source object and the
Upgrade Target field.
Product Name
Enhanced to Basic -$5000
436
Manage Your Quotes with CPQ Amendment Processes
6. Click the down arrow next to Add Products, and then click Upgrade Assets.
On amendment quotes, the Upgrade Assets page shows only subscribed assets covered by a percent of total subscription product.
7. Select the checkbox next to the Brone Widget, and then click Select.
8. On the page with your available upgrades, select Bronze-to-Silver Upgrade, and then click Select.
9. In the quote line editor, change the quantity of the new line item containing the Bronze-to-Silver Upgrade to 3.
The total quantity of the remaining Bronze Widgets and the Bronze-to-Silver Upgrade don’t have to add up to the original value of
five. By default, Salesforce CPQ allows any number of upgrade items above zero. You can also configure rules for a nonzero minimum
or maximum upgrade quantity.
10. Click Calculate. The percent of total product increases its price accordingly to cover the price of the upgrade product. If you configured
your upgrade product to include an upgrade credit product, that product also appears in your quote.
437
Manage Your Quotes with CPQ Amendment Processes
Tip: Remember that your assets have to be covered by a percent of total product if you want to amend them on an amendment
quote.
1. In your upgrade product, create an upgrade source.
2. On your upgrade source, provide a value for the Upgrade Conversion Rate field. For example, 3:1.
3. Open an amendment quote that contains the product you want to upgrade.
4. Click Upgrade Assets if you’re upgrading a stand-alone product, or configure a bundle and click Show Available Upgrades.
5. Choose the asset you want to upgrade, and then choose your upgrade product.
On the quote line editor, you see your source product and one unit of your upgrade product adjusted based on your conversion
rate. If you have a ratio of 3:1 and your source product has a starting quantity of 100, your source product updates its quantity to 97.
6. Increase or decrease the quantity of your source product and your upgrade product. Salesforce CPQ adjusts their quantities accordingly.
Example: You sell a Bronze IT Support package and a Silver IT Support package. Both products are assets in Salesforce CPQ.
Bronze package customers can order an upgrade to the Silver package, which you provide as an upgrade product called Upgrade
Bronze to Silver. All your IT support packages are covered by a percent of total subscription.
Your company wants a system where users can upgrade five bronze packages to one silver package. To start out, you need the
following products.
• Bronze IT Package
– Contains the Silver IT Package product record in the Target Upgrade related list.
• Percent of Total
You contract an opportunity for 100 bronze packages. Your customer then wants to upgrade to 20 silver packages.
1. Go to your contract and amend it.
438
Manage Your Quotes with CPQ Amendment Processes
Upgrade a Bundle
Upgrade a bundle within the CPQ quote line editor. When you upgrade a bundle that has matching
EDITIONS
product options in the upgrade source and upgrade target, Salesforce CPQ maps the source's
configuration, product option quantity, and attribute field values to the corresponding options on Available in: Salesforce CPQ
the upgrade target. Summer ’16 and later
Admins can easily create an upgrade target bundle with the same product options as the source
bundle.
1. Go to the upgrade target that you want sales reps to upgrade toward and click Clone With Related.
2. Rename the cloned parent product to a name that your sales reps can easily recognize.
3. Go to the upgrade product’s Upgrade Source related list and create an upgrade source. The new upgrade source defines the
relationship between the source and the target you specified.
4. Price the parent product’s price book entry to represent the price that Salesforce CPQ quotes when upgrading from the upgrade
source to the upgrade target.
Your contracted primary quote has the source product bundle. To upgrade a bundle, you have to amend the contract.
1. From your amendment quote, click Upgrade Assets.
2. Select the standard or source parent product that you want to upgrade.
3. Select your upgrade parent product.
Salesforce CPQ compares your upgrade source bundle’s configuration to the upgrade product’s configuration. It then adds quote
lines for any product options that match the upgrade source. Your upgrade product options inherit the configuration attributes,
quantity, and quote line field values from the source product options if the upgrade bundle doesn’t require configuration.
If the upgrade bundle requires configuration, Salesforce CPQ opens the quote line editor so you can reconfigure the bundle so the
attributes’ values are inherited.
4. You can also configure product bundles so that you can add options unique to the upgrade target, and upgrade previously purchased
source product options to their related upgrade products.
5. When you contract the amendment quote, Salesforce CPQ creates assets and subscriptions for the upgrade bundle product’s upgrade
target and all of the target’s children. If the child is an upgrade product, you must do two things.
• Swap the product with the upgrade target product
• Swap the product option to the upgrade target’s product option. This way, users can reconfigure the bundle on future renewals
and amendments.
Example: Your amendment quote contains a small business server bundle that you want to upgrade to an enterprise server
bundle. Both bundles contain the same product options.
Small Business Server
Document CAL
Maintenance SKU
439
Manage Your Quotes with CPQ Amendment Processes
Enterprise Server
Document CAL
Maintenance SKU
1. In the quote line editor, click Upgrade Assets.
2. In the upgrade asset selection page, select the SMB Server as the parent product that you want to upgrade.
3. In the upgrade product selection page, select the SMB to Enterprise Server upgrade product.
When you return to the quote line editor, the SMB Enterprise Server Upgrade bundle automatically added ten document CALs
and one maintenance SKU. If your upgrade source and upgrade target have a 1:1 conversion ratio, Salesforce CPQ reduces the
quantity of the small business server and its product options to zero. You can also configure the small business to enterprise server
upgrade product to add product options that are unique to the enterprise server bundle. From here, you can contract the
amendment.
1. Go to the quote’s amendment opportunity and contract the amendment.
2. Go to your parent account and review the assets related list. You’ll see the small business server and its children with negative
values, as these products were removed and upgraded. Likewise, the enterprise server and its children have positive values.
When you contracted the upgrade amendment, Salesforce CPQ decommissioned previously purchased assets, then made new
assets for the upgraded product options. Assets with negative quantities and the small business server asset itself have the same
usage end date. Salesforce CPQ mapped the usage end date field values from the source product to the upgrade product, just
like it mapped quantity values when upgrading the bundle.
Upgrade Assets
Replace an asset with a different asset from within the quote line editor. This feature is useful for
EDITIONS
processing upgrades.
Note: When upgrading assets, only asset upgrades on amendment quotes are supported. Available in: All CPQ Editions
3. Find your upgrade product and create a record in its Upgrade Source related list. Set your upgrade source record’s Source Product
field to the product you want to upgrade from.
Upgrade products can come from multiple upgrade sources. For example, you can upgrade a Standard Edition or a Professional
Edition to an Enterprise Edition. The Upgrade Source related list contains a record for each possible source on an upgrade product.
4. Enter a value for your upgrade product’s Upgrade Target field. This value is a lookup to the product that replaces the upgrade product
when you create an asset.
5. Click Upgrade Assets in the quote line editor or Show Available Upgrades in the configurator. These selections show the Asset
Selection page.
6. If the asset you want to upgrade is part of a bundle, click Show Available Upgrades.
7. The Asset Selection page lists all upgradable assets on the account and radio selection buttons for each of their available upgrade
products. Select the upgrades you want, and then click Select.
440
Manage Your Quotes with CPQ Renew Your Contracts and Assets
Salesforce CPQ replaces the upgrade sources with the upgrade products you selected and adjusts your quote’s total accordingly.
When you renew a quote containing upgrade products, Salesforce CPQ replaces them with their upgrade targets on the renewal
quote.
SEE ALSO:
Asset Guidelines
441
Manage Your Quotes with CPQ Renew Your Contracts and Assets
Contract-based The subscriptions on several of To renew contracts from your • Salesforce CPQ asks you to
your account’s contracts are near account, go to your account’s pick a master contract. The
their end dates. Your customer Contracts related list, select all renewal quote inherits its
wants to renew them, and you the contracts to renew, and then end date from the master
want to move all the renewed click Renew Contracts. contract’s end date.
subscription products into a
• Salesforce CPQ creates a
single renewal opportunity.
renewal opportunity and
renewal quote.
• The renewal quote contains
products for all the
subscriptions and covered
assets from the contracts
you renewed.
Asset-based You have a percent of total asset To renew assets, click Renew • Salesforce CPQ creates a
that represents a subscription Assets on your account. renewal opportunity and
and at least one covered asset. renewal quote.
• The renewal quote contains
your percent of total asset
product and all the asset
products it covered.
• The covered products on the
renewal quote have a net
total price of $0 to show that
your customers paid for
them.
442
Manage Your Quotes with CPQ Renewal Pricing Method Data Flows
443
Manage Your Quotes with CPQ Renewal Pricing Method Data Flows
List
Subscription product quote lines on this renewal quote use their product’s list price as defined in your price book.
Uplift
Subscription product quote lines on this renewal quote inherit their subscription record’s price and update it based on the subscription
record’s Renewal Uplift (%) field.
Important: In Summer ’19, we changed how Salesforce CPQ calculates list prices for renewals where the account’s renewal
pricing method is Same or Uplift. Salesforce CPQ uses the subscription’s list price to calculate the renewal quote line’s list price.
Previously, Salesforce CPQ used the product’s price book entry price unless the product had an active Price Editable field. If an
admin had changed the price book entry price before the sales rep renewed the subscription, the resulting renewal quote line
was inaccurate.
444
Manage Your Quotes with CPQ Renewal Field Guidelines
Important: In Summer ‘19, we changed how Salesforce CPQ calculates list prices for renewals where the account’s renewal
pricing method is Same or Uplift. Salesforce CPQ uses the subscription’s list price to calculate the renewal quote line’s list price.
Previously, Salesforce CPQ used the product’s price book entry price unless the product had an active Price Editable field. If an
admin had changed the price book entry price before the sales rep renewed the subscription, the resulting renewal quote
line would be inaccurate.
Combine Co-Termed Contracts
Combine multiple asset or subscription records for the same product across several contracts into one quote line on the renewal
quote. If your contracts end on the same date, you can use this feature. If you don’t select this field, each set of matching products
receives its own quote line group on the renewal quote. You can use this field when you renew multiple contracts at the same time
from the account record.
Preserve Bundle Structure
Bundles on the renewal quote appear as you last configured them on the quote you’re renewing. If you don’t select this field, your
bundles appear on the renewal quote as standalone quote lines and can’t be reconfigured. If the bundle structure isn’t preserved,
any assets not included in the scope of Percent of Total subscriptions are also left off the renewal quote.
Contract Fields
Renewal Term
Set the term of renewal quotes made from this contract. By default, this value matches the contract’s term. For example, let’s say
you have a contract with a start date of 12/01/17 and an end date of 11/30/18 in an org that uses monthly subscription term units.
Your renewal term by default is 12. If you want your renewal quotes to run for six months instead, you give this field a value of 6.
Renewal Uplift
Define an uplift percentage to apply to your contract records if your account has an uplift-based renewal pricing method. All
subscription records on the contract inherit this value unless they have a different value defined in their own Renewal Uplift field.
For MDQ products, the uplift value applies to all segments on the contract that don't already have a renewal uplift percentage
specified.
Subscription Fields
Discount Schedule
This field inherits the subscription quote line’s discount schedule. When you renew your subscription with a Renewal Product value,
the renewal quote line inherits the subscription’s discount schedule rather than any discount schedule associated to the original
product. This distinction is important if you allow your sales reps to change the quote line’s discount schedule.
445
Manage Your Quotes with CPQ Renew from the Contract Record
Renewal Quantity
Define the quantity of subscription products that appear on the renewal quote when you renew this subscription. For example, if
you set this field to 4, Salesforce CPQ creates a quote line with a quantity of 4. This field defaults to 1.
Renewal Uplift
Define an uplift percentage to apply to your renewed subscription product quote lines if your account has an uplift-based renewal
pricing method.
Renewal Price
Define the price of quote lines that appear on the renewal quote when you renew this subscription. This field overrides the result
of price calculations from your account’s renewal pricing method. If your account uses Uplift renewal pricing, the uplift is applied
directly to the Renewal Price field.
Example: You have a contract that runs from 01/01/2018 through 12/31/2018, with a renewal term of 12. The contract contains
the following subscriptions.
When you made your quote, your customer decided not to start your server management coverage until May. However, they now
want to renew all three subscriptions for a full year of service.
When you click Renewal Quoted, Salesforce CPQ creates a renewal opportunity with a close date of 12/31/2018. Your renewal
quote has a start date of 01/01/2019. Because your contract had a renewal term of 12 months, your renewal quote has an end
date of 12/31/2019.
You can also skip clicking Renewal Forecast and click Renewal Quoted to create your renewal opportunity and renewal quote at the
same time. However, we recommend using Renewal Forecast so you can track pipeline opportunities for record-keeping purposes before
finalizing the renewal quote.
Your renewal opportunity’s Renewal Contracts related list also contains a lookup to the contract or contracts that initiated the renewal.
446
Manage Your Quotes with CPQ Renew Contracts from an Account
Example: You have 4 contracts on your account. Each contract contains a subscription that you sold at a different date during
the year.
Your customer decides to renew the first three subscriptions for a full year of service. Because Contract 2 ends the earliest, you set
it as your master contract.
1. Change the renewal term of Contract 2 to 12.
2. Select all 3 contracts on your account, and then click Renew Contracts.
447
Manage Your Quotes with CPQ Renew Multiple Contracts Through List Views
3. Choose Contract 2 as your master contract. Salesforce CPQ creates a renewal opportunity with a close date of 09/05/2018 and
the following renewal quote.
Start Date
09/06/2018
End Date
09/05/2019
Quote Lines
Mobile Device Management
Service Desk Management
System Performance Management
Your renewal quote’s quote lines have the following information.
2. On the Contracts tab, create a list view that filters contracts by an account.
3. Return to the Contracts list page and enable your filter.
4. Select the contracts you want to renew and click Renew Contracts.
448
Manage Your Quotes with CPQ Renew Assets in Asset-Based Accounts
• Latest End Date: Renewal quotes on this contract set their start dates to one day after the latest end date among all the contract’s
subscriptions.
• Earliest End Date: Renewal quotes on this contract set their start dates to one day after the earliest end date among all the contract’s
subscriptions.
Important: The Amendment and Renewal Behavior field affects the start date of only your renewal quote record. It doesn’t
determine a value for any of the renewal quote’s lines. By default, renewal quote lines set their start dates to one day after their
parent subscription’s end date. If the renewal quote’s start date and the day after the subscription’s end date are the same value,
the quote line has a null start date instead.
Example: You have a quote with a start date of 01/01/2018, an end date of 12/31/2018, and several subscription products. You
contract the quote to create the following subscriptions.
When you’re ready to renew this quote, you have a few options based on the value of Amendment and Renewal Behavior.
If your amendment and renewal behavior is the latest end date, your renewal quote has a start date of 01/01/2019 and an end
date of 12/31/2019.
If your amendment and renewal behavior follows the earliest end date, your renewal quote has a start date of 09/01/2018 and an
end date of 08/31/2019.
SEE ALSO:
CPQ Opportunity Contracting Methods
449
Manage Your Quotes with CPQ Use a Single Renewal Quote for All of an Account's
Subscriptions
Example: You’re working with an asset-based account and sold a quote that contained five software licenses. The licenses are
covered by a percent of total IT maintenance product. The percent of total maintenance product has a price that’s 10% of its
covered assets.
Your customer decides to renew their licenses and maintenance coverage after 1 year. In this case, you click Renew Assets on
your account and choose all five of your licenses for renewal. Your renewal quote looks like this example.
450
Manage Your Quotes with CPQ Guidelines for Renewed Products
4. Create a quote for your add-on opportunity and add at least one of a subscription product that exists on the contract you picked for
cotermination.
5. On your add-on opportunity, click Contracted.
6. Return to your contract and select Combine Subscription Quantities.
7. Select Renewal Forecast and Renewal Quoted.
8. Find your renewal opportunity and open its quote.
Salesforce CPQ combined subscriptions with matching end dates for the same product into one quote line. For example, if your
contract contained 8 MDM subscriptions and your add-on opportunity contained 2 MDM subscriptions, the renewal quote contains
one MDM subscription quote line with a quantity of 10.
When you’re combining matching subscriptions, consider the following guidelines.
• When you select Combine Subscription Quantities on the contract, subscriptions roll up on legacy amendment quotes only, not
on large-scale amendment quotes.
• Salesforce CPQ doesn’t preserve bundle structure when Combine Subscription Quantities is active and the same subscription product
exists within multiple bundle levels.
• We recommend that users don’t combine differently priced subscriptions of the same product while using Same or Uplift renewal
pricing methods. On renewal, Salesforce CPQ ignores the individual pricing and uplift of each subscription and instead uses the first
subscription’s pricing and uplift. For example, combining 4 subscriptions’ renewal price of 15% and 6 subscriptions’ renewal price
of 20%, Salesforce CPQ applies a renewal price of 15% for all 10 renewed subscriptions.
451
Manage Your Quotes with CPQ Guidelines for Renewed Products
subscription’s scope on the renewal quote. For example, your renewal subscription would still cover your licenses if they had an active
Exclude from Percent of Total field.
By default, that subscription doesn’t consider in its scope any new software licenses that you add on the renewal quote. You can change
this process by selecting Include Net-new Products in Maintenance in your Subscriptions and Amendments package settings. While
this setting is active, your percent of total product also considers any products added on the renewal quote that still fall under their
scope. In this example, let’s say you added to the renewal quote a system performance management license that falls under the
subscription’s scope. Your subscription would cover the four mobile device management licenses and the system performance
management license.
Note:
• You can’t reduce the quantity of subscribed assets on a renewal quote. Use amendments to reduce the quantity of your
subscribed assets or assets instead.
• Salesforce CPQ doesn’t support renewing a Percent of Total subscription product into a fixed-price subscription product.
452
Manage Your Quotes with CPQ Guidelines for Renewed Products
Important: Always use the renewal product option when renewing a product that’s part of a bundle. Otherwise, Salesforce
CPQ changes only the product on renewal, which can cause errors when you reconfigure your renewed bundle.
Reevaluate Bundle Logic on Renewals Setting (Available Only in Legacy Amend and Renew Service)
Select the Subscriptions and Renewals package setting Reevaluate Bundle Logic on Renewal to automatically reconfigure a bundle
on renewal. Renewing a bundle while this setting is active runs all configuration rules and automatically adds all required products.
This setting provides the same features as a user manually finding the renewal quote, reconfiguring the bundle, and then saving it.
The setting Reevaluate Bundle Logic on Renewal is deselected by default. You can leave it deselected when you renew a quote
whose renewal bundle configuration has changed, because the new bundle has different configuration logic. When the setting is
selected, new options to are added to the bundle automatically, which prevents you from manually reconfiguring the bundle as
needed.
If you switch to the Large-Scale Amendment and Renewal service, you must manually readd bundles on your renewal quotes or
use customizations to reevaluate bundles.
Note: Salesforce CPQ doesn’t support the reparenting of a child asset in a bundle to a different parent on renewal. Also, Salesforce
CPQ doesn’t support renewing or replacing child products with parent products in a bundle. For example, here’s a renewal of a
child option to parent bundle.
Original bundle:
• Parent A
– Child B
– Child C
Renewal bundle
• Parent D
– Child E
Setting the renewal product option to Child E on Child C’s product option record is supported.
Setting the renewal product option to Parent D on Child B’s product option record isn’t supported.
SEE ALSO:
Things to Know About Amendment and Renewal Services
Guidelines for Amendment and Renewal Services
Differences Between the Legacy and Large-Scale Amendment and Renewal Services
453
Manage Your Quotes with CPQ Printable Tip Sheets & User Guides — For Salesforce CPQ
SEE ALSO:
Differences Between the Legacy and Large-Scale Amendment and Renewal Services
454
Manage Your Quotes with CPQ Explore CPQ Solution Kits
Related Content
455
INDEX
456
Index
D L
Definitions 365 Language 18–19
Discount categories 229 Line Editor 172
Discount Schedule 208–209, 306 Line items 15–16, 300
Discount Schedules 205–206 Line Items 300
Discounts 203, 227, 229 List Price 208
Distributor 227 Localization 18–19, 309
Document 46 Lookup fields 164
Document engine 302 Lookup Object 251, 253
Lookup Query 251, 253
E Lookup relationships 23
Lookup Table 251, 253
Effective quantity 124
Email service 316, 321
Enable 317
M
End Date 447 Markup 208
MDQ 82, 446, 448, 451
F Merge fields 291
Favorites 13–15
Feature 60
N
Field 365 Nested 75
Field definitions 31, 111–112, 173, 263 Nested bundles 196
Field search 17 Nested Bundles 201
Field set 62
Fields 367
O
Fonts 302 Option 60, 71
Footer 306 Optional sku 75–76
order 362
G Order 355, 365, 367, 385, 390, 426, 441
Get started 2 order product 362
Global attributes 68, 70 Order Product 355, 365, 367, 385
Glossary 2, 28 Orders 56, 354
Groups 47, 147
Guided Selling 166–168
P
Package 46–47, 55–56
H Package product code 75–76
Header 306 Package settings 45–47, 55–56
Page layout 33–34, 36, 40, 42–43
457
Index
Page numbering 304 Quote line editor 13–15, 130–131, 145, 149–150, 153, 155, 158–
PDF 297–298, 303, 305–306, 308 159, 164, 235, 246
Percent of total 86 Quote Line Editor 123, 125, 160, 165–168, 243, 246–248
Percent of Total 88–89, 446, 451 Quote line group 148
Percet of total 87 Quote line groups 47
Performance 172 Quote Line Item 125
Permission sets 349 Quote lines 164
Plugins 55, 246–248 Quote Process 166–168
Price action 235 Quote template 295, 297–298, 301, 304–306
Price actions 236 Quote Template 12, 302–303, 306, 309–310
Price book 241–242 Quote templates 82, 291, 300
Price condition 233 Quote Templates 288–289, 294, 300
Price conditions 232 Quote terms 295, 297–298, 305
Price dimensions 82 Quote Terms 303, 306
Price rule 231, 233, 235 Quotes 166–168, 242, 244, 246
Price Rule 253
Price rules 232, 236 R
Price Rules 230 ratio 438
Pricing 123, 166–168, 208–209, 227, 229, 231–233, 235–236, 246, Record Data 309
355 Refresh prices 241–242
Pricing Methods 114 Renew 416, 432
Process Input 166–168 Renew MDQ 454
Product 40, 60, 114 Renew percent of total 451
Product action 193–194 Renewal 89, 426, 441, 446, 448, 451
Product feature 62, 75–76
Product option 42, 75–76 S
Product option drawers 68, 70 Salesforce CPQ 6, 15–16, 62, 68, 70, 75–76, 82, 86, 95, 97–98, 101–
Product options 64, 88 103, 107–109, 111, 189, 193–194, 196, 242, 244, 246, 301–
Product rule 193–194 302
Product Rule 251, 253 Search Filter 160
Product rules 196 Search Filters 163
Product search 161–162 Search quote lines 164
Products 59, 87 Search results 162
Professional edition 6 Service cloud 419–420
Proration 85, 394, 397 Service cloud for CPQ 419–420
Service contracts 419–420
Q Settings editor 45–46
qtc 362 Setup 8, 58
QTC 87, 188, 190–191, 227, 315, 354–355, 365, 367, 385, 390, 416, Smart approvals 324, 330, 338–339
426, 428, 432, 435, 441, 447 Solution groups 47
QTC Quotes 243 Solution Groups 148
Quote 43, 55, 111–112, 172, 241–243, 246–248, 426, 441 Status 390
Quote approval 323–326, 329–330, 336–340, 347, 352 Subscribed asset 86
Quote document 295, 297–298, 304–306 subscription 362
Quote Document 12, 302–303, 306, 308, 310 Subscription 31, 173, 263, 385, 411, 422, 426, 428, 432, 435, 441,
Quote documents 82, 302 447
Quote group 148 Subscription Products 84
Quote line 148 Subscriptions 87, 399, 446, 448, 451
Quote Line 125, 209 Summary variable 130–131
458
Index
T U
Template content 291, 297–298, 301, 304–306 upgrade 438
Template Content 12, 302–303, 306, 309–310 Upgrade 437, 440
Template Print Options 299 Usage based pricing 95, 97–98, 101–103, 107–109, 111
Template sections 297, 300 Usage pricing 95, 97–98, 101–103, 107–109, 111
Template Sections 300, 303
Term Discount 306 V
Terms 2, 28 Validation rules 196
Threshold 172 Validation Rules 195
Tips 8, 58 Visualforce 17
Track 390 Volume Discount 306
459