Quoting in spreadsheets outside the CRM
Discounting nobody can explain after the fact
Configured products needing engineering to price
Billing that does not match what was sold
Quoting is where your pricing policy either exists or it does not.
Revenue Cloud and CPQ: product and price books, bundles and configuration, approval thresholds, contracts, renewals and mid-term amendments.
Pricing lives in one place, approvals in another, and what was actually agreed sits in an email thread. The gap between them is where margin quietly goes — the discount nobody signed off, the renewal priced off last year’s sheet, the quote rebuilt from scratch because finding the old one took longer than starting again.
So we start with the price book and the rules that genuinely govern it, then put approvals on the record instead of in somebody’s inbox. The test we use is simple: can a new rep produce a correct quote in their first week without asking a colleague what the real price is.
Where it breaks
Maintained by one person, versioned by filename, and out of date on somebody's desktop the moment it changes.
No enforced thresholds, so what a customer pays depends partly on which rep they reached and how close it was to quarter end.
Untracked, unauditable, and slow enough that people route around them when the deal is urgent.
Every quote for anything non-standard waits on someone technical, while a simpler competitor quotes the same day.
No structured record of what was sold, so each renewal is reconstructed and each one is a chance to lose something.
What was quoted, what was delivered and what was invoiced diverge, and the reconciliation lands on finance.
What we build
Nine parts of quote to cash, from modeling what you sell to getting the document signed.
The foundation under every quoting build: product families, a categorization tree that someone other than us can extend, and separate price books for the commercial scenarios that actually differ.
Parent products with option groups, required and optional components, quantity bounds, and attributes that decide what a rep can even select. One recent rebuild carried several hundred bundle parents and reconciled every one against production.
Rules that stop an invalid combination before it is saved, and dependency logic that changes what renders based on what was already chosen, so the guardrail lives in the system rather than in a rep’s memory.
Discount schedules and tiers, discretionary discounting that recalculates as it is applied, and partner pricing where an account-level position crosses a product attribute, with a defined rule for how rep discounts stack on top.
Cost, markup and resulting margin shown to the rep while they are discounting, with labor and service time included, so the conversation about price happens before the quote leaves rather than after the job is costed.
Routing fired by amount, margin floor, discount percentage or pricing factor, with the record locked on submission, delegated approvers, and notification that tells an approver what they are approving.
Several versions against one opportunity with a single synced version rolling to the forecast, inline line editing with live totals, and each version keeping the document it produced.
Branded templates keyed to the brand or the engagement type, generated to PDF, stored against the record and sent for signature, built natively or with a document tool where the templating demands it.
Products, attributes and pricing pulled in on a schedule with ERP-owned fields locked read-only, and the outcome pushed back as a job, an order, a customer or a pricing condition, with the quote owner told when a push fails.
Beyond phase one
Each one came out of delivery work rather than a product roadmap. In most cases the client did not know to ask for it.
Most quoting problems are version problems. Once a document is generated it should be locked, numbered and traceable, so the number a customer is holding is the number your system believes it sent.
Routing a discount to a manager is easy. Routing it with the margin impact already calculated, and with the last three approvals on that account attached, is what turns an approval queue into a control.
Renewals assembled by hand are renewals that get missed, mispriced or quietly discounted. Generating them from the active contract, early enough to be a conversation rather than a scramble, is usually a phase two idea that should have been phase one.
When a customer says they always get fifteen percent, somebody should be able to check in ten seconds. Keeping discount decisions on the record changes how the next negotiation goes.
Customers add seats, change sites and drop products mid contract. If the system can only handle a clean annual cycle, somebody is doing arithmetic in a spreadsheet and the revenue number is a guess.
Integrations
Revenue Cloud is worth doing when the whole chain connects. These are the categories that most often need joining.
Invoices, revenue and payment posting without a second entry.
Agreements executed and stored against the record.
Where the number starts, for businesses that price from measurement.
One source for specifications, options and rules.
Collection handled inside the process rather than beside it.
Margin visible by product, by rep and by customer.
Salesforce CPQ · Service Cloud · Community Cloud
Sales Cloud · Field Service · Estimating
If the two do not describe the same thing, the gap between them is the project. Finding it takes about twenty minutes and the answer is usually sitting in the discount.