Understanding and Implementing the Discount Distribution Service in Salesforce Revenue Cloud

Photo of author
Written By Jean-Michel Tremblay
Salesforce Consultant

As organizations grow, their pricing strategies become increasingly complex.

One of the most common pricing scenarios involves applying discounts at the quote level rather than individually discounting each line item. Salesforce Revenue Cloud’s Discount Distribution Service element addresses this need, providing a powerful way to apply quote-level discounts while maintaining pricing control.

This post walks you through everything you need to know to implement and leverage this feature effectively.

What is the Discount Distribution Service?

The Discount Distribution Service element in Revenue Cloud’s pricing procedures allows you to apply discounts at the quote header level and automatically distribute those discounts across eligible line items according to your specified rules.

Key capabilities include:

  • Applying discounts as dollar amounts, percentages, or target overrides
  • Distributing discounts equally or proportionally across line items
  • Enforcing minimum unit prices for quote lines
  • Tracking remaining discount amounts that couldn’t be applied
  • Working seamlessly with Einstein AgentForce for natural language discounting

For organizations moving from Salesforce CPQ, the target override discount type is similar to the familiar “Target Customer Amount” functionality, allowing users to specify a final quote amount rather than calculating discount percentages.

Implementation Requirements

Before setting up the Discount Distribution Service, ensure you have:

  1. A functional Revenue Cloud implementation with Salesforce Pricing enabled
  2. Required fields added to your quote/order object and line items
  3. Context definition mappings for these fields
  4. An understanding of your pricing procedures and how pricing elements interact

Required Field Setup

You’ll need several fields on your quote header and lines to implement the Discount Distribution Service:

Quote Header Fields

Field Name API Name (example) Type Description
Discount Type adderDiscountType__c Picklist Values: Amount, Percentage, Override
Distribution Logic adderDistributionLogic__c Picklist Values: Equal, Proportionate (not “proportional”)
Distribution Type adderDistributionType__c Picklist Values: NetUnitPrice, ItemNetTotalPrice
Discount Value adderDiscountValue__c Number The discount amount, percentage, or target amount
Total Remainder Amount totalRemainderAmount__c Currency Stores any unapplied discount amount

Important: The field for distribution logic must use “proportionate” (not “proportional”) despite what earlier documentation may indicate.

Quote Line Fields

Field Name API Name (example) Type Description
Minimum Net Unit Price minimumNetUnitPrice__c Currency Floor price below which discounts won’t be applied

Context Definition Mapping

Once your fields are created, ensure they’re properly mapped in your extended Sales Transaction Context Definition:

  1. Navigate to Setup → Context Definitions
  2. Open your extended Sales Transaction Context (e.g., “EXT_SalesTransactionContext”)
  3. Map each field above to the appropriate attribute in the context definition

Setting Up the Discount Distribution Service Element

To add the Discount Distribution Service to your pricing procedure:

  1. Navigate to Expression Set Templates in the App Launcher
  2. Open your current pricing procedure version
  3. Create a new version (if needed) or edit your existing one
  4. Add the “Discount Distribution Service” element as the LAST element in your procedure
    • Critical: This element must be placed after all other pricing elements

Element Configuration

Within the element configuration:

  1. Set Floor Price Limit: Check this if you want to enforce minimum unit prices
  2. Participating Products: (Optional) Define which products are eligible for discounting:
    • Use a lookup table with product criteria, or
    • Define conditions directly in the element
  3. Input Rule Variables: If using a lookup table, map your product variable
  4. Input Variables: Map all required fields:
    • Header level: adderDiscountType, adderDiscountValue, adderDistributionLogic, adderDistributionType, subtotal
    • Line item level: listPrice, quantity, lineItem, inputUnitPrice, minimumNetUnitPrice
  5. Output Variables: Map the required output fields:
    • discountValue, discountType, distributionType, netUnitPrice, subtotal, totalRemainderAmount
  6. Floor Price Limit: If checked, configure the totalRemainderAmount mapping to capture unapplied discounts

Once configured, save and activate your pricing procedure version.

Limitations and Considerations

There are some important limitations to be aware of:

  1. Not Compatible with Derived Pricing: As of Spring ’25, this element cannot be used in pricing procedures that also include derived pricing elements.
  2. Position in Pricing Procedure: Must be the last element in your pricing procedure.
  3. Manual Recalculation Required: Unlike some CPQ functionality, changes to discount fields don’t automatically trigger recalculation of the quote. You’ll need to either:
    • Implement a custom Lightning Web Component to apply discounts and recalculate
    • Create a custom button using Apex to trigger recalculation
    • Instruct users to make a change to another field (like quantity) to trigger recalculation
  4. Minimum Price Behavior: Minimum unit price limits are only applied when distribution type is set to netUnitPrice.

Agentforce Integration

One of the most powerful features of the Discount Distribution Service is its compatibility with Agentforce. This allows sales reps to use natural language to apply discounts.

For example, a rep can simply ask:

“Set the quote total to $1,200”

Agentforce understands this request, sets the appropriate discount fields, and triggers the necessary recalculation.

To enable this functionality:

  1. Ensure Agentforce is properly configured in your org
  2. Verify the Discount Distribution Service is properly set up
  3. Train your sales team on the appropriate prompts to use with Agentforce

Testing the Implementation

After setting up the Discount Distribution Service, test thoroughly with these scenarios:

Scenario 1: Amount-Based Discount

  1. Create a quote with multiple products
  2. Set Discount Type to “amount”
  3. Set Distribution Logic to “equal” or “proportionate”
  4. Set Discount Value to $250
  5. Trigger recalculation
  6. Verify the discount is applied correctly across eligible lines

Scenario 2: Target Override with Minimum Prices

  1. Create a quote with multiple products that have minimum unit prices set
  2. Set Discount Type to “override”
  3. Set a Target Amount that would normally push some products below their minimum
  4. Trigger recalculation
  5. Verify products don’t go below minimum prices and check the remainder amount

Scenario 3: AgentForce Integration

  1. Open a quote in your org
  2. Ask AgentForce to set the quote total to a specific amount
  3. Verify the discount is applied correctly

Practical Example

Here’s a real-world example of how this works:

  1. A quote has three products:
    • Product A: $100 × 5 qty = $500 (Minimum price: $80)
    • Product B: $200 × 3 qty = $600 (Minimum price: $160)
    • Product C: $50 × 2 qty = $100 (Not eligible for discounting)
  2. Total quote amount is $1,200
  3. Sales rep wants to offer a 20% discount:
    • Sets Discount Type to “percentage”
    • Sets Discount Value to 20
    • Sets Distribution Logic to “proportionate”
    • Sets Distribution Type to “netUnitPrice”
  4. After recalculation:
    • Product A: $80 × 5 qty = $400 (hit minimum price)
    • Product B: $160 × 3 qty = $480 (hit minimum price)
    • Product C: $50 × 2 qty = $100 (unchanged)
    • Total after discount: $980
    • Remainder amount: $20 (couldn’t be applied due to minimums)

Best Practices

  1. Use Custom Lightning Web Components: Create a custom component to handle discount application and automatic recalculation.
  2. Clear Documentation: Ensure your sales team understands how the different distribution types and logic options affect discounting.
  3. Train on AgentForce: Provide clear guidance on the natural language prompts that work best with AgentForce for applying discounts.
  4. Test Thoroughly: Verify discount behavior with different combinations of products, minimums, and discount types.
  5. Consider Approval Processes: For large discounts, implement approval processes to maintain margin control.

Conclusion

The Discount Distribution Service provides powerful capabilities for quote-level discounting in Salesforce Revenue Cloud. While there are some limitations to be aware of, its flexibility allows organizations to implement sophisticated discounting strategies while maintaining pricing control through minimum thresholds.

By following the implementation steps outlined above and considering the best practices, you can provide your sales team with an intuitive tool for applying discounts that both streamlines their workflow and protects your organization’s pricing integrity.


Want to learn more about Revenue Cloud features? Subscribe to our newsletter for regular updates and tips, or book a consultation if you need personalized assistance with your Revenue Cloud implementation.

Have questions about implementing the Discount Distribution Service? Drop them in the comments below!

Leave a Comment