Skip to main content
Build the future with Agentforce at TDX in San Francisco or on Salesforce+ on March 5–6. Register now.

Show Dynamic Quote Terms

Learning Objectives

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

  • Create a dedicated section in a quote template for quote terms.
  • Organize quote terms with parent-child relationships.
  • Show or hide quote terms based on conditions.
  • Determine if users may edit quote terms.

Lay Out Your Terms

Proposals are not just a good way to get your customer the information about the products they’re interested in, proposals also typically include important terms and conditions of the negotiated deal. For example, you might want to include your return policy. This kind of additional text is represented in quote templates as Quote Terms.

A Quote Term record represents one piece of the overall terms and conditions you want to appear in the proposal. CPQ assembles the individual quote terms in a block wherever you want to put them in the template, like right above the signatures section.

Portion of proposal displaying terms and conditions.

Each term has a Print Order field so CPQ knows how to sequence them. Additionally, each quote term can be set up so that it only appears under specific conditions. That way you know the right terms are always part of the quote when needed. Let’s learn how to include quote terms by adding a return policy to your proposal. The first step is to designate a place for the terms to appear.

  1. In the navigation bar, click Template Content.
  2. Click New.
  3. Choose Quote Terms.
  4. Click Continue.
  5. For Content Name, enter AW Terms.
  6. For Font Size, enter 10.
    This shrinks the quote terms a little compared to other text on the quote template.
  7. Click Save.

The quote terms template content is just a placeholder, much like the Line Items content. Next you put the placeholder into a template section.

  1. In the navigation bar, click Quote Templates.
  2. Click AW Proposal.
  3. Click the Related tab.
  4. In the Sections related list, click New.
  5. For Section Name, enter Terms.
  6. For Content, find and select AW Terms.
  7. For Top Margin, enter 0.25.
  8. For Display Order, enter 45.
    This should sandwich your terms between the consumption schedules and signature block.
  9. Click Save.

OK, now let’s create a quote term to contain the return policy text.

  1. In the navigation bar, click Quote Terms.
  2. Click New.
  3. For Print Order, enter 10.
  4. Check Active.
  5. Copy this text using the Copy button, then paste the contents in the Body field:
    Products may be returned up to 60 days after delivery. The product’s full price will be refunded if the return is due to a quality issue or if the product is unused. Store credit will be applied for open-box items.
  6. Click Save.

This quote term, along with any others you create like it will appear right after the consumption schedules. Your CPQ-enabled org has a number of sample quote terms which appear after the one you just made.

Portion of proposal showing return policy text followed by sample text.

The last quote term is a little special, it has a date in the text. At first glance that seems normal, but it reveals that you can merge quote data into quote terms. In this case, the quote term uses {!quote.SBQQ__ExpirationDate__c} in the body of the text, just like the merge fields you use in HTML content. Merge fields are a great way to make your quote terms dynamic.

Organize and Number Terms

Once you have a large collection of quote terms, the resulting big block of text can get a little unwieldy. A few quick changes can help your customer make sense of quote terms a little easier.

One common way to organize quote terms is to set up parent-child term relationships. Let’s make a few of the premade quote terms children of the quote term you just created.

  1. In the navigation bar, click Quote Terms, then choose the All list view.
  2. For QT-0000, click the Edit from the menu.
  3. For Parent Term, find and choose QT-0006.
    That’s the name of the quote term you just created. Also, make a mental note that the text of QT-0000 starts with “Lorem ipsum…”
  4. Click Save.
  5. For QT-0001, click the Edit from the menu.
  6. For Parent Term, find and choose QT-0006.
  7. Click Save.

A few quote terms are now children of QT-0006. To make it more obvious how terms are related, let’s turn on term numbering for your template.

  1. In the navigation bar, click Quote Templates.
  2. Click AW Proposal.
  3. Click Edit.
  4. Check Number Terms.
  5. Click Save.

Fantastic, now when you preview the proposal for Q-00053, the quote terms appear like so.

Portion of proposal showing numbered terms, two that are numbered 1.1 and 1.2.

Finally, sometimes you want to split quote terms to appear in different locations within a proposal. You can do that by creating two template content records (for example, AW Terms 1, AW Terms 2) and putting them in different template sections. Then, on each quote term record, use the Template Content lookup field to assign the right content.

If you use multiple quote term sections, be aware of these two caveats.

  • Parents and children can end up separated. In that case, the children are numbered as though they are not children any more.
  • If a quote term does not have an assigned template content, it appears in every quote terms section.

Make Quote Terms Conditional

Not all customers are alike, and not all sales are alike. For that reason alone businesses need only specific quote terms to appear for certain sales. Salesforce CPQ knows all of the details of the quote, so it can use them to determine if a quote term belongs on a given proposal.

For example, you can make the return policy term disappear for customers that have a platinum service level agreement (SLA). To do this, you must create a Term Condition that is related to the term in question. Term Conditions are little tests that compare something known on the quote (such as Account SLA) with a value (such as “bronze”).

Let’s set up a Term Condition for your quote term to see how it works. You start by navigating to the quote term.

  1. In the navigation bar, click Quote Terms.
  2. Click QT-0006.
  3. Click the Related tab.
  4. In the Term Conditions related list, click New.
  5. For Tested Field, choose AccountSLA__c.
    This field is one half of the comparison we’re looking for. Team Trailhead created this field on the quote object and put the API name into the picklist for you to save time. In real life you must update the Tested Field with what you want to check for.
  6. For Operator, choose equals.
  7. For Value, enter bronze,silver,gold.
    By adding commas between values you’re able to test for more than one value at a time.
  8. Click Save.

With this condition the term only appears for certain SLAs. Quote Q-00053 is for University of Arizona, a platinum customer, so the term should not appear.

Portion of proposal showing quote terms with the first three missing.

Notice that the two child terms for your quote term are gone too. When a parent goes, the children go too.

In this example you tested a field for a specific value. Alternatively you can test a summary variable for a value. Summary variables are a powerful CPQ tool that evaluates a set of data such as quote lines, and summarizes the data down to a single value. For example, you could count the number of subscription quote lines with a summary variable. Then if it’s greater than 0, have a quote term appear about early termination. You can learn about summary variables in the Price Rules in Salesforce CPQ badge.

You can also test for more than one condition to determine if a term should appear. You just create more than one Term Condition. By default, every related condition must be true in order for the quote term to appear. That’s because the Quote Term field named Conditions Met starts as “All.” If you change it to “Any” then only one of the related conditions needs to be true for the term to appear.

Complex conditional logic is supported too. For example, you might need to check if the first condition is true, OR both the second and third are true. You set that up in three steps:

  • First, give each condition a unique value for its Index field, like 100, 200, and 300.
  • Second, use the index numbers along with AND, OR, and parenthesis to write your logic in the quote term’s Advanced Condition field. For example 100 OR (200 AND 300).
  • Third, change the quote term’s Conditions Met field to “Custom.”

Let Users Modify Terms

Most of the time, sales reps shouldn’t need to alter the content of quote terms. Terms are usually carefully crafted to avoid any misunderstandings. That said, you can give reps the ability to edit quote terms.

On the quote record there is a button named Modify Quote Terms. When clicked, it brings you to a page that shows all of the quote terms related to a given template that meet any conditions you’ve set up. Clicking on a term brings up a simple editor.

Modify Quote Terms page with the first term in edit mode, text highlighted.

If you save a quote term with a change, it does not update the original quote term record. That would be a disaster. Instead, CPQ creates a cloned record that it relates to the current quote.

Even so, allowing reps to modify quote terms could be dangerous. Some terms should never be altered. In that case, check the Locked checkbox on the quote term record. That changes the interface to show a padlock over the term.

Quote term with lock icon.

With a little creativity and some easy set up, you can make sure your quote terms can be edited when needed, and only appear when and where they’re needed.

From the cover page to the signature lines, your quote template is now set up to create professional looking, dynamic proposals in just a couple clicks. Great work, admin!

Resources

Share your Trailhead feedback over on Salesforce Help.

We'd love to hear about your experience with Trailhead - you can now access the new feedback form anytime from the Salesforce Help site.

Learn More Continue to Share Feedback