Start tracking your progress
Trailhead Home
Trailhead Home

Create Account-Based Contracted Pricing

Learning Objectives

After completing this unit, you’ll be able to:

  • Create a contracted price to give an account a unique price for a product.
  • Configure contracted prices to apply to multiple similar products.
  • Limit when contracted prices are affected by date ranges.
  • Control when contracted prices are inherited by child accounts.
  • Describe how CPQ calculates prices when contracted pricing is used with other pricing tools.

Negotiated Prices Per Account

AW Computing and its customer GenePoint have been doing business together for some time, and over the years they’ve negotiated special pricing for some products. For example, GenePoint always gets printer toner cartridges priced at $100, while most other customers pay $125. Without Salesforce CPQ, AW Computing would only have two choices to handle this scenario. First, AW Computing can create a separate price book for GenePoint. Unfortunately this takes a lot of work to maintain, and doesn’t scale well. The second choice is to rely on sales reps to manually apply the right adjustments. That solution introduces both error and unnecessary complexity into the approval process.

Again, Salesforce CPQ is here to help. Using a Contracted Pricing tool, administrators can create records related to the account for pricing exceptions like the toner example above. Then, whenever a sales rep adds a quote line to a quote, CPQ automatically looks to these exceptions to see if any prices should be adjusted.

Setting Up a Contracted Price for a Single Product

Let’s set up a contracted price for GenePoint so that they pay only $100 for the Printer Toner Cartridge product.

  1. Click Accounts from the navigation bar, then choose the All Accounts list view.
  2. Click GenePoint.
  3. Click the Related tab.
  4. In the Contracted Prices related list, click New.
    In this example we only need to fill in two fields; later we learn about the others.
  5. For the Product field, search for and select Printer Toner Cartridge.
  6. For the Price field, enter 100.
  7. Click Save.

Now when you add a Printer Toner Cartridge to a quote for GenePoint, you automatically see the price adjustment. Let’s try it out.

  1. Click Quotes from the navigation bar, then choose the All list view.
  2. Click Q-00017.
  3. Click Edit Lines.
  4. Click Save to use the Standard Price Book.
  5. Click Add Products.
  6. Check the box for Printer Toner Cartridge.
  7. Click Select.
  8. Click the arrow ( Quote Line Drawer icon ) at the right side of the quote line.
    Quote Line Editor
    Again we see that special price is updated while leaving list price alone.
  9. Click Save.

Account-wide Discount for Multiple Products

A single Contracted Price record can apply a discount to a number of products instead of simply overriding the price for one. The trick is to create a contracted price that uses a product filter instead of specifying a single product. Also, you set a value for discount, instead of a unit price, since it’s unlikely that every miscellaneous product is the same price.

So for example, AW Computing has many products with a product family of miscellaneous. These are things like phone chargers and USB cables. GenePoint can be given a 5% discount on all of these products by creating a single Contracted Price record that looks like this:

New Contracted Price record page

The last three fields define which products qualify for the discount.

  • Filter Field: A field on the product that should distinguish some products from others.
  • Filter Value: Text that CPQ compares to what it finds in the Filter Field field.
  • Operator: Determines how the Filter Value is compared to the Filter Field field.

The Filter Field field is a picklist with three values prepopulated by Salesforce CPQ. If you have your own Product field that you’d like to use as the Filter Field field, just add its API name to the picklist.

Filter Field picklist

It can seem odd to put the API name of a field into a picklist, but having the option to do so means you can extend CPQ to use whatever fields you already have in your org, even though they’re not part of the CPQ package.

Timing Is Everything

When a product is added to a quote, a quote line is created to capture all of the pricing details for that product, like a snapshot in time. From that point forward, changes to Contracted Pricing records won’t affect the quote line since the snapshot has already been taken. This is by design—prices should not fluctuate for sales as they negotiate deals with their customers.

The quote line snapshot concept is important to remember when learning about another feature of contracted pricing: effective date and expiration date.

If a quote line is added to a quote on or after the effective date, the contracted price is applied. This is true even if the quote or opportunity is created before the effective date; it’s all about when the quote line is created. If the quote line is created before the effective date, and the date passes, the contracted price is not applied because the snapshot has already been taken.

Expiration date also respects when the quote line is created, so if it’s created before the date, the contracted price is applied. It is applied even after the expiration date passes because the price was captured in the snapshot.

Effective date and expiration date can be used together, alone, or not at all.

Note

Note

It’s possible that a quote can have out-of-date contracted prices because the quote lines were created before the expiration date. Consider creating a validation rule or approval process to catch when this happens. Quote lines have a lookup to the Contracted Price object, so that data can drive conditional logic.

Inheritance for Child Accounts

Sometimes accounts are related to each other in a parent-child relationship, where one account many have many children. By default, a contracted price created at the parent level is inherited by all of the children. This saves time for admins as they don’t need to create and maintain duplicate records. However, there are times when a child account should not use the contracted price of the parent. In those cases, it’s easy to disable inheritance by editing the child account record and checking the Ignore Parent Contracted Prices field.

But wait, what if most of the contracted prices should be inherited, and only one should be ignored? There’s a solution for that too! Just create a contracted price for the child account, setting it up just like the one that exists for the parent, but with a new price or discount value. Child contracted prices take precedence over parent contracted prices.

Avoid Overlapping Contracted Prices

While contracted pricing is a powerful tool, there’s one scenario to avoid. Do not create two contracted prices on the same account that act on a single product. If a given quote line qualifies for two different contracted prices, only one will be used. The danger here is that there’s no way to dictate which contracted price is used. It’s best practice to create contracted prices so that any given product is only affected by one contracted price per account in order to avoid this scenario.

Interacting with Other Pricing Methods

As you may have noticed, contracted pricing and cost plus markup can both affect special price. However, Salesforce CPQ will only ever use one or the other and cost plus markup takes precedence.

Pricing flow diagram

Note

Note

At this time, products that use block pricing or percent of total pricing do not support contracted pricing. Avoid creating contracted prices for products using these price methods.

Although contracted pricing has a few limitations, it makes adjusting prices on individual accounts very easy while reducing the number of price books administrators must maintain. Next we learn how sales reps can be allowed to manually override some prices.

Resources

retargeting