CPQ/Product Bundle

GoCloudz CPQ - Product Bundle for Salesforce



Detailed Guide –

Product Bundle is one of the apps of GoCloudz CPQ suite that helps product managers to price Bundles and Products correctly and helps Sale Reps to add them quickly and build accurate quotes.

Following are the key features of this app –

  • Lightning enabled
  • 100% native Salesforce App
  • Design bundles using standard SFDC Products
  • Add bundles as whole or individual line items to following standard objects – QuoteOpportunity, Order & Work Orders
  • Create ‘bundles on the fly’
  • Supports segmentation, bulk & tiered discounts
  • Supports custom fields and business rules
  • Supports custom attribute pricing
  • Supports multiple-currencies and approval process
  • Supports Product Scheduling
  • Clone bundles along with all items with single click
  • Supports standard SFDC Security Settings & Reporting
  • Seamlessly integrated with PDF Generator to generate highly customized & branded PDF with Bundle views
  • Being native app and utilizing standard SFDC objects allows you to integrate Product Bundle with any 3rd party app like payment processing, inventory management, accounting/financial management apps


Process Flow

Following is the process flow for Bundle Admin & Sales Reps –


  1. This guide is based on Lightning experience, steps are similar for Classic
  2. This guide walks you through Opportunity and OpportunityLineItem objects, but you can follow exact same steps for QuoteOrder, and Work Order objects
  3. Basic understanding of following standard SFDC Objects can be helpful – Products, PriceBooks, Opportunity, Opportunity Products, and Quote
  4. Here are our other apps that are part of GoCloudz CPQ suite –
    • PDF Generator – For designing highly customized PDFs for any Salesforce objects
    • Order Management – Highly configurable app to automate your renewals and order management. Please contact us for more information
  5. Please contact us at support@gocloudz.com for any technical queries

Installing App


  1. Enable Quotes in your Org by following these steps – Setup >> Search Quote in Quick Find >> Quote Settings >> Enable


2. Enable Order in your Org by following these steps – Setup >> Search Order in Quick Find >> Order Settings >> Enable Order Checkbox



Installation Steps 

1. Go to AppExchange to install the app

2. Login to Production or Developer Edition org where you would like to install the app

3. Click “Get It Now” button

4. Select “Install in Production” or “Install in Sandbox”

5. Select the checkbox and click “Confirm and Install”

6. Select “Install for All Users” and click “Install”. This is recommended approach because it will apply all necessary permissions to the profiles for this app. You can easily provision/revoke access to certain users using manage license option.

You should get an email notification once the app is successfully installed. Usually it takes about 2-3 minutes for installation.

Creating Bundles


Detailed Guide –

As soon as Product Bundle app is installed, please follow below steps to create default configuration. This is only required once –

  1. From the apps menu select Product Bundle
  2. Click Welcome Tab
  3. Click Create Metadata button to create default settings in your org

To learn about Field Sets click here.

Next steps is to create and configure Bundles as SFDC Admin or Product Manager.


Bundle Configuration

Click on Bundle tab from top menu to create new Bundle or to manage existing Bundles. Following are the field details to configure bundle.

Required Fields :

Name: Name of the Bundle which will be displayed to Sales Rep. Ideally, the name should be based on logical grouping of Products that helps Sales Rep quickly identify right bundle, but it can be any naming convention that your business follows

Status: Following status values are provided by default – Draft, In Review, Approved and Rejected.  Only Bundles with Approved status are searchable by Sales Reps. Other status values are provided for internal approval purpose. Please note, bundle must be in Draft status in order to make any changes

Contact us at support@gocloudz.com if you need help on how to use Approval Process to update the status. automatically

Pricebook : This is mandatory field and only Products matching the Pricebook can be added to this bundle. Please note, separate bundles need to be created for different Pricebooks

Currency: It’s applicable only for multi-currency Orgs. Based on the Currency selected on the bundle, only Products matching this currency will be added to this bundle

Please check Clone section for more details on creating multiple bundles quickly for different Pricebook and Currency.


Optional Fields :

Order: Order in which Bundle should appear in the Bundle search page for Sales Reps. Makes it easy for Reps to see important or commonly used bundles at the top

Short Description and Long Description: Description for Bundle to help Sales Rep identify the bundle

Start Date and End Date: These fields control Bundle visibility for Sales Reps for a date range. These fields are useful when Bundles are designed for specific campaign, event, or promotion. Keep these fields blank if you want this bundle to be available for Sales Reps always

Is Child Bundle?: Select the flag if this bundle can only be added as part of another bundle. For example, accessories bundle. Such bundles will not appear in the search results

Segment: This is another filter to restrict bundles for say specific customer, region, territory. If bundles are not designed for specific segment, keep this field blank

Image: Specify image URL if you want to show images for bundles for Sales Reps to identify it easily. (It’s preferred to have images stored in Static Resources)

System Fields :

Active: This is a formula field. It will be checked automatically if bundle has “active” line items, it is approved, and has valid date range. Only Active bundles will be available to end users

SKU: It’s an Auto Number field to uniquely identify each bundle. You can create new SKU field to match your company format

Bundle Items: It shows concise/summary view of all items which are added in the bundle. It will populate automatically as you add, remove, or replace bundle items

Cloned From: If Bundles are created by cloning an existing Bundle, this field will point to the master Bundle


Adding Line Items to Bundle

Once bundle is configured, next step is to add Products or child bundles to the Bundle. (Note: Bundle must be in “Draft” status before adding or editing bundle items)

Depending on how you have configured lightning page layout, you should see “Related” section either next to “Details” or on side bar panel. Click Related >> Add or Edit Items button to add/edit Products/child Bundles.

  1. You can add either Products or any approved Bundles as child bundle under this bundle. Products are standard SFDC Products. If you want to add Bundles, toggle to Bundles
  2. If you want to load all Products or Bundles, just click Filter button. Alternatively, you can search by specifying keywords in the text field and clicking Filter button or by selecting values from pick-list filters without clicking the button. In the filtered list, Products are shown grouped by Product Family by default and you can change that grouping through Custom Settings mentioned in Advanced Customization section. Click column headers to sort the result set. To view Product or Bundle details, click on its name
  3. Select the needed items by clicking the checkbox in front of the item or click on the checkbox on top of the grouping to select all items in that group
  4. Click Configure button to configure Product/Bundle attributes/fields before adding it to Bundle

5. All the items to be configured are shown on top of the page
6. Useto sort the items within the bundle through drag-n-drop

7. Click  to delete the item from the bundle

8. Clickto see quantity breaks if the Product has volume pricing defined (please check Volume Pricing section on how to define Bulk/Tiered pricing for Product). This icon will be shown only for the Products having volume Pricing defined. Please note, for Bundles, this icon is now shown even if volume pricing is defined for the Products added to those bundles

9. Select Required checkbox if the item is must for the bundle. Such items cannot be removed when Sales Reps add bundles to Opportunity

10. You can now select “Status” for each bundle item indicating if the product is Active, EOL, or Discontinued. Only Active bundle items are shown when user selects the bundle.

11. Changing individual Product or Bundle quantity will automatically update Discount & Standard Sales Price fields for individual items as well as for entire Bundle. Sales Price based on attributes of line items, e.g., size, color, capacity etc. can also be configured on this interface and in order to enable that please refer Attribute Pricing section for steps to define attribute pricing

12. You can also configure Bundle Level Discounts or Bundle Total price which will update individual Product/Bundle values. Bundle Level Discounts value will be applied to all items but Bundle Total price will reverse calculate the Total Price to all items individually in the ratio of their List Price and in-turn Discount & Sales Price will be applied individually

13. Click Save and Continue to continue filtering/configuring the items or Save and Close to add these items to bundle & go back to bundle details

14. Once Saved, Bundle header will have Sales Price, Discount etc. updated.  Individual bundle items can be viewed under Bundle Items related list (please refresh the page if you don’t see that due to Lightning caching issue) and a summary view is populated in Bundle Items Text Area field. By default it’s shown in following format

You can modify this format and add any field available on Products Object by updating following formula field –Setup >> Object Manager  >>  Bundle Line Item >> Concise View (API Name Concise_view__c)

15. Once Bundle is ready, change the status to Approved manually to make it available for sales rep. You can also configure standard Approval Process and submit for approval




Detailed Guide –

Need to quickly create bundles in different pricebook or currency? Simply click Clone Bundle button on the bundle which will serve the bundle as a template.


Few example when you want to clone a bundle –

  1. Similar bundle for different pricebook.  Updating pricebook updates the list price of bundle items as per the selected pricebook.
  2. Similar bundle for different currency (for multi-currency org). Updating currency updates the bundle line item list price as per the selected currency
  3. A bundle has just few items different from existing one or has different configuration but same items


  1. iClone is our other Appexchange App which clones related list records along with the header details which is a limitation in standard SFDC Clone feature. It’s a paid app but we have provided this functionality to clone bundles faster freely. You can find more details about the app if you want to use it for any other Standard or Custom objects here.
  2. You can add “Cloned From” field to Bundle page layout to track which bundle it was cloned from, if you don’t see that field.


When you change Products prices it does not automatically reflects in the bundles. (This is because Salesforce does not support triggers on PricebookEntry object. Please vote for this idea to gain Salesforce attention: https://success.salesforce.com/ideaView?id=08730000000XnicAAC)


We are aware of this and hence we have Refresh functionality baked into the platform. Just click “Refresh” button on a bundle to reflect latest price, cost, margin, sales price, discount etc. On clicking this button all Bundle Item pricing will be updated as per the new price in the Pricebook. To refresh multiple bundles at one go, go to Bundles tab, select All in the list view, click Go, click check box next to Action column and then click Refresh.


  1. Refreshing bundles does not update pricing for the bundles that are already added to opportunity or quote.
  2. Above solution may not be ideal if the pricing in your company changes frequently. In that case you can go with batch job that can be scheduled every night or as per your business needs. We can help with such customization, please reach us at support@gocloudz.com 


Generate Product (Classic only)

When Bundles are added to Opportunity, all Bundle Items are added as individual Opportunity Products. If you have a business scenario which requires adding bundle as single line items on Opportunity or not showing individual bundle item details on quote, you can use Generate Product button to generate standard SFDC Product from the bundle, which we refer to as “Bundled Product”.

Please note that original bundle will be intact and the “Bundled Product” will have link back to the Bundle for any reporting purpose. Using this option also restricts user from modifying individual bundle item when adding to opportunity or quote.


To get best of both worlds, you may want to look at our other offering – PDF Generator app. Using this app, you can have individual bundle items on opportunity and quote for forecasting, inventory management, integrating with ERP or accounting system but on the PDF that gets send to end customer, it will show just the bundle pricing. You have options to do side by side comparison of multiple bundles as well plus whole lot of options on how you want to display bundles and standalone products. Using Docusign? It also integrated with Docusign for seamless e-signature.

You can install free 15 day trial from AppExchange: https://appexchange.salesforce.com/appxListingDetail?listingId=a0N3000000B4AsxEAF


If you have a business requirement to to get approvals on bundles before it’s sold by Sales Rep then standard SFDC Approval Process can be configured on bundle records just like any other object in Salesforce.

Once configured, you can click “Submit for Approval” to start the approval process. You can also add “Approval History” related list to the page layout to see who approved / rejected it along with any comments.

You can find more details on Approval Processes here or contact us at support@gocloudz.com

Adding Products and Bundles


Detailed Guide –

Once bundle is configured and approved, Sales Reps can start using those bundles to quickly configure Opportunity, Quote, Order and Work Order. If you are using standard Salesforce, Reps are accustomed going to Opportunity >> Product >> Add Product button.  Instead of Add Product button, they will now use Add Line Item button, to take advantage of bundles, volume pricing, attribute pricing and did we mention – way better user experience than standard Add Product screen. Please see Buttons section on how to add custom buttons to page layout.

Here are the steps to add Products and Bundles to Opportunity (Steps are similar if you are configuring Quote, Order and Work Orders)

1. Click Add Line Items button in Products related list.

2. Depending on what you want to search, toggle the bar to Product or Bundle 

3. Enter the keyword to search for Product or Bundle. You can also customize search by adding picklist or any other custom fields. For example, “Product Family”

Info: Need to configure what fields are shown in above screen? Please ask your admin to look at FieldSets section

4. For bundles, Click   to expand the bundle. This will show all the items for that bundle. If there are any child bundles, it will show individual items for child bundle as well.

  • Bundle items marked “Required” during bundle configuration will always be selected and the “select” checkbox will be greyed out. For example, “GenWatt Diesel 10kW” in above screenshot.
  • By default, each bundle item will show the pricing configuration defined in the bundle. If the user has necessary privileges, he/she can change pricing fields, description, or other custom fields defined.
  • Click gear icon to see quantity breaks if item has volume pricing defined (please check Volume Pricing section for more details). Based on the pricing configuration of Product, it will change the item pricing i.e. based on volume or attribute pricing.
  • Updating fields on bundle (header) will update corresponding field on all bundle items. For example, “Kilowatts” custom field in above screenshot
  • Bundle quantity will multiply the quantity on all bundle items. We call this quantity multiplier.

5. Once products and bundles are configured, click  button to add these items to Cart. You can continue to add more items to the cart.

6. Once you have add necessary items to cart, click  to preview products and bundles which are going to be added to the opportunity. Following are the options in Cart –

  • Click Back button to configure additional products and/or bundle
  • Click Save button to save the cart and go back to the opportunity
  • Click Schedule button to save the cart and schedule (quantity or revenue) line items (Product Scheduling must be enabled and it is applicable to Opportunity object only)

Info: Need to configure what fields are shown in above screen? Please ask your admin to look at FieldSets section

6. On saving the Cart, all bundle items and standalone products are added as standard Opportunity Products with some additional information for bundle items. That way existing reports, dashboards, forecast, integration, and other customization like workflow and trigger would work just fine. What a relief for your admins and product managers!! And this is number 1 reason why Product Bundle is the plug-and-play solution.

Below screen shows an example of bundle and standalone products.

Following are the custom fields added to Opportunity Product as part of Product Bundle app. You can pull them in report to view how the bundles are doing.

  • Bundle Name – name of the bundle if the items were added from a bundle. For example, “My Bundle” in above screenshot. If items were part of child bundle, it will display child bundle name.
  • Bundle Item – lookup to corresponding bundle item.
  • Hierarchy – unique identifier in case of duplicate products and/or bundle added to same opportunity.


To edit line items click on Edit Line Items button which shows existing products and bundles, everything else remains the same.


FAQs –

Q. The bundle exists in the system, but bundle is not coming up in the search.

A. Please verify below criteria and make sure bundle meets all of them

  • Bundle must be in “Approved” status
  • Bundle price book must be same as Opportunity price book
  • Bundle currency must be same as Opportunity currency (applicable only for multi-currency Orgs)
  • Bundle must be valid – today’s date must be within Bundle Start and End Date range
  • Bundle Segment must match Opportunity Segment (Please check Segmentation section for details)


Q. I want discount to be applied directly to Sale Price

A. Not all companies like standard Salesforce way of applying discount to Sub Total field, instead they would like to see updated Sales Price based on Discount percentage. Are you one of them too? Not to worry, we got you covered. Please see Advanced Customization >> Discount changes Sale Price sections for more details.


Q. I do not want Reps to update bundle pricing that is defined by Product Mangers

A. You may have a need to add bundles as-is because those are pre-approved for certain price and reps should not change the price when adding to opportunity. You can also have exception criteria, for example Sales Rep cannot modify the price, but Sales Manger is allowed to update the price before adding bundles to opportunity. Please see Advanced Customization >> Can edit Bundle … sections for more details.


Q. Why bundle items are not sorted in correct order?

A. By default items are sorted in alphabetical order. To sort them as per the time stamp items were added to Opportunity Product, click custom “Sort” button.  It is one click sort and page refreshes to show the items in correct order. Note, Sort button is only available in Classic because there is no concept of sort in Lightning. In Lightning, users can click the column headers to sort the list. For more information, see this link: https://success.salesforce.com/answers?id=9063A000000l2XfQAI 


Q. The bundle and opportunity have different currency. (Applicable for multi-currency Orgs)

A. Salesforce allows only one currency on an record and hence you will need to create bundles in each currency that you want to sell in. Not to worry, we have made this process very easy. Please ask you your admin to look at Clone section on how to create similar bundles.


Q. How to auto expand bundles and select bundle items automatically?

A. Depending on your use case, you may want to show all bundle items and probably select them by default for your Sales Rep. This will save their valuable time so they can focus on things that matter.  Please see Advanced Customization >> Auto Expand Bundles and Select all items once Bundle is expanded sections for more details.


Product Schedule

Product Bundle takes default Product Scheduling to whole new level. If you are into subscription or recurring business model, your users will love how easy it is to override default scheduling and edit multiple schedule line items.


Steps to create Schedule Line Items

  1. Search for the product or services like you normally would and add them to Cart
  2. Click Schedule button on the Cart
  3. Reps can view default schedule for each product that has scheduling enabled and optionally override it
  4. Click Continue to view break down of each Schedule Line Item. Users can override the information as per the business needs
  5. Finally click Save and Close once all schedule information looks good

Note: Need to edit all schedule items for an opportunity? Click Schedule button on the opportunity to mass update all schedule items in one swoop. This is much faster and convenient way of managing schedules compared to standard process where users must update one item at a time.


Steps to enable Product Schedules

Wondering why none of the above is working for you? Probably you do not have scheduling enabled or not configured it. Please reach out to your admin to follow below steps –

  1. Go to Setup >> Products >> Product Schedule Settings >> Enable the settings applicable to your org
  2. Go to Setup >> Custom Settings >> Bundle >> Manage >> Check “Establish Scheduling” checkbox

If you are using Product Schedule for first time, Admins must set default schedule for each recurring product or service. They can do so by going to product record and setting below values


Volume Pricing

Detailed Guide –

Volume pricing helps simplifying complex pricing model. You can use volume pricing to set the product price or​ offer discount based on the ​quantity of the product. You can skip this section if you don’t ​have quantity based pricing or discounts for products.

Volume Pricing can be defined for each SFDC Products individually. The pricing break-up based on the quantity is available while configuring bundles or while adding products/bundles to Opportunity as explained in earlier sections. No need to look up external spreadsheets & as you have seen in earlier sections Sales rep can hover over “gear” icon to see volume pricing real time.

We support 2 kinds of Volume Pricing –

Bulk Pricing

Bulk pricing applies the pricing or discount on total quantity. Let’s check an example to understand it better. Let’s say you have minimum quantity criteria of 10 shirts at the price of $200 and you offer $17 for quantity up to 15 shirts & $15 for quantity up to 25 shirts. In this case, for first 10 shirts we define the Units of Measurement as Group to denote it as minimum quantity and even if less than 10 quantities are purchased, price will be fixed at $200. If quantity more than 10, next price range will be applied and let’s say 15 shirts are ordered in that case pricing will be $17*15 = $255 and same is true for the next slab of 25 shirts. So, in this model you can see that price of the Product is defined based on the slab your quantity falls in.

Tiered Pricing

Tiered pricing applies the pricing or discount as per the slabs defined by breaking the total quantity as per the slabs defined. So, for the same scenario we discussed for bulk pricing, in case of tiered model, for 25 shirts, $200 will be applied for 1st 10 shirts which is under minimum quantity criteria, $17 will be applied for next 5 shirts as per 15 shirts criteria and $15 will be applied for remaining 10 shirts which fall under 25 shirt criteria.

Set Bulk or Tiered Pricing for a product

1. Edit Product page layout to add Volume Pricing Model field and Volume Pricing related list

  1. Save the page layout.
  2. Select Bulk or Tiered for Volume Pricing Model picklist on product record based on your pricing model. This way you have flexibility to choose different pricing model for different products.
  3. Click New button in Volume Pricing related list
    1. Label – Give user friendly label like “1 to 30 licenses”. Sales Reps will see this label while configuring products/bundles.
    2. UoM – select group if price is applicable for specific quantity of Products & each if price is applicable for individual product.
    3. Pricebook (Optional) – Select pricebook to restrict this volume pricing to specific pricebook 
    4. Segment (Optional) – Select Segment to restrict this volume pricing to specific segments like region, customer type etc.  Please check Segment section for more details.
    5. Lower Quantity – starting quantity for the range
    6. Upper Quantity – upper quantity for the range
    7. Field Name – Field to be updated based on the quantity range. To apply volume pricing to a custom field, simply add the Field API name in the Field Name picklist under Setup >> Volume Pricing >> Fields
    8. Field Type – Select Currency, Percent or Number.
    9. Field Value  Specify the value in Currency, Percent or Number which will be multiplied with the Quantity in that range. 
    10. Click Save or Save & New to add more volume pricing records

Following are the calculation details for different Field Types –

  • Currency – it will multiply quantity with currency value specified in Field Value specified.
  • Percent – it will calculate the % of List Price based on Field Value.
  • Number – it will multiple quantity with number specified in Field Value.

All these calculations will update Field specified in Field Name. Please note, in case of Tiered Pricing, it will be average value based on all tiers.

Example of Bulk and Tiered Pricing same quantity –

Bulk Pricing: All quantities at same price

Tiered Pricing: Price determined based on the quantity falling in particular tier


As these configurations are defined on Standard Product object, you can use Dataloader to mass insert volume pricing information.

Attribute Pricing

Volume pricing is very handy and solves the problem of pricing based on quantity but in more complex scenario, the pricing can be based on more than just the quantity & it can be dependent on multiple attributes of a product. For example, when ordering pizza, the final price is based on the ingredients (attribute) the customer chooses. Other example is car sales where sales agent creates 2 quotes for same make and model – leather upholstery (attribute) increases net sales by $2,000 and other quote with plush interior increases net sales by $700.

Idea of attribute pricing is you can add attributes to products that affect the final product price. In below screenshot, Kilowatts is custom field (attribute) and pricing of the product is based on the electrical power. With attribute pricing, you can get rid of redundant products – GenWatt Diesel – 10KW, GenWatt Diesel – 200KW, GenWatt Diesel – 300KW and have just one base product “GenWatt Diese” and derive pricing based on “electrical power”


Attribute Pricing is a 2 step process:

  • Step 1 – Attribute Pricing
    • Click on Attribute Pricing tab & click New 
    • Enter “user friendly” label that end users will see on matching attribute
    • Choose Field Name – Discount or Sale Price depending on what needs to be adjusted
    • Enter Field Value that will be applied to field selected above
    • Optionally select product if this rule is for a specific product. Keep it blank if the rule applies to all the products
    • For most cases Order can be 1, so enter 1 and click Save
  • Step 2 – Attribute Value
    • Go to Attribute Value related list for the record created above and click New 
    • Attribute Name is the field API name of the attribute which will affect the value defined in step above. For example, if you have “Kilo Watts” field on Opportunity Product with API name “Kilowatts__c”, then enter “Kilowatts__c”
    • Attribute Value is the value for which the rule should be fired. For example, continuing with above example, if  “Kilo Watts” was picklist with values – 10KW, 100KW, 1000KW. Enter one of those value.
    • If you entered multiple Attribute Name-Value pairs, then each one of those must be matched for the rule to fire. For example, in below screenshot the Sale Price of 220,000 is applied to “GenWatt Disel 1000kW” product only if Rep selects KiloWatt__c: 10KW and Color: Red


You can use Dataloader to mass insert attribute pricing information.

Field Dependency

There are many use cases where certain fields are not applicable for certain products or bundle. For example, consider “Term” picklist field with values “3 month, 6 month, 12 month, etc”. This field is good for your recurring products, but may not make sense for your one-time products. In such scenario, you may want to hide “Term” field for all one-time products.

There are couple of options available when you configure Field Dependency (FD)

  • Hidden: The field will be hidden for the product or bundle
  • Read Only: The field is read only for the product or bundle

To configure FD for product

  • Go to Product record >> Field Dependencies related list
  • Click “New”
  • Enter field API name and select Action
  • Click Save or “Save and New” to configure more fields

For example, as per below configuration, “Kilo Watts” field will be hidden for “GenWatt Diesel 10kW” product.

This is how the end users will see it.


Just like product, you can also configure FD for bundles.

To configure FD for bundle

  • Go to Bundle record >> Field Dependencies related list
  • Click “New”
  • Enter field API name and select Action
  • Click Save or “Save and New” to configure more fields

Note: FD adds one more layer of security to your existing fields in the FieldSet. FD has no impact if the fields configured are not part of the fieldset.

Bundle on the flay (Classic only)

Need to create bundles from existing Opportunity Line Items? We call this “Bundle on the fly” (provided Sales Reps have permissions assigned to create Bundles). This is helpful in the situations where Sales Reps wants to save particular Opportunity Product configuration as bundles for re-use at later time. Here are the steps to create bundles on the fly –

  1. Select the products from existing opportunity or quote that you like to bundle
  2. Click Create Bundle button on Opportunity Product
  3. Enter bundle details. Optionally, configure products
  4. Click Save and you have your bundle ready with right pricing
  5. Change the status to Approved and your new bundle is ready to be sold

Look at Approval Process section to have a review process for bundles created by Sales Rep.


Just like pricebook and currency ISO code (for multi-currency orgs), you can use Segments to add one more layer of security/filtering. Few common scenarios we come across are – securing bundles based on customer type, opportunity, or region by defining Segment field on bundle and opportunity. For example, if “Segment A” is selected in bundle Segment field, this bundle will appear in the search only if opportunity has “Segment A” selected on Segment field.

To modify Segment picklist go to

  • Setup >> Object Manager >> Bundle >> Fields & Relationships >> Segment
  • Setup >> Object Manager >> Opportunity Product >> Fields & Relationships >> Segment

NoteKeep segment fields blank, if you do not want to use segmentation.


Below sections will walk you through on editing various views and showing the fields that makes sense for your business. The app uses all standard Salesforce features which makes it very easy to configure.

Custom and Standard Fields

Using FieldSets you can easily add or remove any standard and custom fields to meet your business needs. The steps on how to add fields are the same for all the fieldset, just the object and the fieldset names differ.

Note: Salesforce does not support editing FieldSet in lightning experience. If you have lightning enabled, please switch back to classic to modify the field sets.

Creating Bundles

This section will walk you through on how to configure fields users will see when creating bundles. There are 3 sections where you can configure the fields.

Filter Product

Customize below fieldset to include fields users will use to filter the product set. For example, Product Family, Code, etc

  1. Go to Setup >> Customize >> Price Book Entries >> Field Sets >> Edit FieldsToFilter field set
  2. Drag any Product or Pricebook Entry custom field into In the Field Set. For selecting Product fields click on ProductID in the left panel. Click Save



Select Product

Customize below fieldset to include fields users will see when selecting products. The steps are same as above, just the fieldset name is different.

  1. Go to Setup >> Customize >> Price Book Entries >> Field Sets >> Edit FieldsToDisplay field set
  2. Drag any Product or Pricebook Entry custom field into In the Field Set as shown above and Click Save


Configure Product

Once required products are selected, they are added as Bundle Line Item. Configure below fieldset to provide default values to your bundle items. Any field with same API name on Bundle Line Item object and Product/Price Book Entry object will be mapped automatically. For example, if there is custom picklist field “Type__c” on Product and Bundle Line Item objects, then the values will be automatically copied from Product to Bundle Line Item. You can update it if needed.

The steps are same as above, just the fieldset is different.

  1. Go to Setup >> Create >> Objects >> Bundle Line Item >> Field Sets >> Edit FieldsToDisplay field set
  2. Drag any custom field into In the Field Set. Click Save



Adding Bundles

This section will walk you through on how to configure fields users will see when adding bundles to Opportunity. There are 3 sections where you can configure the fields.

Filter Bundle

Customize below fieldset to include fields users will use to filter the bundles. For example, Bundle Type, SKU, etc

  1. Go to Setup >> Create >> Objects >> Bundle >> Field Sets >> FieldsToDisplay field set
  2. Drag any standard or custom field into In the Field Set. Click Save

Select Bundle Item

Once the bundle is expanded, the Bundle Line Items are converted to Opportunity Line Items. Just like standard fields – Quantity, Sale Price, Discount, you can also display custom fields from Opportunity Line Item object.  Any field with same API name on Bundle Line Item object and  Opportunity Line Item  object will be mapped automatically.

  1. Go to Setup >> Customize >> Opportunity Product >> Field Sets >>FieldsToDisplay
  2. Drag any standard or custom field into In the Field Set. Click Save


Customize below fieldset to include fields users will see once bundles and/or products are added to the Cart. You can show just the key fields user needs to review before saving them back to Opportunity.

  1. Go to Setup >> Customize >> Opportunity Product >> Field Sets >> FieldsToDisplayCart
  2. Drag any standard or custom field into In the Field Set. Click Save


Adding Products

Congratulations, no additional configuration required. By configuring above FieldSets above, you have configured the Product view as well.



Order and Work Order objects

FieldSets for Order and Work Order objects are created by default if you have followed the steps mentioned in  Installing App section.

If you don’t find FieldSets for these objects, you can go back to that section or create field sets manually just like those on Opportunity Product >> FieldSets

  • Setup >> Create Objects >> Order Products >> Field Set >> Click New
  • Setup >> Create Objects >> Work Order Line Items >> Field Set >> Click New


To access the functionality covered in this section you must add these custom buttons to respective page layouts – Add Line ItemsEdit Line Items, Sort, and Schedule


Add buttons to Opportunity and Quote 

  • Setup | Object Manager | Opportunity (or Quote) | Select Page Layouts. Click Edit next to layout you want to modify
  • Click the wrench icon on the Opportunity Product section
  • In the popup window, click Buttons section
  • Move Add Line Items, Edit Line Items, and Sort from Available Buttons list to Selected Buttons list
  • Click OK and then Save to save the layout


Add buttons to Order

  1. Go to Setup >> Object Manager >> Order Product >> Buttons, Links, and Actions
  2. Click “New Custom Button or Link”
  3. Create new button as per below screenshot.

URL: {!SUBSTITUTE( $Site.Prefix , ‘null’, ”) }/apex/sfcloud__ConfigureOrder?id={!Order.Id}


Add buttons to Work Order

  1. Go to Setup >> Object Manager >> Work Order Line Item >> Buttons, Links, and Actions
  2. Click “New Custom Button or Link”
  3. Create new button as per below screenshot

URL: {!SUBSTITUTE( $Site.Prefix , ‘null’, ”) }/apex/sfcloud__ConfigureWorkOrder?id={!WorkOrder.Id}


Overriding standard Add Product or Edit Product buttons 

If you do not want to add custom buttons as described above, you can also override standard buttons to point to our Product Configuration page. This will help your Sales Reps search, configure, and add bundles and standalone products in one go. Using standard buttons means one less step involved in user training.

For Opportunity (For quote, navigate to Quote Line Item) –

  1. Go to Setup >> Object Manager >> Opportunity Product >> Buttons and Links
  2. Click Edit next to Add Product or Edit Product standard button
  3. Select Visualforce Page >> ConfigureOpportunity as override
  4. Click Save


Finally a section that Admins can be proud of and appreciate the ease of configuration. App configuration can be challenging and time consuming if not done the right way.  We use Custom Settings to manage most common settings and security. If you are keeping track, this is reason #2 why Product Bundle is plug-and-play solution.

Go to Setup >> Custom Settings >> Click Manage next to Bundle. 

To set org wide default configuration click “Edit”.

To set profile or user specific configuration click “New”

Following is the list of configuration that can be modified –

Auto Expand Bundles: Select this flag to auto expand the bundle while adding them to Opportunity or Quote. This is good option if you don’t want Sales Reps to click “+” sign to expand individual bundles

Bundle Cost API name: Map custom bundle cost field when generating “Bundled Product”. Please check Generate Product section for more details on generating Products from Bundles

Bundle Sale Price API name: Map custom bundle sale price field when generating “Bundled Product”. Please check Generate Product section for more details on generating Products from Bundles

Can edit Bundle Description? Uncheck this flag to prevent Sales Rep from editing bundle description when adding bundles

Can edit Bundle Item Quantity? Uncheck this flag to prevent Sales Rep from modifying bundle item quantity when adding bundles

Can edit Bundle Price, Margin, Discount?  Uncheck this flag to prevent Sales Rep from modifying  bundle item pricing fields when adding bundles

Can edit Product Price, Margin, Discount? Uncheck this flag to prevent Sales Rep from modifying  product pricing fields when adding products

Create new line item for each tier: While adding tiered products, should system create new line items for each tier or just one single line item with total quantity? For more information go to Volume Pricing >> Tiered Pricing section

Decimal Places: Control number of digits following the decimal point for numeric and currency fields

Default To Bundle Filter: Select the flag to auto select Bundle in the toggle bar     

Discount changes Sale Price: While adding bundles and products should the sale price update according to the discount? If checked: discount is applied to sale price, standard Discount field is not populated and subtotal field is hidden from the page layout. If not checked: discount is applied to subtotal field instead and Discount field is populated (this is how standard Add Products functionality works)

Establish Scheduling: Check the box to show “Schedule” button when configuring Opportunity. Note: Standard Salesforce scheduling must be enabled and configured beforehand. Please see Product Schedule for more information

Number of items to display: Default number of products or bundles to display within a group. Please do not keep very high number, as the screen may become less responsive. For best performance keep it less than 25

Product Filter: Enter formula to hide certain products from the search. For example if you have field “End of Life” on Product object with API name “End_Of_Life__c ” then you can use below formula to discard all end of life products

End_Of_Life__c = true

Product Grouping: Group products into logical buckets when user performs a search. You can provide API name of any product field. For example, enter “Family” if you want to group the results by “Product Family” field

Product Search Fields: By default the keyword search searches for Product Name, Code and Description. You can extend the search to include any custom fields on Product object. Enter comma separated API name of the Product fields. For example:

Custom_Field1__c, Custom_Field2__c

Select all items once Bundle is expanded: While expanding bundles, should the bundle items be selected by default?


Preventing users from deleting/editing individual bundle items (optional)

After bundle is added to an opportunity or quote, individual items can be edited or deleted by users. To preserve bundle integrity, you can prevent users from editing or deleting individual bundle items. Please follow below steps for Opportunity Products –

  1. Prevent Edits
    1. Go to Setup >> Object Manager >> Opportunity Products >> Buttons and Links
    2. Click Edit next to Edit standard button
    3. Select Visualforce Page >> ProductBundle_EditOpportunityItems as override
    4. Click Save
  2. Prevent Deletes
    1. Go to Setup >> Object Manager >> Opportunity Products >> Buttons and Links
    2. Click Edit next to Delete standard button
    3. Select Visualforce Page >> ProductBundle_DeleteOpportunityItems as override
    4. Click Save

Follow same steps on Quote Line Items object if you want to prevent users from editing or deleting individual bundle items on Quote


Enhanced Lookup (optional)

Enable enhanced lookups so users can use wildcards in their lookups. This will help users sort, filter, and page through their results.

  1. Click Setup | Customize | Search | Search Settings
  2. In the Lookup Settings area, select Bundles, Bundle Line Items objects to enable enhanced lookup functionality
  3. Click Save

After enabling enhanced lookups, specify which fields users can use to filter lookup search dialog results. If you don’t specify any fields,  users can’t use filters in enhanced lookup dialog.

Suggest Edit