Blogs

How to create ProductBundles in CPQ. (Salesforce CPQ)

Salesforce CPQ (Configure, Price, Quote) provides a powerful feature called Product Bundles, which allows businesses to group related products and sell them together as a single package. Bundling helps improve sales efficiency, ensures correct product combinations, and offers customers a complete solution instead of individual items. In this blog, we will learn how to create Product Bundles in Salesforce CPQ, starting from product creation to adding bundle options. What Is a Product Bundle in CPQ? A Product Bundle is a collection of related products or services sold together under one main product. For example, a mobile phone bundle may include accessories like a charger, earphones, and tempered glass. In CPQ: One product acts as the Bundle (Parent Product) Other products act as Options (Child Products) Options are added automatically when the bundle is selected in a quote This ensures accuracy, consistency, and faster quote creation. Steps to Create a Product Bundle in Salesforce CPQ Step 1: Create the Main Bundle Product First, we need to create the main product that will act as the bundle. Go to the Products tab in your CPQ org Click on the New button Enter the Product Name Check the Active checkbox so the product is available for use This product will serve as the parent bundle. Step 2: Enter Product Code and Save After entering the basic details: Add a Product Code (unique identifier for the product) Click on the Save button The product record is now created, but pricing and bundle options still need to be configured. Step 3: Add Price to the Bundle Product Every CPQ product must have a price to be selectable in a quote. Open the product record Click on the Related tab Navigate to Price Books Click on Add Standard Price Enter the product price Click Save Now, the bundle product has a standard price. Step 4: Create Option Products for the Bundle Next, create all the products that will be part of the bundle. Examples of bundle options: Charger Tempered Glass Earphones Warranty Extension For each option product: Go to Products Click New Enter Product Name and Product Code Mark it as Active Add a Standard Price using the Price Book Repeat this process for all products you want to include in the bundle. Step 5: Add Product Options to the Bundle Now, link the option products to the main bundle product. Open the main bundle product Go to the Related tab Find Options Click on New Here, you define how the child products behave inside the bundle. Step 6: Configure Bundle Option Fields While creating a Product Option, fill in the following key fields: Optional SKU: Select the child product (e.g., Charger) Quantity: Number of units included Required: Check this if the option must be included Min/Max Quantity: Control how many units can be selected After entering the details: Click Save This links the option product to the bundle. Step 7: Add Remaining Products to the Bundle Repeat the same process to add all remaining products: Charger Tempered Glass Accessories Services Each product added becomes part of the bundle and will appear automatically when the bundle is selected in a quote. How Product Bundles Work in Quotes Once the bundle is configured: When a user adds the bundle product to a quote All associated option products appear automatically Required options are included by default Optional products can be selected or deselected based on configuration This reduces manual effort and ensures correct product combinations. Conclusion Creating Product Bundles in Salesforce CPQ is an essential skill for CPQ implementation and sales operations. By defining a parent product, assigning prices, and linking child products as options, you can build flexible and powerful bundles that improve quote accuracy and customer experience. Product Bundles help streamline sales processes, prevent configuration errors, and deliver complete solutions in a single click.

How to create ProductBundles in CPQ. (Salesforce CPQ) Read More »

How to Use Exposed Attributes in FlexCard (OmniStudio)

In OmniStudio (Vlocity), Exposed Attributes in a FlexCard allow you to pass data dynamically from a parent component—such as an OmniScript, another FlexCard, or a Lightning App Page—into a FlexCard. This makes FlexCards reusable, dynamic, and context-aware instead of hard-coded. In this article, we’ll understand what Exposed Attributes are, why they are used, and how to configure and use them step by step. What Are Exposed Attributes in FlexCard? Exposed Attributes are input parameters of a FlexCard. They act like variables that receive values from an external source. Instead of fetching data internally every time, the FlexCard can accept values such as: Record Id (AccountId, ContactId, etc.) Any custom field value Context data from OmniScript or another FlexCard Once exposed, these attributes can be used inside: Data Sources Conditional Visibility Text Fields Actions This makes the FlexCard highly reusable across different pages and contexts. Why Use Exposed Attributes? Using Exposed Attributes provides several benefits: Makes FlexCards reusable across multiple records Avoids hardcoding record IDs Enables communication between OmniScript and FlexCard Improves performance by passing context instead of refetching data Helps in dynamic UI rendering based on input values Steps to Use Exposed Attributes in FlexCard Step 1: Open or Create a FlexCard Go to OmniStudio → FlexCards Open an existing FlexCard or create a new one Switch to Edit Mode In Setup Exposed Attributes Step 2: Add an Exposed Attribute Click on the Setup tab (right panel) Scroll to Exposed Attributes Click Add New Now define the attribute: Name: Example – recordId Type: String (most commonly used) Default Value (optional): Can be left blank or set for testing Save the FlexCard after adding the attribute. Exposed Attributes Step 3: Use Exposed Attribute in Data Source Exposed Attributes are commonly used in Data Sources to fetch record-specific data. Go to the Data Source section In the Input Map, reference the exposed attribute using: {{recordId}}   Map it to the required parameter (e.g., Id in DataRaptor or Integration Procedure) This ensures data is fetched dynamically based on the value passed from outside. In Text Field Paas {Session.AttributeName} Step 4: Use Exposed Attributes in FlexCard Fields You can also use exposed attributes directly in UI elements. Examples: Text Field value: {{recordId}} Conditional Visibility: Show component only if recordId != null Actions: Pass the attribute to another OmniScript or FlexCard This allows UI behavior to change dynamically. Step 5: Pass Exposed Attribute from OmniScript When using a FlexCard inside an OmniScript: Drag the FlexCard element into the OmniScript canvas Go to Element Properties Under Input Parameters, map: Key: recordId Value: %ContextId% or any OmniScript variable Now the FlexCard receives the record Id from the OmniScript context. Step 6: Pass Exposed Attribute from Another FlexCard If calling a FlexCard from another FlexCard: Add the child FlexCard as an element In the Input Parameters, pass a value like: {{Id}}   Map it to the exposed attribute name This allows parent-child FlexCard communication. Common Use Cases of Exposed Attributes Showing Account details based on selected Account Reusing the same FlexCard on different record pages Passing ContextId from OmniScript to FlexCard Controlling UI visibility based on input values Calling Integration Procedures dynamically Best Practices Always use meaningful attribute names (e.g., accountId, caseId) Keep attribute type consistent with expected value Avoid unnecessary default values in production Use exposed attributes instead of hardcoded values Test using Preview and different record contexts Conclusion Exposed Attributes are a powerful feature in FlexCards that enable dynamic data passing and reusability. By defining exposed attributes and passing values from OmniScripts or parent FlexCards, you can build flexible, scalable, and performance-optimized OmniStudio solutions. Mastering exposed attributes is essential for real-world OmniStudio implementations.

How to Use Exposed Attributes in FlexCard (OmniStudio) Read More »

How to Make Transform DataRaptor in ListofObject to ListofItems.

Step :– 1 First let’s create a DataRaptor Transform. /*! elementor – v3.18.0 – 20-12-2023 */ .elementor-widget-image{text-align:center}.elementor-widget-image a{display:inline-block}.elementor-widget-image a img[src$=”.svg”]{width:48px}.elementor-widget-image img{vertical-align:middle;display:inline-block} Step :– 2  Now we go to the Transform Tab and click on the Plus(+) icon.                  then go to the Output JSON Path and type MoviesNames And type MovieNames in the Input JSON                     Path Step :– 3  Now we can formula by going to the Formula Tab. type Movies:Name in the formula and type MovieNames in the output result  path. Step :– 4  Click on Preview Tab and write down in input json. {     “Movies”: [         {             “Name”: “ABC”,             “Genre”: “Action”         },         {             “Name”: “ABC2”,             “Genre”: “Comedy”         },         {             “Name”: “ABC3”,             “Genre”: “Action”         }     ] } Click Execute Button: Review Output Results: After clicking the “Execute” button, review the output results. Verify that the displayed results align with your expectations and correspond to the input JSON data you provided.

How to Make Transform DataRaptor in ListofObject to ListofItems. Read More »

How to use Email Action in omniscript.(Vlocity)

In this post we will learn how to use Email Action in omniscript,and how to send email through omniscript. Email Action :-Email Action in omniscript is used to send Email .                    omniscript Email Action uses the Salesforce Email API to send an email.                  let us take an example to explain it. Example:- Here we  create an omniscript  and make it like that when we extract or edit it will send an email to the user . Step :- 1  Create an omniscript and Drag a text field ,also extract dataraptor , and an Email Action in it.                  Create a dataraptor and open it.                  Paste the Dragged Field Name in the dataraptor’s data source , it will send to the dataraptor search the record . Step:–2   Open the dataraptor and map all the fields what we want .                   Here we get data from opportunity.                ” Opportu:CreatedBy.Email” it will get the user Email ,so we send Email to the user.   Step :–  3   Map the email Field in omniscript .                      In the “To Email Address List” fill the node where the Email is coming in omniscript.                      In %% Sign we access the Email” %CreatedbyEmail%“.         Email Address where to send filled above and the Subject and Body of the Email we can fill what we want to send .         Here in Email body we use “%CreatedbyName%” it recieve the user name from dataraptor . Step :- 4   Activate the omniscript and preview it .                     It will send the Email to the user .

How to use Email Action in omniscript.(Vlocity) Read More »

How to create Custom Actions Button. (Salesforce CPQ)

In this Blogs we learn how to create Custom Actions button in CPQ. Step 1: Click on Salesforce CPQ App Launcher and search Custom Action after that click on Custom Action. Step 2: Click the new button to get a dialogue box. Step 3: Fill all fields like the example given below and save it. /*! elementor – v3.18.0 – 20-12-2023 */ .elementor-widget-image{text-align:center}.elementor-widget-image a{display:inline-block}.elementor-widget-image a img[src$=”.svg”]{width:48px}.elementor-widget-image img{vertical-align:middle;display:inline-block} Step 4: After that click on the related tab and click on the search filter Step 5: Click on the new button and fill given below field like the given example  Step 6: Save it. Your button gets ready.  I hope it may help you to create a Custom Action button in CPQ.

How to create Custom Actions Button. (Salesforce CPQ) Read More »

How to Make Transform DataRaptor Data Conversion Yes,No to Boolean.

In this blog How to use Transform DataRaptor in Data Conversion Yes, No Boolean. First let’s create a DataRaptor Transform. /*! elementor – v3.18.0 – 20-12-2023 */ .elementor-widget-image{text-align:center}.elementor-widget-image a{display:inline-block}.elementor-widget-image a img[src$=”.svg”]{width:48px}.elementor-widget-image img{vertical-align:middle;display:inline-block} Now we go to the Transform Tab and click on the Plus(+) icon. then go to the Output JSON Path and type Movies:Superhit.(to fetch the fields of an object, use : ). And type Movies:Superhit in the Input JSON Path. we click on Add New Key of Transform Map Value.Then in Key we give the input value (Yes) and in Value we give the Return value(True). Similarly we add more fields of the Path. Click on Preview Tab and write down in input json. {  “Movies”: [    {      “Name”: “ABC”,      “Genre”: “Action”,      “Superhit”: “No”  },  {“Name”: “ABC2”, “Genre”: “Comedy”,     “Superhit”: “Yes, {“Name”: “ABC3”, “Genre”: “Action”, “Superhit”: “Yes}]} then CLICK Execute Buttom. So, Output results according to my input Json)

How to Make Transform DataRaptor Data Conversion Yes,No to Boolean. Read More »

How to Extract Dataraptor With Input in Omniscript.

–In this post we will create a omniscript and make like that ,when we enter a name in a omniscript’s field ,it will fetch the                        Account data from database . Step:-1 Create a omniscript and drag a dataraptor ,and text field in it.               Create a dataraptor .                Click on dataraptor and fill textfield name in” DataSource “that will send the entered data to the dataraptor.              “Filter value” use to rename the “data source” . Step:- 2  Open the dataraptor that we have created .                 Map the filter value in the dataraptor .                Map all the fields that we want to get.   Mapping of fields that we want to get is in the below image. Step :-3  Preview the omniscript to see the result. Here we get the data when we starts typing the name .

How to Extract Dataraptor With Input in Omniscript. Read More »

Scroll to Top