All questions related to the quote process, from creating Playbooks and Products to submitting the quote.
Recently active
we can use max function and round function togeher in the same fourmula ?
Hi, In Salesforce we use standard country picklist values. However when I sync it to DH it shows the country code. Is there a quick way to solve this without mapping each country code to a country name?
Hey everyone, I’m wondering if setting an Auto-Join rule for the Dealroom will also automatically share the proposal with the person who auto-joined?
Hi Team, is it possible to sync back the text when you click Sign Externally to the CRM?
When we change products in DH it generates a new pricebook in Salesforce. Do we have the option to update the existing pricebook instead of adding a new one? Or what is the best practice on this?
When using discount tables for tiered based pricing, sometimes clients are asking to show the price of each tier in the pricing tables of the output document.I can think of two below approaches to this:Only when using advanced product filter in manual selection, we could create the tiered prices inside product attributes and then refer to them in the proposal attributes to display in the pricing tables Maintaining all of the tiered based pricing in the playbook and referring to these values in the proposal attributes (not the best for maintenance)Wondering if there’s a better approach to this that I haven’t though of. Please share your ideas.
Consumption-based deals are pricing agreements where customers are billed based on actual usage, rather than a fixed recurring subscription. These models are common in industries such as cloud services, marketing platforms, and telecommunications, where usage patterns can vary greatly over time.For example, Logz.io offers a consumption plan where customers are charged based on their use of specific products. Although only selected products are actively sold and billed, it's still essential to sync rate card information for all products—whether selected or not. How to Set Up Assignment Rules for Consumption PlansTo correctly reflect both selected and non-selected products in the CRM, define two assignment rules:Rate Card Assignment Rule (for unselected products):Ensures that all consumption products are synced to the CRM, even if they were not chosen.This allows for rate visibility without charging the customer. Product Assignment Rule (for selected products):Applies when a product is
In certain pricing or contract scenarios, it's necessary to restrict selected start or end dates so they always align with the first day of a calendar month. This approach ensures consistency across billing cycles and simplifies downstream logic tied to monthly intervals. The following method explains how to configure this behavior using calculated date logic. How to Set Up the Base Date and User Input Begin by creating two date questions:One date question that acts as the base date. This should always be a fixed value—such as January 1, 2025—and represents the anchor point for all date calculations.Another date question that is visible to the user, allowing them to select any date. Once a user selects a date, extract the month and year from that input. How to Calculate the Time Difference Next, determine the difference in time between the base date and the selected date. Since the base year is fixed, you can simplify your logic by hardcoding it when calculating the year difference. U
Some customers work with Distributors who require different SKU codes depending on specific product configurations. These variations typically relate to factors such as package type or environment. For example, in Keepit, the original SKU may change based on the selected package type. In AvePoint, it may depend on the environment.To handle these scenarios effectively, you can dynamically modify or extend the SKU using proposal attributes that concatenate additional data to the base SKU. How to Configure SKU Extensions First, create playbook questions that return the relevant extension values based on user selections. For instance:A question for package type that outputs a specific string (e.g., -ADV or -STD).A similar question for duration if your SKU structure varies based on contract length.These questions should return values that can be appended to the base SKU. How to Build the Final SKU Using a Proposal Attribute In the proposal attribute, use a concatenation formula to combine t
In certain business scenarios, clients may need to extract a value only from the last system opened in a Multi-System configuration. Since the number of systems opened is not known in advance, hard-coding logic for each instance is not feasible.This method allows you to dynamically identify and fetch the value from the last opened system. How to Create a Counter for System TrackingAdd a numeric question inside the Multi-System group. Set its default value to 1. This question will act as a system counter and will be used in an aggregate function (SUM) to determine the total number of systems opened at runtime.How to Use a Proposal Attribute to Identify the Last System To isolate the value from the last system, use conditional logic with the FLOOR() function. Example scenario:Assume the following values from each system:System 1: 100 System 2: 200 System 3: 300Let N be the total number of systems (i.e., the result of the counter using SUM()).Apply the formula:Value * FLOOR(SystemIndex /
Exclude filters are a powerful feature used to dynamically remove or restrict options based on previous user input or existing customer data. Below are three common use cases that show how to implement exclude filters effectively in subscription flows, inclusion logic, and product selection. How to Remove Items from a Text List Based on Existing SubscriptionsUse Case 1: Subscriptions This scenario involves preventing users from selecting a product they already own in a new subscription quote. For example, if a client already has Product A from a previous subscription, it should not appear in the current selection list. InstructionsCreate a dedicated question group for exclude logic. For each product in your picklist, create a text answer question. Configure conditional answers based on whether the product exists in the client's current subscription. Then, create a text list question that includes all possible products. Add the previously created text answers as exclude filters on t
In some configurations, it's necessary to identify the latest date entered across multiple entries in a repeatable question group. This is useful in workflows where you need to calculate end dates, trigger validations, or control the visibility of sections based on the most recent event or timeline.The method below outlines how to calculate the maximum date using standard functions and formula questions. How to Configure the Max Date Logic In a regular question group, create a base date question. This date will serve as the reference point for all calculations. In the repeatable question group, add a formula question that calculates the number of days between the base date and the selected date in that row. Back in the regular question group, create a formula question using the MAX_IN_GROUP() function to extract the maximum number of days from all repeatable entries. Finally, add a formula date question that adds the maximum number of days to the base date, effectively reconstructin
One common use case when working with multiple repeatable question groups is when you want a SKU in one group to pull a value, such as quantity, from a specific matching row in another repeatable group. This configuration allows you to tie product selections directly to user-defined attributes or inputs. How to Reference a Specific Row from Another Group To pull a value (e.g., quantity) from a matching row in another repeatable group, the assignment rule must include a comparison that matches a field in both groups. This ensures the value is only pulled when the context aligns—such as matching sites or environments. Example Scenario Let’s assume the following:In Question Group 1, the user defines a list of sites with quantities for each.Question_group_1Site_List Quantity Site 1 5 Site 2 3 In Question Group 2, the user selects products, and you want a SKU to pull its quantity from the matching site defined in Question Group 1.Question_group_2Site_List SKU Site 1 Product A
In some use cases, clients want to sync the start date of a selected period from a Multi-System question group directly to an opportunity field in the CRM. For this scenario, we’ll assume there can be a maximum of three periods, and the user selects which period to sync. How to Capture the Selected Period’s Start Date To implement this logic:Set up a global question outside the Multi-System group. This will determine which period (e.g., Period 1, Period 2, or Period 3) should be used for syncing. Inside the Multi-System group, ensure you have a Start Date question for each row (period).
Scenario AtlasIQ, a SaaS company offering AI infrastructure tools, often builds proposals with multiple pricing packages—such as “Starter,” “Growth,” and “Enterprise”—using DealHub’s Multi-System functionality. While this gives customers flexibility, it created operational friction. Buyers would verbally choose one offer, but sales reps then had to manually remove the unselected systems and products from Salesforce, risking errors and slowing down approvals.To streamline this, AtlasIQ configured a dropdown menu in the DealRoom that lets buyers select the offer they want. Behind the scenes, DealHub converts that selection into a numeric value, which is used to flag which quote system to keep. All other systems are tagged for deletion via a synced proposal attribute (Offer__c) and a custom Salesforce field (Delete__c).Once the buyer submits their choice, Salesforce automatically deletes the non-selected quote lines using DealHub’s Quote Line Deletion package. The final CRM record reflect
ScenarioOptiCloud, a mid-size SaaS company offering customizable cloud analytics, handles complex proposals with multiple SKUs, implementation services, and region-specific legal clauses. Their Sales Ops team was struggling with:Inconsistent formatting in output documents Manual insertion of legal clauses and billing tables Lack of dynamic fields (e.g., product-specific T&Cs, pricing tables, renewal dates) Inability to quickly preview or adjust order forms on a per-client basisTo address this, they standardized on DealHub’s Document and Sub-Document Templates functionality to automate and professionalize document generation.Their most important need right now is to create a custom table in their output document with custom borders. They want to utilize DealHub’s HTML capabilities to achieve this.They also want to be able to add horizontal lines across their document. Solution Step 1: Adding a basic table in Output DocumentsClick on Add Element, then select Text SectionInsert a tabl
Scenario DeployLogic, a SaaS provider offering modular implementation and onboarding services, often sells tailored solution packages to enterprise clients. These packages include multiple components like:Integration Setup Data Migration Training Programs Custom Feature DevelopmentEach of these services has its own start and end date, depending on resource availability, client readiness, and deployment sequencing. The RequirementsWhen a DealHub proposal includes multiple services within a repeatable table, the client success team wants to:Display a single, accurate project timeline summarizing all selected services. Show the earliest start date and latest end date for the entire engagement. Avoid manual errors or the need for reps to calculate summary dates outside the system.This summary data is crucial for the prospect and for setting expectations internally for resource planning.Overview:Using the method in the document, DeployLogic configures DealHub to automatically surface:The Fi
Scenario TechNest, a mid-market SaaS provider of enterprise collaboration tools, operates a multi-tier sales model:Sales Reps can offer limited discounts. Managers and VPs can approve deeper discounts for strategic accounts.However, rather than approving based on a discount percentage, TechNest sets absolute floor prices per SKU. For example, while the list price for the “Collaboration Suite Pro” is $100/user/month, Sales Reps must not go below $80, and Managers must not approve less than $70.DealHub’s standard approval workflows rely on discount percentage thresholds—not specific price points.To meet this requirement the team implemented a flexible floor-price-based approval system using DealHub’s product and proposal attributes, assignment rules, and general workflows, outlined below. Solution PRODUCT ATTRIBUTEIn Products, click on Actions, then click on Settings, then select the “Product Attributes" tab. Click Add Attribute and change Type to “Number”Label this attribute “Floor Pri
Scenario InsightFlow, a SaaS company, provides a flexible analytics platform with modular features. Customers can choose from a list of add-ons such as:Data Enrichment Predictive Modeling Custom DashboardsEach module adds value, but InsightFlow wants to incentivize volume purchasing through tiered pricing:The first module purchased is priced at a premium. The second module is discounted. Additional modules are priced even lower.This approach increases deal sizes while maintaining perceived value for the primary feature.Traditional CPQ systems price each product independently. However, InsightFlow wants pricing to depend on the order of selection, not the product itself. Regardless of which modules are chosen:First = $50 Second = $30 Third = $15This dynamic pricing must work within the constraints of DealHub’s CPQ engine without requiring hardcoding for every combination. Solution Playbook Configuration (Set up for a total of 3 products):Add a question to the playbook that is a Text Li
Scenario A cloud communications provider sells products such as API calls, voice minutes, and message transactions. Buyers can either:Commit to purchasing a minimum volume upfront, or Lock in future rates through a rate card, without immediate purchase.Sales needs a way to configure deals that reflect both committed usage (which is billable now) and rate card agreements (which are informational for future usage), all in the same proposal and order form.The goal is to set up a pricing and proposal structure in DealHub that:Differentiates between committed usage (charged now) and rate card usage (charged later). Displays tiered rates and volumes for both types. Automatically updates the order form with correct product details, quantities, and pricing. Solution Playbook configurationUsing a repeatable table in the playbook is a great tool to create custom tiers or prices for usage products. Suggested questions: Is this a commit or rate card product? This question allows you to know if yo
Scenario GlobaTech, a fast-growing SaaS provider for supply chain automation, operates globally with sales teams and customers across North America, Europe, and APAC. Pricing is maintained in USD, but clients often request quotes in their local currencies (EUR, GBP, AUD, etc.).Previously, reps manually adjusted currency conversions or referenced internal spreadsheets. This created:Inconsistent exchange rates across quotes Manual errors in pricing Discrepancies between DealHub proposals and Salesforce CRM recordsTo solve this, GlobaTech leverages Salesforce’s Manage Currencies feature and integrates it directly with DealHub to automate currency conversion in real-time using the exchange rates stored in Salesforce. Solution OverviewUsing DealHub’s external object integration capabilities, GlobaTech implemented a seamless way to:Automatically pull the customer’s currency from the Salesforce Opportunity. Query Salesforce’s CurrencyType object to fetch the correct exchange rate. Apply that
Already have an account? Login
No account yet? Create an account
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.