{"id":348481,"date":"2026-08-20T12:39:51","date_gmt":"2026-08-20T12:39:51","guid":{"rendered":"https:\/\/experlogix.com\/?p=348481"},"modified":"2026-10-20T17:31:26","modified_gmt":"2026-10-20T17:31:26","slug":"quote-products-services-subscriptions-one-deal","status":"publish","type":"post","link":"https:\/\/experlogix.com\/nl\/quote-products-services-subscriptions-one-deal\/","title":{"rendered":"Quoting Products, Services and Subscriptions in One Deal: A Salesforce CPQ Alternative"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.9&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_row _builder_version=&#8221;4.27.9&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.9&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_code _builder_version=&#8221;4.27.9&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;]<\/p>\n<style><!-- [et_pb_line_break_holder] -->.xpl-article{container-type:inline-size;--xpl-navy:#0C214C;--xpl-rust:#D94923;--xpl-soft:#F8FBFF;--xpl-ice:#F3F8FD;--xpl-border:#DCE6F2;color:#0C214C;font-size:1rem;line-height:1.68;}<!-- [et_pb_line_break_holder] -->.xpl-article *,.xpl-article *::before,.xpl-article *::after{box-sizing:border-box;}<!-- [et_pb_line_break_holder] -->.xpl-article p{font-size:1rem;line-height:1.68;color:#0C214C;margin:0 0 1.05rem;}<!-- [et_pb_line_break_holder] -->.xpl-article a{color:#0C214C;font-weight:600;text-decoration:underline;text-decoration-color:#9EB9DD;text-decoration-thickness:1px;text-underline-offset:3px;}<!-- [et_pb_line_break_holder] -->.xpl-article a:hover{text-decoration-color:#0C214C;}<!-- [et_pb_line_break_holder] -->.xpl-article a:focus-visible{outline:3px solid #D94923;outline-offset:3px;border-radius:3px;}<!-- [et_pb_line_break_holder] -->.xpl-article h2{color:#0C214C;font-size:1.72rem;line-height:1.24;margin:0 0 1rem;padding:0;border:0!important;text-decoration:none!important;box-shadow:none!important;}<!-- [et_pb_line_break_holder] -->.xpl-article h3{color:#0C214C;font-size:1.2rem;line-height:1.34;margin:0 0 .55rem;padding:0;border:0;text-decoration:none;}<!-- [et_pb_line_break_holder] -->.xpl-article ul,.xpl-article ol{margin:.8rem 0 1.2rem;padding-left:1.25rem;}<!-- [et_pb_line_break_holder] -->.xpl-article li{color:#0C214C;margin:0 0 .5rem;}<!-- [et_pb_line_break_holder] -->.xpl-article li::marker{color:#5879A7;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-intro{margin:0 0 1.5rem;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-intro p:first-child{font-size:1.08rem;line-height:1.65;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-section{margin:2.35rem 0;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-section> :last-child{margin-bottom:0;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-section--soft{background:#F3F8FD;border-radius:14px;padding:1.45rem 1.55rem;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-section--soft h2{margin-top:0;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-section--bottom{background:#F7FAFE;border-radius:14px;padding:1.5rem 1.6rem;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-section--bottom h2{margin-top:0;}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* Compact TL;DR: soft background, no orange rail, one marker system. *\/<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-tldr{background:#F3F8FD;border:1px solid #DCE6F2;border-radius:12px;padding:1rem;margin:1.45rem 0 2rem;box-shadow:none;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-tldr summary{cursor:pointer;list-style:none;font-size:1rem;line-height:1.25;font-weight:700;color:#0C214C;display:flex;align-items:center;justify-content:space-between;gap:1rem;margin:0;padding:0;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-tldr summary::-webkit-details-marker{display:none;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-tldr summary::after{content:\"+\";color:#0C214C;font-size:1.15rem;line-height:1;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-tldr[open] summary::after{content:\"\u2212\";}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-tldr[open] summary{margin-bottom:.7rem;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-tldr__body{padding:0;margin:0;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-tldr ul{list-style:none!important;padding:0!important;margin:0!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-tldr li{list-style:none!important;position:relative;padding:0 0 0 1rem!important;margin:0 0 .48rem!important;font-size:.9rem!important;line-height:1.48!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-tldr li::marker{content:\"\";}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-tldr li::before{content:\"\";position:absolute;left:0;top:.66em;width:.38rem;height:.38rem;background:#7EA2D3;border-radius:50%;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-tldr li:last-child{margin-bottom:0!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-tldr li p,.xpl-article .xpl-tldr li a,.xpl-article .xpl-tldr li strong{font-size:.9rem!important;line-height:1.48!important;}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* Editorial grids: varied soft surfaces, no orange rails, no hard shadows. *\/<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-card-grid,.xpl-article .xpl-step-grid{list-style:none!important;padding:0!important;margin:1.15rem 0 1.35rem;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.9rem;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-card-grid>li,.xpl-article .xpl-step-grid>li{list-style:none!important;margin:0!important;background:#F3F8FD;border:1px solid #DCE6F2;border-radius:12px;padding:1rem 1.08rem;box-shadow:none!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-card-grid>li:nth-child(even){background:#FAFCFF;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-section--soft .xpl-card-grid>li,.xpl-article .xpl-section--soft .xpl-step-grid>li,.xpl-article .xpl-section--bottom .xpl-card-grid>li{background:#fff;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-section--soft .xpl-card-grid>li:nth-child(even),.xpl-article .xpl-section--bottom .xpl-card-grid>li:nth-child(even){background:#F9FBFE;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-card-grid>li::marker,.xpl-article .xpl-step-grid>li::marker{content:\"\";}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-card-grid--stack{grid-template-columns:1fr;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-card-grid>li:last-child:nth-child(odd):not(:first-child){grid-column:1\/-1;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-step-grid{counter-reset:xplstep;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-step-grid>li{counter-increment:xplstep;position:relative;padding-left:3.2rem;min-height:4.1rem;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-step-grid>li::before{content:counter(xplstep);position:absolute;left:1rem;top:1rem;width:1.65rem;height:1.65rem;border-radius:7px;background:#0C214C;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.84rem;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-list-box{list-style:none!important;padding:1rem 1.1rem!important;margin:1rem 0 1.3rem;background:#F3F8FD;border:1px solid #DCE6F2;border-radius:12px;box-shadow:none!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-list-box>li{list-style:none!important;position:relative;margin:0!important;padding:.58rem 0 .58rem 1rem;border-bottom:1px solid #DCE6F2;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-list-box>li:last-child{border-bottom:0;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-list-box>li::before{content:\"\";position:absolute;left:0;top:1.15rem;width:5px;height:5px;border-radius:50%;background:#5879A7;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-list-box>li::marker{content:\"\";}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->.xpl-article .xpl-subgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin:1.15rem 0 1.25rem;align-items:stretch;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-subcard{background:#F3F8FD;border:1px solid #DCE6F2;border-radius:12px;padding:1.08rem 1.15rem;box-shadow:none!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-subcard:nth-child(even){background:#fff;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-section--soft .xpl-subcard{background:#fff;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-section--soft .xpl-subcard:nth-child(even){background:#F9FBFE;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-subcard:last-child:nth-child(odd):not(:first-child){grid-column:1\/-1;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-subcard h3{margin:0 0 .55rem!important;padding:0!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-subcard> :last-child{margin-bottom:0;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-subsection{background:#F3F8FD;border:1px solid #DCE6F2;border-radius:12px;padding:1.05rem 1.15rem;margin:1.15rem 0;box-shadow:none!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-subsection h3{margin-top:0!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-callout{background:#F8FBFF;border:1px solid #DCE6F2;border-radius:12px;padding:1rem 1.15rem;margin:1.15rem 0;box-shadow:none!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-callout> :last-child{margin-bottom:0;}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* A02 approved decision-map motion scene. *\/<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-motion-scene{max-width:760px;margin:0 auto;background:#fff;border:1px solid #DCE6F2;border-radius:16px;padding:1.1rem;overflow:hidden;box-shadow:none!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-motion-kicker{display:block;font-size:.76rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;margin-bottom:.25rem;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-motion-title{display:block;font-size:1.12rem;font-weight:700;line-height:1.3;margin-bottom:.75rem;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-motion-start{display:flex;align-items:center;justify-content:center;min-height:46px;padding:.6rem 1rem;border-radius:10px;background:#0C214C;color:#fff!important;-webkit-text-fill-color:#fff!important;font-weight:700;margin-bottom:.8rem;animation:xplStartPulse 7s ease-in-out infinite;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-motion-track{display:grid;gap:.65rem;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-motion-path{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:.7rem;padding:.7rem .85rem;border:1px solid #DCE6F2;border-radius:10px;background:#F3F8FD;opacity:.38;transform:translateY(4px);animation:xplPathReveal 7s ease-in-out infinite;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-motion-path:nth-child(2){animation-delay:1.1s;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-motion-path:nth-child(3){animation-delay:2.2s;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-motion-path--accent{border-color:#C9DAEF;background:#F8FBFF;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-motion-num{display:inline-flex;align-items:center;justify-content:center;width:1.85rem;height:1.85rem;border-radius:8px;background:#0C214C;color:#fff!important;-webkit-text-fill-color:#fff!important;font-weight:700;font-size:.86rem;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-motion-path--accent .xpl-motion-num{background:#5879A7;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-motion-note{font-size:.9rem;line-height:1.45;margin:.65rem 0 0;}<!-- [et_pb_line_break_holder] -->@keyframes xplPathReveal{0%,12%,100%{opacity:.38;transform:translateY(4px)}22%,58%{opacity:1;transform:translateY(0)}72%{opacity:.55;transform:translateY(0)}}<!-- [et_pb_line_break_holder] -->@keyframes xplStartPulse{0%,100%{transform:scale(1)}12%{transform:scale(1.01)}24%{transform:scale(1)}}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* Illustration and motion placements. *\/<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-illustration{width:100%;max-width:760px;margin:2rem auto;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-illustration img{display:block;width:100%;height:auto;border-radius:14px;border:1px solid #DCE6F2;box-shadow:none!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-animation-wrap{width:100%;max-width:800px;margin:2rem auto;overflow:hidden;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-animation-wrap>div{width:100%!important;max-width:760px!important;margin-left:auto!important;margin-right:auto!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-animation-wrap svg{max-width:100%;height:auto;}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* FAQ: calm contained section, white questions, no orange rails. *\/<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-faq-section{margin:2.45rem 0 1.8rem;background:#F3F8FD;border-radius:14px;padding:1.35rem 1.4rem;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-faq-section h2{margin-bottom:.8rem;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-faq-list{display:grid;grid-template-columns:1fr;gap:.65rem;margin-top:0;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-faq-item{border:1px solid #DCE6F2;border-radius:10px;background:#fff;padding:0;overflow:hidden;box-shadow:none!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-faq-item:nth-child(even){background:#FAFCFF;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-faq-item summary{cursor:pointer;list-style:none;display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:.92rem 1rem;font-weight:700;font-size:1rem;line-height:1.4;color:#0C214C;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-faq-item summary::-webkit-details-marker{display:none;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-faq-item summary::after{content:\"+\";flex:0 0 auto;color:#5879A7;font-size:1.15rem;line-height:1.2;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-faq-item[open] summary::after{content:\"\u2212\";}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-faq-answer{padding:0 1rem .95rem;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-faq-answer> :last-child{margin-bottom:0;}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* Bottom CTA: pale blue\/white, no orange underline, no shadows. *\/<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-cta{position:relative;overflow:hidden;isolation:isolate;background:linear-gradient(135deg,#FFFFFF 0%,#F3F8FD 100%);border:1px solid #DCE6F2;border-radius:16px;padding:1.65rem 1.75rem;margin:2.5rem 0 0;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1.2rem 1.8rem;align-items:center;text-align:left;box-shadow:none!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-cta::after{content:\"\";position:absolute;width:210px;height:210px;border-radius:50%;right:-110px;bottom:-135px;background:rgba(126,162,211,.10);z-index:0;pointer-events:none;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-cta>*{position:relative;z-index:1;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-cta-heading{display:block!important;color:#0C214C!important;-webkit-text-fill-color:#0C214C!important;font-size:1.48rem!important;line-height:1.25!important;font-weight:700!important;margin:0 0 .48rem!important;text-align:left!important;border:0!important;text-decoration:none!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-cta p{color:#0C214C!important;-webkit-text-fill-color:#0C214C!important;margin:0!important;max-width:720px!important;text-align:left!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-cta a.xpl-btn,.xpl-article .xpl-cta a.xpl-btn:link,.xpl-article .xpl-cta a.xpl-btn:visited{display:inline-flex;align-items:center;justify-content:center;background:#0C214C!important;color:#fff!important;-webkit-text-fill-color:#fff!important;text-decoration:none!important;font-weight:700;font-size:1rem;line-height:1.4;padding:.35rem 1.8rem!important;border-radius:50px!important;border:2px solid #0C214C!important;box-shadow:none!important;transform:none!important;white-space:nowrap;transition:background-color .2s ease,border-color .2s ease;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-cta a.xpl-btn:hover,.xpl-article .xpl-cta a.xpl-btn:focus,.xpl-article .xpl-cta a.xpl-btn:active{background:#18386F!important;border-color:#18386F!important;color:#fff!important;-webkit-text-fill-color:#fff!important;box-shadow:none!important;transform:none!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-cta a.xpl-btn:focus-visible{outline:3px solid #7EA2D3;outline-offset:3px;}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->@media(max-width:800px){<!-- [et_pb_line_break_holder] --> .xpl-article .xpl-card-grid,.xpl-article .xpl-step-grid,.xpl-article .xpl-subgrid{grid-template-columns:1fr;}<!-- [et_pb_line_break_holder] --> .xpl-article .xpl-card-grid>li:last-child:nth-child(odd):not(:first-child),.xpl-article .xpl-subcard:last-child:nth-child(odd):not(:first-child){grid-column:auto;}<!-- [et_pb_line_break_holder] --> .xpl-article .xpl-cta{grid-template-columns:1fr;align-items:start;}<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media(max-width:600px){<!-- [et_pb_line_break_holder] --> .xpl-article h2{font-size:1.45rem;}<!-- [et_pb_line_break_holder] --> .xpl-article h3{font-size:1.12rem;}<!-- [et_pb_line_break_holder] --> .xpl-article .xpl-section--soft,.xpl-article .xpl-section--bottom{padding:1.15rem;}<!-- [et_pb_line_break_holder] --> .xpl-article .xpl-faq-section{padding:1.1rem;}<!-- [et_pb_line_break_holder] --> .xpl-article .xpl-cta{padding:1.35rem 1.2rem;}<!-- [et_pb_line_break_holder] --> .xpl-article .xpl-illustration,.xpl-article .xpl-animation-wrap{max-width:100%;margin:1.55rem auto;}<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media(prefers-reduced-motion:reduce){.xpl-article *{transition:none!important;animation-duration:.01ms!important;animation-iteration-count:1!important;}}<!-- [et_pb_line_break_holder] --><\/style>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<article class=\"xpl-article xpl-article--cpq xpl-redesign-v9\" data-article-id=\"A11\"><!-- [et_pb_line_break_holder] --><\/p>\n<div class=\"xpl-intro\"><pee>Picture one opportunity that includes a configured machine, installation and commissioning labor, a three-year service agreement, and a connected-monitoring subscription with usage tiers. Your quoting tool has to price all of it in one governed document, and that is where many <a href=\"https:\/\/experlogix.com\/salesforce-cpq\/\">Salesforce CPQ<\/a> configurations start to strain. This article explains why quoting products and services together is hard, what good hybrid quoting looks like, and how to evaluate a Salesforce CPQ alternative built for mixed revenue.<\/pee><\/div>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<details class=\"xpl-tldr\" open>\n<summary>TL;DR<\/summary>\n<div class=\"xpl-tldr__body\">\n<ul><!-- [et_pb_line_break_holder] --><\/p>\n<li>Salesforce stopped selling Salesforce CPQ to new customers in March 2025. This is end of sale, not end of life. Existing customers can keep using it, renew, add users, and receive support, and Salesforce has not announced an end-of-life date.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Quoting products and services in one deal is where many Salesforce CPQ configurations show strain. One-time equipment, labor, projects, subscriptions, and usage charges each carry different pricing math, term logic, and approval thresholds.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>The usual workarounds are separate quotes, spreadsheets for services scoping, and Quote Calculator Plugin (QCP) customizations that only a developer can maintain.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>You have three paths: stay on Salesforce CPQ, reimplement on Revenue Cloud Advanced (RCA), or keep Salesforce CRM as the system of record and replace the quoting layer. Experlogix CPQ supports the third path. One-time equipment, recurring subscriptions, usage-based fees, and multi-year services and support can sit on a single quote, each with its own tiers, contract terms, and regional rules applied automatically.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Bottom line: test your hardest real hybrid deal, not a demo catalog. If one quote can&#8217;t hold every revenue stream with visible margin, the problem is architectural, not a training issue.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/ul>\n<\/div>\n<\/details>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<section class=\"xpl-section\">\n<h2>Why Quoting Products and Services Together Breaks Quoting Tools<\/h2>\n<pee>Mixed revenue is hard because each revenue stream follows different rules. Salesforce CPQ (configure, price, quote) was designed around a <a href=\"https:\/\/experlogix.com\/salesforce-cpq-subscription-first-hybrid-revenue\/\">subscription-first model<\/a>, and that model does not stretch evenly across hardware, labor, and projects.<\/pee><pee>Here is that representative industrial deal, line by line:<\/pee>\n<ul class=\"xpl-card-grid\"><!-- [et_pb_line_break_holder] --><\/p>\n<li>A configured machine with options, priced one time and built to order<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Installation and commissioning labor, scoped in hours and roles<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>A three-year service and support agreement billed annually<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>A connected-monitoring subscription with a usage tier above a threshold<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Spare parts, priced from a regional price list<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/ul>\n<pee>Each line needs different math:<\/pee>\n<ul class=\"xpl-card-grid\"><!-- [et_pb_line_break_holder] --><\/p>\n<li>The machine needs configuration rules.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>The labor needs a scoping model and a rate card.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>The service agreement needs term and start-date logic.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>The subscription needs recurring revenue treatment, proration, and co-terming.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>The usage component needs tiers.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/ul>\n<pee>When one engine handles only part of that well, the rest moves into spreadsheets, manual line items, or custom code. That is where <a href=\"https:\/\/experlogix.com\/salesforce-cpq-quote-to-contract-drift\/\">quote-to-contract drift<\/a> begins, because the number the customer signs no longer matches what any system calculated.<\/pee><\/section>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<section class=\"xpl-section\">\n<h2>Where Salesforce CPQ Runs Into Design Limits on Hybrid Deals<\/h2>\n<pee>Salesforce CPQ handles moderate-complexity quoting well, especially for catalogs that are mostly subscriptions or mostly standard SKUs. The constraints appear when a quote mixes revenue types and product complexity at the same time.<\/pee>\n<div class=\"xpl-subgrid\">\n<div class=\"xpl-subcard\">\n<h3>Managed-package architecture and rule maintenance<\/h3>\n<pee>Salesforce CPQ ships as a managed package with its own objects and rule types: product rules, price rules, and constraint rules. As a hybrid catalog grows, the number of rules grows faster than the catalog, because services and subscriptions need their own rule sets on top of configured products. Maintaining that logic increasingly becomes specialist work rather than admin work.<\/pee><\/div>\n<div class=\"xpl-subcard\">\n<h3>QCP and custom code for pricing that does not fit the model<\/h3>\n<pee>When pricing logic falls outside the native model, teams turn to the Quote Calculator Plugin, a JavaScript extension point for custom calculations. QCP solves the immediate problem but creates a long-term one. Pricing behavior now lives in code, regression testing gets harder, and any future platform change means re-validating that code.<\/pee><\/div>\n<div class=\"xpl-subcard\">\n<h3>Services and labor modeled as products<\/h3>\n<pee>Professional services, labor, and project work rarely behave like catalog items. They are scoped, estimated, and rate-driven, often with custom engagements, multi-tiered pricing, and bundled deliverables. Forcing that work into a product-bundle structure usually means the real scoping happens somewhere else and gets pasted back in. For the deeper mechanics of rate cards and project scoping, see <a href=\"https:\/\/experlogix.com\/solution-selling-cpq-mixed-revenue-quoting\/\">labor pricing and project-based quoting<\/a>.<\/pee><\/div>\n<div class=\"xpl-subcard\">\n<h3>Nested bundles and performance on large hybrid quotes<\/h3>\n<pee>When a large configured quote with nested bundles also carries dozens of service and subscription lines, line counts and calculation passes rise together. As catalogs grow to thousands of SKUs or hybrid offerings that combine physical products, services, and subscriptions, teams may see performance issues, rigid workflows, and a rules engine that is hard to manage at runtime.<\/pee><\/div>\n<\/div>\n<\/section>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<div class=\"xpl-animation-wrap\">\n<style><!-- [et_pb_line_break_holder] -->.xlx-hq{max-width:440px;margin:0 auto;font-family:inherit;background:#F3F8FD;border-radius:14px}<!-- [et_pb_line_break_holder] -->.xlx-hq svg{display:block;width:100%;height:auto}<!-- [et_pb_line_break_holder] -->.xlx-hq text{font-family:inherit}<!-- [et_pb_line_break_holder] --><\/style>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<div class=\"xlx-hq\"><!-- [et_pb_line_break_holder] --><svg aria-label=\"A machine, labor, a three-year service agreement, a subscription and usage charges each travel into one quote. Each line gets its own pricing rule and margin, and the bundle margin fills on a single approved quote.\" id=\"xlxHq\" role=\"img\" viewbox=\"0 0 440 350\"><!-- [et_pb_line_break_holder] --><g id=\"xlxAll\"><!-- [et_pb_line_break_holder] --><text fill=\"#0C214C\" font-size=\"15\" font-weight=\"700\" x=\"20\" y=\"34\">Five revenue streams. One quote.<\/text><!-- [et_pb_line_break_holder] --><g fill=\"#0C214C\" font-size=\"11\"><!-- [et_pb_line_break_holder] --><rect fill=\"none\" height=\"36\" rx=\"9\" stroke=\"#8BB9FC\" stroke-dasharray=\"3 3\" width=\"36\" x=\"24\" y=\"74\"><\/rect><text x=\"70\" y=\"96\">Machine<\/text><!-- [et_pb_line_break_holder] --><rect fill=\"none\" height=\"36\" rx=\"9\" stroke=\"#8BB9FC\" stroke-dasharray=\"3 3\" width=\"36\" x=\"24\" y=\"126\"><\/rect><text x=\"70\" y=\"148\">Labor<\/text><!-- [et_pb_line_break_holder] --><rect fill=\"none\" height=\"36\" rx=\"9\" stroke=\"#8BB9FC\" stroke-dasharray=\"3 3\" width=\"36\" x=\"24\" y=\"178\"><\/rect><text x=\"70\" y=\"200\">Service<\/text><!-- [et_pb_line_break_holder] --><rect fill=\"none\" height=\"36\" rx=\"9\" stroke=\"#8BB9FC\" stroke-dasharray=\"3 3\" width=\"36\" x=\"24\" y=\"230\"><\/rect><text x=\"70\" y=\"252\">Subscription<\/text><!-- [et_pb_line_break_holder] --><rect fill=\"none\" height=\"36\" rx=\"9\" stroke=\"#8BB9FC\" stroke-dasharray=\"3 3\" width=\"36\" x=\"24\" y=\"282\"><\/rect><text x=\"70\" y=\"304\">Usage<\/text><!-- [et_pb_line_break_holder] --><\/g><!-- [et_pb_line_break_holder] --><rect fill=\"#F3F8FD\" height=\"272\" rx=\"10\" stroke=\"#0C214C\" stroke-width=\"1.5\" width=\"188\" x=\"236\" y=\"56\"><\/rect><!-- [et_pb_line_break_holder] --><path d=\"M236 66a10 10 0 0 1 10-10h168a10 10 0 0 1 10 10v18H236z\" fill=\"#0C214C\"><\/path><!-- [et_pb_line_break_holder] --><text fill=\"#F3F8FD\" font-size=\"10\" font-weight=\"700\" letter-spacing=\"1.5\" x=\"248\" y=\"75\">QUOTE<\/text><!-- [et_pb_line_break_holder] --><text fill=\"#F3F8FD\" font-size=\"9\" text-anchor=\"end\" x=\"412\" y=\"75\">MARGIN<\/text><!-- [et_pb_line_break_holder] --><g id=\"xlxLines\"><\/g><!-- [et_pb_line_break_holder] --><line stroke=\"#0C214C\" stroke-width=\"1\" x1=\"246\" x2=\"414\" y1=\"284\" y2=\"284\"><\/line><!-- [et_pb_line_break_holder] --><text fill=\"#0C214C\" font-size=\"10\" font-weight=\"700\" x=\"246\" y=\"302\">Bundle<\/text><!-- [et_pb_line_break_holder] --><rect fill=\"rgba(244,183,166,0.17)\" height=\"10\" rx=\"5\" width=\"130\" x=\"284\" y=\"294\"><\/rect><!-- [et_pb_line_break_holder] --><rect fill=\"#0350D8\" height=\"10\" id=\"xlxTot\" rx=\"5\" width=\"0\" x=\"284\" y=\"294\"><\/rect><!-- [et_pb_line_break_holder] --><g id=\"xlxPaths\"><\/g><!-- [et_pb_line_break_holder] --><g id=\"xlxToks\"><!-- [et_pb_line_break_holder] --><g id=\"xlxT0\"><rect fill=\"#0350D8\" height=\"36\" rx=\"9\" width=\"36\"><\/rect><circle cx=\"18\" cy=\"18\" fill=\"none\" r=\"9\" stroke=\"#F3F8FD\" stroke-dasharray=\"3.5 3.57\" stroke-width=\"5\"><\/circle><circle cx=\"18\" cy=\"18\" fill=\"none\" r=\"5.5\" stroke=\"#F3F8FD\" stroke-width=\"2.5\"><\/circle><\/g><!-- [et_pb_line_break_holder] --><g id=\"xlxT1\"><rect fill=\"#F46134\" height=\"36\" rx=\"9\" width=\"36\"><\/rect><circle cx=\"18\" cy=\"18\" fill=\"none\" r=\"10\" stroke=\"#0C214C\" stroke-width=\"2.5\"><\/circle><path d=\"M18 11.5V18l4.5 3\" fill=\"none\" stroke=\"#0C214C\" stroke-linecap=\"round\" stroke-width=\"2.5\"><\/path><\/g><!-- [et_pb_line_break_holder] --><g id=\"xlxT2\"><rect fill=\"#0C214C\" height=\"36\" rx=\"9\" width=\"36\"><\/rect><rect fill=\"#8BB9FC\" height=\"4\" rx=\"2\" width=\"18\" x=\"9\" y=\"9.5\"><\/rect><rect fill=\"#8BB9FC\" height=\"4\" rx=\"2\" width=\"18\" x=\"9\" y=\"16\"><\/rect><rect fill=\"#8BB9FC\" height=\"4\" rx=\"2\" width=\"18\" x=\"9\" y=\"22.5\"><\/rect><\/g><!-- [et_pb_line_break_holder] --><g id=\"xlxT3\"><rect fill=\"#8BB9FC\" height=\"36\" rx=\"9\" width=\"36\"><\/rect><path d=\"M26 18a8 8 0 1 1-2.6-5.9\" fill=\"none\" stroke=\"#0C214C\" stroke-linecap=\"round\" stroke-width=\"2.5\"><\/path><path d=\"M24.5 8.5v4.5H20\" fill=\"none\" stroke=\"#0C214C\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.5\"><\/path><\/g><!-- [et_pb_line_break_holder] --><g id=\"xlxT4\"><rect fill=\"#F7D119\" height=\"36\" rx=\"9\" width=\"36\"><\/rect><path d=\"M8 27h6v-6h6v-6h6V9\" fill=\"none\" stroke=\"#0C214C\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2.8\"><\/path><\/g><!-- [et_pb_line_break_holder] --><\/g><!-- [et_pb_line_break_holder] --><g id=\"xlxSeal\" opacity=\"0\" transform=\"translate(420,326) scale(0)\"><circle fill=\"#F46134\" r=\"16\"><\/circle><path d=\"M-7 0l5 5 9-10\" fill=\"none\" stroke=\"#F3F8FD\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"3\"><\/path><\/g><!-- [et_pb_line_break_holder] --><\/g><!-- [et_pb_line_break_holder] --><\/svg><!-- [et_pb_line_break_holder] --><\/div>\n<p><!-- [et_pb_line_break_holder] --><script><!-- [et_pb_line_break_holder] -->(function(){<!-- [et_pb_line_break_holder] -->  var NS=\"http:\/\/www.w3.org\/2000\/svg\";<!-- [et_pb_line_break_holder] -->  var svg=document.getElementById(\"xlxHq\");<!-- [et_pb_line_break_holder] -->  if(!svg)return;<!-- [et_pb_line_break_holder] -->  var rules=[\"One-time\",\"Rate card\",\"3-yr term\",\"Prorated\",\"Tiered\"];<!-- [et_pb_line_break_holder] -->  var margins=[0.72,0.55,0.84,0.9,0.62];<!-- [et_pb_line_break_holder] -->  function el(tag,attrs,parent){var e=document.createElementNS(NS,tag);for(var k in attrs)e.setAttribute(k,attrs[k]);parent.appendChild(e);return e;}<!-- [et_pb_line_break_holder] -->  var layerPaths=svg.querySelector(\"#xlxPaths\"),layerLines=svg.querySelector(\"#xlxLines\");<!-- [et_pb_line_break_holder] -->  var items=[];<!-- [et_pb_line_break_holder] -->  for(var i=0;i<5;i++){<!-- [et_pb_line_break_holder] -->    var y0=74+i*52,sy=94+i*36;<!-- [et_pb_line_break_holder] -->    var p0=[42,y0+18],p3=[257,sy+14],p1=[150,y0+18],p2=[175,sy+14];<!-- [et_pb_line_break_holder] -->    var path=el(\"path\",{d:\"M\"+p0+\" C\"+p1+\" \"+p2+\" \"+p3,fill:\"none\",stroke:\"#8BB9FC\",\"stroke-width\":\"1.6\",\"stroke-linecap\":\"round\"},layerPaths);<!-- [et_pb_line_break_holder] -->    var len=path.getTotalLength?path.getTotalLength():300;<!-- [et_pb_line_break_holder] -->    path.setAttribute(\"stroke-dasharray\",len);path.setAttribute(\"stroke-dashoffset\",len);<!-- [et_pb_line_break_holder] -->    var chip=el(\"rect\",{x:274,y:sy+5,rx:4,height:18,width:0,fill:\"rgba(244,183,166,0.17)\"},layerLines);<!-- [et_pb_line_break_holder] -->    var txt=el(\"text\",{x:280,y:sy+17.5,\"font-size\":\"10\",\"font-weight\":\"600\",fill:\"#0C214C\",opacity:0},layerLines);txt.textContent=rules[i];<!-- [et_pb_line_break_holder] -->    el(\"rect\",{x:362,y:sy+11,width:52,height:6,rx:3,fill:\"rgba(244,183,166,0.17)\"},layerLines);<!-- [et_pb_line_break_holder] -->    var fill=el(\"rect\",{x:362,y:sy+11,width:0,height:6,rx:3,fill:\"#0350D8\"},layerLines);<!-- [et_pb_line_break_holder] -->    items.push({p0:p0,p1:p1,p2:p2,p3:p3,path:path,len:len,chip:chip,txt:txt,fill:fill,tok:svg.querySelector(\"#xlxT\"+i)});<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  var tot=svg.querySelector(\"#xlxTot\"),seal=svg.querySelector(\"#xlxSeal\"),all=svg.querySelector(\"#xlxAll\");<!-- [et_pb_line_break_holder] -->  function cl(v){return v<0?0:v>1?1:v;}<!-- [et_pb_line_break_holder] -->  function ease(t){return t<.5?4*t*t*t:1-Math.pow(-2*t+2,3)\/2;}<!-- [et_pb_line_break_holder] -->  function bz(a,b,c,d,t){var u=1-t;return u*u*u*a+3*u*u*t*b+3*u*t*t*c+t*t*t*d;}<!-- [et_pb_line_break_holder] -->  var LOOP=9400;<!-- [et_pb_line_break_holder] -->  function render(t){<!-- [et_pb_line_break_holder] -->    for(var i=0;i<5;i++){<!-- [et_pb_line_break_holder] -->      var it=items[i],s=400+i*650,k=ease(cl((t-s)\/950));<!-- [et_pb_line_break_holder] -->      var cx=bz(it.p0[0],it.p1[0],it.p2[0],it.p3[0],k),cy=bz(it.p0[1],it.p1[1],it.p2[1],it.p3[1],k);<!-- [et_pb_line_break_holder] -->      var sc=1-0.39*k,h=18*sc;<!-- [et_pb_line_break_holder] -->      it.tok.setAttribute(\"transform\",\"translate(\"+(cx-h)+\",\"+(cy-h)+\") scale(\"+sc+\")\");<!-- [et_pb_line_break_holder] -->      it.path.setAttribute(\"stroke-dashoffset\",it.len*(1-k));<!-- [et_pb_line_break_holder] -->      it.path.setAttribute(\"opacity\",t>s+950?0.35:1);<!-- [et_pb_line_break_holder] -->      var a=s+950,c=ease(cl((t-a)\/400));<!-- [et_pb_line_break_holder] -->      it.chip.setAttribute(\"width\",76*c);<!-- [et_pb_line_break_holder] -->      it.txt.setAttribute(\"opacity\",cl((t-a-200)\/250));<!-- [et_pb_line_break_holder] -->      it.fill.setAttribute(\"width\",52*margins[i]*ease(cl((t-a-450)\/500)));<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->    tot.setAttribute(\"width\",130*0.74*ease(cl((t-5600)\/700)));<!-- [et_pb_line_break_holder] -->    var ss=cl((t-6400)\/350),pop=ss<0.7?ss\/0.7*1.12:1.12-(ss-0.7)\/0.3*0.12;<!-- [et_pb_line_break_holder] -->    seal.setAttribute(\"transform\",\"translate(420,326) scale(\"+pop+\")\");<!-- [et_pb_line_break_holder] -->    seal.setAttribute(\"opacity\",ss>0?1:0);<!-- [et_pb_line_break_holder] -->    all.setAttribute(\"opacity\",t>8800?1-cl((t-8800)\/500):1);<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  var rm=window.matchMedia&&window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;<!-- [et_pb_line_break_holder] -->  if(rm){render(7600);return;}<!-- [et_pb_line_break_holder] -->  var st=null,vis=true;<!-- [et_pb_line_break_holder] -->  if(\"IntersectionObserver\" in window){new IntersectionObserver(function(e){vis=e[0].isIntersecting;}).observe(svg);}<!-- [et_pb_line_break_holder] -->  function frame(ts){if(st===null)st=ts;if(vis)render((ts-st)%LOOP);requestAnimationFrame(frame);}<!-- [et_pb_line_break_holder] -->  render(0);requestAnimationFrame(frame);<!-- [et_pb_line_break_holder] -->})();<!-- [et_pb_line_break_holder] --><\/script><\/div>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<section class=\"xpl-section xpl-section--soft\">\n<h2>What Good Hybrid Quoting Actually Requires<\/h2>\n<pee>Good hybrid quoting means one governed quote, one calculation engine, and one set of guardrails covering every revenue stream in the deal. Use these as evaluation criteria rather than feature checkboxes:<\/pee>\n<ul class=\"xpl-card-grid\"><!-- [et_pb_line_break_holder] --><\/p>\n<li>One quote, many pricing models. One-time, recurring, and usage-based charges coexist on a single document with correct totals for each.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Term and date accuracy. Start dates, co-terming, proration, and <a href=\"https:\/\/experlogix.com\/salesforce-cpq-ramp-deals-multi-year-pricing\/\">ramped multi-year pricing<\/a> calculate consistently across services and subscriptions.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Services scoping inside the quote. Labor, roles, rates, and project deliverables are quoted in the same flow as the configured product.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Margin visibility across the bundle. You can see margin on the whole solution and on each line, not just a blended total.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Governed discounting. Floors, ceilings, stacking rules, and <a href=\"https:\/\/experlogix.com\/salesforce-cpq-threshold-based-approvals-discount-guardrails\/\">threshold-based approvals<\/a> apply across revenue types, with exceptions routed automatically.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>One document out. The proposal reflects every stream accurately, without manual assembly.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Admin ownership. Business administrators can change rates, rules, and thresholds without a developer.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/ul>\n<\/section>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<section class=\"xpl-section\">\n<h2>Your Three Realistic Paths, and When Each Fits<\/h2>\n<pee>No one is forcing you to migrate. Pick the path that matches your complexity and how much project risk you can take on.<\/pee>\n<div class=\"xpl-subgrid\">\n<div class=\"xpl-subcard\">\n<h3>Stay on Salesforce CPQ<\/h3>\n<pee>Staying is a legitimate choice. You can keep using Salesforce CPQ, renew, and add users, with support, and no end-of-life date has been announced. Staying makes sense when hybrid deals are a small share of your volume, your rule set is stable, and the workarounds are tolerable. The trade-off is that Salesforce CPQ is no longer receiving meaningful new feature development, so the gap on mixed revenue will not close on its own.<\/pee><\/div>\n<div class=\"xpl-subcard\">\n<h3>Reimplement on Revenue Cloud Advanced<\/h3>\n<pee>Revenue Cloud Advanced, now part of Agentforce Revenue Management, is where Salesforce&#8217;s strategic investment has moved. Treat the move as a reimplementation, not an upgrade. RCA uses a different data model and configuration approach, so your catalog, pricing logic, and custom code get redesigned rather than lifted across. This path fits organizations that are committed to a single Salesforce revenue platform for quoting, billing, and revenue recognition, and that are willing to fund a redesign.<\/pee><\/div>\n<div class=\"xpl-subcard\">\n<h3>Keep Salesforce CRM and replace the quoting layer<\/h3>\n<pee>If Salesforce CRM works and the quoting engine is the constraint, you can change only the quoting layer. Accounts, opportunities, forecasting, and reporting stay intact while you replace the engine that handles configuration, pricing, and mixed revenue. It is the narrowest-scope option, and it is the one most often overlooked.<\/pee><\/div>\n<\/div>\n<\/section>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<section class=\"xpl-section\">\n<h2>How Experlogix CPQ Approaches Mixed-Revenue Quoting<\/h2>\n<pee>Experlogix CPQ is one way to take the third path: keep Salesforce CRM as the system of record and replace the quoting layer.<\/pee><pee>With Experlogix CPQ, one-time equipment, recurring subscriptions, usage-based fees, and multi-year services and support can all sit on a single quote. Each line gets its own tiers, contract terms, and regional rules, applied automatically. Margin stays visible across the whole bundle and on each line.<\/pee><pee>Several capabilities make that single quote work in practice:<\/pee>\n<ul class=\"xpl-card-grid\"><!-- [et_pb_line_break_holder] --><\/p>\n<li>A rules engine that evaluates thousands of options in real time to prevent invalid builds and capture engineering constraints, so the product side of a hybrid deal stays valid.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Pricing logic for list, contract, and tiered structures, with region-specific rules, currency conversions, and volume-based breaks applied automatically.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Discount guardrails with ceilings, floors, and stacking rules. Standard deals pass instantly, approvals trigger only when a deal crosses a threshold, and every pricing decision is logged.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Special pricing agreements applied automatically and documented per quote, in concert with your CRM.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Document generation for configured quotes and proposals from the same flow.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Low-code administration, so business users can maintain logic instead of filing developer tickets.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>For manufacturers, handoff to ERP (enterprise resource planning) with complete bill of materials (BOM), work breakdown structure (WBS), and routing data. This matters when the product half of a hybrid deal has to be built.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/ul>\n<pee>Experlogix CPQ is built natively for Salesforce and Microsoft Dynamics 365. Because it works directly with CRM and ERP data rather than through middleware, integrations hold up through platform updates and data stays consistent across systems. This architecture matters to RevOps and IT. When quoting doesn&#8217;t depend on copying CRM data into a separate platform and syncing it back, you avoid:<\/pee>\n<ul class=\"xpl-card-grid\"><!-- [et_pb_line_break_holder] --><\/p>\n<li>Stale or mismatched records<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Sync failures and latency<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Duplicate records and reconciliation work<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Reporting that reflects a copy rather than the source<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>The governance exposure of storing the same data in more places<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/ul>\n<pee>Reps also stay in the opportunity and account context they already know.<\/pee><pee>Experlogix isn&#8217;t the right fit for everyone. Salesforce CPQ can still be a solid fit for straightforward and moderately complex quoting, with low to mid-level configuration demands and limited complex workflow needs. A quoting-layer replacement may not be the right move if:<\/pee>\n<ul class=\"xpl-card-grid\"><!-- [et_pb_line_break_holder] --><\/p>\n<li>Your catalog is simple.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Your sales motion is pure self-service SaaS.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>You are already committed to an RCA reimplementation.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/ul>\n<\/section>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<section class=\"xpl-section xpl-section--bottom\">\n<h2>The Bottom Line on Quoting Products, Services and Subscriptions in One Deal<\/h2>\n<pee>Salesforce CPQ&#8217;s end of sale doesn&#8217;t force a decision, but hybrid deals often do. When quoting products and services in one deal takes a second quote, a spreadsheet, or QCP code to reconcile, the costs pile up quietly:<\/pee>\n<ul class=\"xpl-card-grid\"><!-- [et_pb_line_break_holder] --><\/p>\n<li>Slower approvals<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Margin you can&#8217;t see until after the deal closes<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Contracts that don&#8217;t match what the quoting system calculated<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/ul>\n<pee>All three paths remain open:<\/pee>\n<ul class=\"xpl-card-grid\"><!-- [et_pb_line_break_holder] --><\/p>\n<li>Staying on Salesforce CPQ is reasonable if mixed revenue is a small part of your volume and your configuration is stable.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Reimplementing on Revenue Cloud Advanced fits organizations that want one Salesforce revenue platform and will fund a redesign.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Replacing only the quoting layer while keeping Salesforce CRM as the system of record fits teams whose CRM works but whose quoting engine doesn&#8217;t. It keeps mixed revenue, governed pricing, and document output in one place.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/ul>\n<pee>Teams that get this right tend to see the same practical gains: fewer manual line items, approvals that route by rule instead of by email, and a proposal that matches the contract because one engine produced both.<\/pee><pee>Start with evidence, not vendor decks. Take your three hardest recent hybrid deals and map every revenue stream on them: one-time products, labor and professional services, project deliverables, subscriptions, usage, and renewals. For each line, note where the number came from, who can change the rule behind it, and how long the quote took to assemble. That map will show whether your constraint is configuration, pricing logic, or architecture, and which of the three paths your business case supports.<\/pee><\/section>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<section class=\"xpl-faq-section\">\n<h2>FAQ<\/h2>\n<div class=\"xpl-faq-list\">\n<details class=\"xpl-faq-item\" open=\"\">\n<summary>What is hybrid quoting?<\/summary>\n<div class=\"xpl-faq-answer\"><pee>Hybrid quoting means pricing several revenue types on one quote, such as one-time products, labor and professional services, project deliverables, recurring subscriptions, and usage-based charges. Each type follows its own pricing math, term logic, and approval thresholds, so hybrid quoting needs one engine that can apply all of those rules together.<\/pee><\/div>\n<\/details>\n<details class=\"xpl-faq-item\">\n<summary>Can CPQ quote products, services, labor, subscriptions and usage charges together?<\/summary>\n<div class=\"xpl-faq-answer\"><pee>Yes, if the CPQ is built for mixed revenue. With Experlogix CPQ, one-time equipment, recurring subscriptions, usage-based fees, and multi-year services and support can all sit on a single quote. Each line gets its own tiers, contract terms, and regional rules, applied automatically. Test this with your hardest real deal, not a demo catalog.<\/pee><\/div>\n<\/details>\n<details class=\"xpl-faq-item\">\n<summary>Can CPQ handle one-time and recurring revenue on the same quote?<\/summary>\n<div class=\"xpl-faq-answer\"><pee>It can, but the totals for each pricing model need to stay correct on one document. Term and date logic, including start dates, co-terming, proration, and ramped multi-year pricing, also has to calculate consistently. If your team builds separate quotes for one-time and recurring items, the quoting engine is likely the constraint.<\/pee><\/div>\n<\/details>\n<details class=\"xpl-faq-item\">\n<summary>Why do mixed-revenue quotes end up in spreadsheets?<\/summary>\n<div class=\"xpl-faq-answer\"><pee>When a quoting engine handles only some revenue types well, the rest moves into spreadsheets, manual line items, or custom code. Services scoping is the most common example. With Salesforce CPQ, pricing logic that doesn&#8217;t fit the native model often ends up in Quote Calculator Plugin code that only a developer can maintain.<\/pee><\/div>\n<\/details>\n<details class=\"xpl-faq-item\">\n<summary>How should margin be shown on a hybrid quote?<\/summary>\n<div class=\"xpl-faq-answer\"><pee>Margin should be visible on the whole solution and on each line, not just as a blended total. Line-level margin shows whether a discount on equipment is being offset by services or subscriptions. Bundle-level margin shows whether the deal as a whole meets policy. Experlogix CPQ shows margin across the whole bundle as well as on each line.<\/pee><\/div>\n<\/details>\n<\/div>\n<\/section>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<div class=\"xpl-cta\">\n<div class=\"xpl-cta-copy\"><span class=\"xpl-cta-heading\">Put Your Hardest Hybrid Deal on One Quote<\/span><pee>Put Your Hardest Hybrid Deal on One Quote<\/pee><\/div>\n<div class=\"xpl-cta-action\"><a class=\"xpl-btn\" href=\"https:\/\/experlogix.com\/demo\/\">Get a Demo<\/a><\/div>\n<\/div>\n<p><!-- [et_pb_line_break_holder] --><\/article>\n<p>[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Picture one opportunity that includes a configured machine, installation and commissioning labor, a three-year service agreement, and a connected-monitoring subscription with usage tiers. Your quoting tool has to price all of it in one governed document, and that is where many Salesforce CPQ configurations start to strain. This article explains why quoting products and services together is hard, what good hybrid quoting looks like, and how to evaluate a Salesforce CPQ alternative built for mixed revenue.<\/p>","protected":false},"author":1,"featured_media":348417,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[235],"tags":[],"xpl_cpq_related_topic":[186,184,183,200],"xpl_da_related_topic":[],"class_list":["post-348481","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-quoting-tools","xpl_cpq_related_topic-approvals","xpl_cpq_related_topic-pricing","xpl_cpq_related_topic-rules-engine","xpl_cpq_related_topic-salesforce"],"acf":[],"_links":{"self":[{"href":"https:\/\/experlogix.com\/nl\/wp-json\/wp\/v2\/posts\/348481","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/experlogix.com\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/experlogix.com\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/experlogix.com\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/experlogix.com\/nl\/wp-json\/wp\/v2\/comments?post=348481"}],"version-history":[{"count":2,"href":"https:\/\/experlogix.com\/nl\/wp-json\/wp\/v2\/posts\/348481\/revisions"}],"predecessor-version":[{"id":348576,"href":"https:\/\/experlogix.com\/nl\/wp-json\/wp\/v2\/posts\/348481\/revisions\/348576"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/experlogix.com\/nl\/wp-json\/wp\/v2\/media\/348417"}],"wp:attachment":[{"href":"https:\/\/experlogix.com\/nl\/wp-json\/wp\/v2\/media?parent=348481"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/experlogix.com\/nl\/wp-json\/wp\/v2\/categories?post=348481"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/experlogix.com\/nl\/wp-json\/wp\/v2\/tags?post=348481"},{"taxonomy":"xpl_cpq_related_topic","embeddable":true,"href":"https:\/\/experlogix.com\/nl\/wp-json\/wp\/v2\/xpl_cpq_related_topic?post=348481"},{"taxonomy":"xpl_da_related_topic","embeddable":true,"href":"https:\/\/experlogix.com\/nl\/wp-json\/wp\/v2\/xpl_da_related_topic?post=348481"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}