{"id":348495,"date":"2026-06-01T12:39:01","date_gmt":"2026-06-01T12:39:01","guid":{"rendered":"https:\/\/experlogix.com\/?p=348495"},"modified":"2026-10-20T17:55:49","modified_gmt":"2026-10-20T17:55:49","slug":"engineer-to-order-vs-configure-to-order-salesforce-cpq","status":"publish","type":"post","link":"https:\/\/experlogix.com\/fr\/engineer-to-order-vs-configure-to-order-salesforce-cpq\/","title":{"rendered":"Engineer-to-Order vs. Configure-to-Order: What Salesforce CPQ Can and Can&#8217;t Model"},"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=\"A25\"><!-- [et_pb_line_break_holder] --><\/p>\n<div class=\"xpl-intro\"><pee>If you sell machines, systems, or projects rather than SKUs, the difference between engineer-to-order (ETO) and configure-to-order (CTO) determines how your quoting system has to behave. <a href=\"https:\/\/experlogix.com\/salesforce-cpq\/\">Salesforce CPQ<\/a> was built around a bundle-and-option model, and that model fits one of those worlds better than the other. Salesforce CPQ is now end of sale and no longer receiving meaningful new feature development, so it&#8217;s worth knowing exactly where the model holds and where it strains. This article explains the difference between ETO, CTO, and make-to-order quoting, what Salesforce CPQ models well, where its design runs into limits, and how to decide what your business actually needs.<\/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><strong>Configure-to-order (CTO)<\/strong> means selling defined products assembled from pre-engineered, rule-governed options. <strong>Engineer-to-order (ETO)<\/strong> means the sale creates new engineering content: custom dimensions, derived specifications, and a bill of materials (BOM) that doesn&#8217;t fully exist until the deal is defined.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Salesforce CPQ handles catalog-based CTO quoting well up to moderate complexity. That includes bundles, option constraints, product and price rules, discounting, and approval workflows inside Salesforce CRM.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Salesforce CPQ strains as configuration depth grows. The pressure points are deeply nested bundles, large option trees, calculated or derived attributes, constraint logic that needs more than declarative rules, and production-ready BOM or routing output. Teams usually close those gaps with custom code, such as Quote Calculator Plugin (QCP) scripts, or with middleware or spreadsheets.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Salesforce CPQ is end of sale, not end of life. Existing customers can keep using it, renew, add users, and get support. Salesforce hasn&#8217;t announced an end-of-life date and isn&#8217;t forcing anyone to migrate.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li><strong>Bottom line:<\/strong> start by sorting your actual revenue into CTO, ETO, and make-to-order. If most of your margin comes from engineered or configured hardware whose output has to go to your ERP, you need a configurator built for that depth. That could be Salesforce CPQ plus custom development, Revenue Cloud Advanced (RCA), or a dedicated configurator like Experlogix CPQ that works with Salesforce CRM as the system of record.<\/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>What ETO, CTO, and Make-to-Order Actually Mean in a Quote<\/h2>\n<pee>The three terms describe how much engineering happens after the customer says yes, and that determines what the quoting system has to produce. Salesforce CPQ customers often blur them, and that&#8217;s how a quoting tool ends up being asked to do an engineering job.<\/pee>\n<ul class=\"xpl-card-grid\"><!-- [et_pb_line_break_holder] --><\/p>\n<li><strong>Configure-to-order (CTO):<\/strong> The product family and its components are already engineered. The customer selects valid combinations of options, and the configurator enforces compatibility, dependencies, and pricing. The output is a known BOM assembled from known parts.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li><strong>Make-to-order (MTO):<\/strong> The product is standard, but nothing is built until the order arrives. Configuration effort is low. Lead time, capacity, and scheduling matter most.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li><strong>Engineer-to-order (ETO):<\/strong> The sale triggers new design work. Dimensions, performance curves, materials, and interfaces are derived from customer requirements. Part of the BOM is generated automatically, and engineering may create part of it during or after the quote.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/ul>\n<pee>In practice, most industrial manufacturers are mixed-mode. A single quote can include a configured base machine, an engineered custom section, standard spare parts, installation labor, and a multi-year service agreement. This pattern is common in manufacturing. CTO and ETO product families come with nested subassemblies, compliance-driven regional variants, and service bundles that must stay in step with the configured hardware. Standard, configured, and custom items often appear on a single quote.<\/pee>\n<div class=\"xpl-subsection\">\n<h3>Variant configuration is the dividing line<\/h3>\n<pee>Variant configuration means generating a specific, valid product variant from attributes and rules rather than picking a pre-built SKU. CTO quoting is mostly variant configuration against a fixed set of options. ETO quoting goes further: the configurator has to calculate derived values, respect engineering constraints, and flag where an engineer needs to review the design. The closer you get to ETO, the more the quoting layer works like an engineering tool and the less it works like a catalog.<\/pee><\/div>\n<\/section>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<section class=\"xpl-section\">\n<h2>What Salesforce CPQ Models Well<\/h2>\n<pee>Salesforce CPQ is a capable configure-price-quote (CPQ) application for catalog-driven selling inside Salesforce CRM, and it remains a reasonable system for a large share of CTO quoting. It does the following:<\/pee>\n<ul class=\"xpl-card-grid\"><!-- [et_pb_line_break_holder] --><\/p>\n<li>models bundles with features and options<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>enforces product rules and constraint-style validation<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>applies price rules and discount schedules<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>routes approval workflows<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>produces quote documents from Salesforce data<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/ul>\n<pee>For a company selling defined product families with a manageable number of options, that&#8217;s enough. Reps stay in the opportunity, pricing is governed, approvals are auditable, and quote data lives in the same org as accounts and opportunities. Salesforce CPQ works well for simple quoting and holds up for moderately complex quoting, especially where configuration demands and workflow complexity are limited. Many organizations never outgrow it.<\/pee><pee>It also handles subscription and amendment behavior natively. That matters for companies whose complexity is commercial rather than physical, such as <a href=\"https:\/\/experlogix.com\/salesforce-cpq-ramp-deals-multi-year-pricing\/\">ramps, co-terms and proration<\/a> and renewals. If your hardest quoting problem is a three-year ramp rather than a three-level subassembly, Salesforce CPQ&#8217;s design is aimed at your problem.<\/pee><\/section>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<div class=\"xpl-animation-wrap\">\n<style><!-- [et_pb_line_break_holder] -->.eto-cto{width:100%;max-width:420px;margin:0 auto;font-family:\"Object Sans\",Arial,sans-serif;background:#F3F8FD;border-radius:14px;overflow:hidden}<!-- [et_pb_line_break_holder] -->.eto-cto svg{display:block;width:100%;height:auto}<!-- [et_pb_line_break_holder] -->.eto-cto text{font-family:\"Object Sans\",Arial,sans-serif;fill:#0C214C}<!-- [et_pb_line_break_holder] -->.eto-cto .t{font-size:15px;font-weight:700}<!-- [et_pb_line_break_holder] -->.eto-cto .h{font-size:14px;font-weight:700;letter-spacing:.08em}<!-- [et_pb_line_break_holder] -->.eto-cto .s{font-size:11px}<!-- [et_pb_line_break_holder] -->.eto-cto .m{font-size:11px;font-weight:700}<!-- [et_pb_line_break_holder] -->.eto-cto .mv{transform-box:fill-box}<!-- [et_pb_line_break_holder] -->.eto-cto.play .scene{animation:sc 11s linear infinite}<!-- [et_pb_line_break_holder] -->.eto-cto.play .a1{animation:a1 11s cubic-bezier(.3,1.25,.5,1) infinite}<!-- [et_pb_line_break_holder] -->.eto-cto.play .a2{animation:a2 11s cubic-bezier(.3,1.25,.5,1) infinite}<!-- [et_pb_line_break_holder] -->.eto-cto.play .a3{animation:a3 11s cubic-bezier(.3,1.25,.5,1) infinite}<!-- [et_pb_line_break_holder] -->.eto-cto.play .tagc{animation:tc 11s ease infinite}<!-- [et_pb_line_break_holder] -->.eto-cto.play .e1{animation:e1 11s cubic-bezier(.3,1.25,.5,1) infinite}<!-- [et_pb_line_break_holder] -->.eto-cto.play .e2{animation:e2 11s cubic-bezier(.3,1.25,.5,1) infinite}<!-- [et_pb_line_break_holder] -->.eto-cto.play .ghost{animation:gh 11s ease infinite}<!-- [et_pb_line_break_holder] -->.eto-cto.play .grow{transform-origin:center;animation:gr 11s cubic-bezier(.2,.9,.3,1) infinite}<!-- [et_pb_line_break_holder] -->.eto-cto.play .dim{animation:dm 11s ease infinite}<!-- [et_pb_line_break_holder] -->.eto-cto.play .tage{animation:te 11s ease infinite}<!-- [et_pb_line_break_holder] -->@keyframes sc{0%{opacity:0}3%{opacity:1}92%{opacity:1}95%,100%{opacity:0}}<!-- [et_pb_line_break_holder] -->@keyframes a1{0%,4%{transform:translate(0,0)}11%,96%{transform:translate(50px,170px)}100%{transform:translate(0,0)}}<!-- [et_pb_line_break_holder] -->@keyframes a2{0%,11%{transform:translate(0,0)}18%,96%{transform:translate(0,146px)}100%{transform:translate(0,0)}}<!-- [et_pb_line_break_holder] -->@keyframes a3{0%,18%{transform:translate(0,0)}25%,96%{transform:translate(-50px,122px)}100%{transform:translate(0,0)}}<!-- [et_pb_line_break_holder] -->@keyframes tc{0%,26%{opacity:0}30%,96%{opacity:1}100%{opacity:0}}<!-- [et_pb_line_break_holder] -->@keyframes e1{0%,33%{transform:translate(0,0)}40%,96%{transform:translate(50px,170px)}100%{transform:translate(0,0)}}<!-- [et_pb_line_break_holder] -->@keyframes e2{0%,40%{transform:translate(0,0)}47%,96%{transform:translate(0,146px)}100%{transform:translate(0,0)}}<!-- [et_pb_line_break_holder] -->@keyframes gh{0%,48%{opacity:0}52%,96%{opacity:1}100%{opacity:0}}<!-- [et_pb_line_break_holder] -->@keyframes gr{0%,54%{transform:scaleX(0)}64%,96%{transform:scaleX(1)}100%{transform:scaleX(0)}}<!-- [et_pb_line_break_holder] -->@keyframes dm{0%,62%{opacity:0}67%,96%{opacity:1}100%{opacity:0}}<!-- [et_pb_line_break_holder] -->@keyframes te{0%,70%{opacity:0}75%,96%{opacity:1}100%{opacity:0}}<!-- [et_pb_line_break_holder] -->@media (prefers-reduced-motion:reduce){<!-- [et_pb_line_break_holder] -->.eto-cto .scene,.eto-cto .a1,.eto-cto .a2,.eto-cto .a3,.eto-cto .tagc,.eto-cto .e1,.eto-cto .e2,.eto-cto .ghost,.eto-cto .grow,.eto-cto .dim,.eto-cto .tage{animation:none!important;opacity:1!important}<!-- [et_pb_line_break_holder] -->.eto-cto .a1,.eto-cto .e1{transform:translate(50px,170px)}<!-- [et_pb_line_break_holder] -->.eto-cto .a2,.eto-cto .e2{transform:translate(0,146px)}<!-- [et_pb_line_break_holder] -->.eto-cto .a3{transform:translate(-50px,122px)}<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><\/style>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<div aria-label=\"Configure-to-order stacks known catalog parts into an existing BOM. Engineer-to-order stacks known parts, then derives a new custom-sized part from specifications, creating a new BOM that needs engineering review.\" class=\"eto-cto\" id=\"etoCto\" role=\"img\"><!-- [et_pb_line_break_holder] --><svg aria-hidden=\"true\" viewbox=\"0 0 420 340\" ><!-- [et_pb_line_break_holder] --><rect fill=\"#F3F8FD\" height=\"340\" width=\"420\"><\/rect><!-- [et_pb_line_break_holder] --><text class=\"t\" text-anchor=\"middle\" x=\"210\" y=\"30\">Pick parts or derive them?<\/text><!-- [et_pb_line_break_holder] --><line stroke=\"#8BB9FC\" stroke-dasharray=\"4 5\" stroke-width=\"1.5\" x1=\"210\" x2=\"210\" y1=\"48\" y2=\"322\"><\/line><!-- [et_pb_line_break_holder] --><text class=\"h\" text-anchor=\"middle\" x=\"105\" y=\"62\">CTO<\/text><!-- [et_pb_line_break_holder] --><text class=\"s\" text-anchor=\"middle\" x=\"105\" y=\"80\">Known options<\/text><!-- [et_pb_line_break_holder] --><text class=\"h\" text-anchor=\"middle\" x=\"315\" y=\"62\">ETO<\/text><!-- [et_pb_line_break_holder] --><text class=\"s\" text-anchor=\"middle\" x=\"315\" y=\"80\">Derived specs<\/text><!-- [et_pb_line_break_holder] --><line stroke=\"#0C214C\" stroke-width=\"2\" x1=\"28\" x2=\"182\" y1=\"120\" y2=\"120\"><\/line><!-- [et_pb_line_break_holder] --><line stroke=\"#0C214C\" stroke-width=\"2\" x1=\"238\" x2=\"392\" y1=\"120\" y2=\"120\"><\/line><!-- [et_pb_line_break_holder] --><line stroke=\"#0C214C\" stroke-width=\"2\" x1=\"50\" x2=\"160\" y1=\"290\" y2=\"290\"><\/line><!-- [et_pb_line_break_holder] --><line stroke=\"#0C214C\" stroke-width=\"2\" x1=\"260\" x2=\"370\" y1=\"290\" y2=\"290\"><\/line><!-- [et_pb_line_break_holder] --><rect fill=\"none\" height=\"22\" rx=\"4\" stroke=\"#0C214C\" stroke-dasharray=\"3 3\" stroke-width=\"1.5\" width=\"40\" x=\"345\" y=\"96\"><\/rect><!-- [et_pb_line_break_holder] --><text class=\"m\" text-anchor=\"middle\" x=\"365\" y=\"111\">?<\/text><!-- [et_pb_line_break_holder] --><g class=\"scene\"><!-- [et_pb_line_break_holder] --><rect class=\"mv a1\" fill=\"#0C214C\" height=\"22\" rx=\"4\" width=\"40\" x=\"35\" y=\"96\"><\/rect><!-- [et_pb_line_break_holder] --><rect class=\"mv a2\" fill=\"#0350D8\" height=\"22\" rx=\"4\" width=\"40\" x=\"85\" y=\"96\"><\/rect><!-- [et_pb_line_break_holder] --><rect class=\"mv a3\" fill=\"#8BB9FC\" height=\"22\" rx=\"4\" stroke=\"#0350D8\" stroke-width=\"1.5\" width=\"40\" x=\"135\" y=\"96\"><\/rect><!-- [et_pb_line_break_holder] --><g class=\"tagc\"><!-- [et_pb_line_break_holder] --><rect fill=\"#F3F8FD\" height=\"24\" rx=\"12\" stroke=\"#0350D8\" stroke-width=\"1.5\" width=\"100\" x=\"55\" y=\"301\"><\/rect><!-- [et_pb_line_break_holder] --><text class=\"m\" style=\"fill:#0350D8\" text-anchor=\"middle\" x=\"105\" y=\"317\">Known BOM \u2713<\/text><!-- [et_pb_line_break_holder] --><\/g><!-- [et_pb_line_break_holder] --><rect class=\"mv e1\" fill=\"#0C214C\" height=\"22\" rx=\"4\" width=\"40\" x=\"245\" y=\"96\"><\/rect><!-- [et_pb_line_break_holder] --><rect class=\"mv e2\" fill=\"#0350D8\" height=\"22\" rx=\"4\" width=\"40\" x=\"295\" y=\"96\"><\/rect><!-- [et_pb_line_break_holder] --><rect class=\"ghost\" fill=\"rgba(244,183,166,0.17)\" height=\"22\" rx=\"4\" stroke=\"#0C214C\" stroke-dasharray=\"3 3\" stroke-width=\"1.5\" width=\"68\" x=\"281\" y=\"218\"><\/rect><!-- [et_pb_line_break_holder] --><rect class=\"mv grow\" fill=\"#F46134\" height=\"22\" rx=\"4\" stroke=\"#0C214C\" stroke-width=\"1.5\" width=\"68\" x=\"281\" y=\"218\"><\/rect><!-- [et_pb_line_break_holder] --><g class=\"dim\"><!-- [et_pb_line_break_holder] --><line stroke=\"#0C214C\" stroke-width=\"1.2\" x1=\"281\" x2=\"349\" y1=\"208\" y2=\"208\"><\/line><!-- [et_pb_line_break_holder] --><line stroke=\"#0C214C\" stroke-width=\"1.2\" x1=\"281\" x2=\"281\" y1=\"203\" y2=\"213\"><\/line><!-- [et_pb_line_break_holder] --><line stroke=\"#0C214C\" stroke-width=\"1.2\" x1=\"349\" x2=\"349\" y1=\"203\" y2=\"213\"><\/line><!-- [et_pb_line_break_holder] --><text class=\"m\" text-anchor=\"middle\" x=\"315\" y=\"198\">f(spec)<\/text><!-- [et_pb_line_break_holder] --><\/g><!-- [et_pb_line_break_holder] --><g class=\"tage\"><!-- [et_pb_line_break_holder] --><rect fill=\"#F7D119\" height=\"24\" rx=\"12\" width=\"120\" x=\"255\" y=\"301\"><\/rect><!-- [et_pb_line_break_holder] --><text class=\"m\" text-anchor=\"middle\" x=\"315\" y=\"317\">New BOM \u00b7 review<\/text><!-- [et_pb_line_break_holder] --><\/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 el=document.getElementById('etoCto');<!-- [et_pb_line_break_holder] -->  if(!el)return;<!-- [et_pb_line_break_holder] -->  var reduce=window.matchMedia&&window.matchMedia('(prefers-reduced-motion: reduce)').matches;<!-- [et_pb_line_break_holder] -->  if(reduce)return;<!-- [et_pb_line_break_holder] -->  if('IntersectionObserver' in window){<!-- [et_pb_line_break_holder] -->    new IntersectionObserver(function(entries){<!-- [et_pb_line_break_holder] -->      entries.forEach(function(e){<!-- [et_pb_line_break_holder] -->        if(e.isIntersecting){el.classList.add('play');}<!-- [et_pb_line_break_holder] -->        else{el.classList.remove('play');}<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->    },{threshold:0.3}).observe(el);<!-- [et_pb_line_break_holder] -->  }else{<!-- [et_pb_line_break_holder] -->    el.classList.add('play');<!-- [et_pb_line_break_holder] -->  }<!-- [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>Where Salesforce CPQ Runs Into Limits on Engineer-to-Order Work<\/h2>\n<pee>Salesforce CPQ&#8217;s constraints on ETO work come from its design, not from defects. It was built as a managed package on the Salesforce platform. It uses a declarative rule model, and its quoting data model is optimized for commercial line items rather than engineering structures.<\/pee>\n<div class=\"xpl-subgrid\">\n<div class=\"xpl-subcard\">\n<h3>Depth and breadth of the configuration model<\/h3>\n<pee>Nested bundles with dependencies across multiple levels are where the model gets expensive. Each layer of nesting multiplies the rules needed to keep the configuration valid, so rule maintenance grows faster than the catalog does. The problem usually shows up as catalogs grow to thousands of SKUs, nested bundles, or offerings that combine physical products, services, and subscriptions. At that point the rules engine becomes hard to manage and slow at runtime, which leads to misquotes and manual workarounds. For a deeper look at rule sprawl and maintainability, see <a href=\"https:\/\/experlogix.com\/salesforce-cpq-limitations-complex-products\/\">Salesforce CPQ limitations for configurable products<\/a>.<\/pee><pee>Platform limits make this worse. Large quotes with heavy rule evaluation run within the governor limits shared across the Salesforce org. That&#8217;s why high-volume, highly complex configurations are usually the first to show performance problems.<\/pee><\/div>\n<div class=\"xpl-subcard\">\n<h3>Calculated and derived specifications<\/h3>\n<pee>ETO quoting depends on math: sizing, capacity, pressure drop, cut lengths, material consumption, and derived lead times. Salesforce CPQ&#8217;s declarative rules aren&#8217;t built to be a calculation engine for that kind of work. Teams extend it with QCP JavaScript, Apex, or external spreadsheets. That works, but it moves business logic into code that only developers can maintain, and that code has to be regression-tested every time the catalog changes. Layered workflows, approval chains, and industry-specific compliance rules push built-in logic in the same way. Past a certain point they need custom code, and an automated workflow turns into workarounds and development tickets.<\/pee><\/div>\n<div class=\"xpl-subcard\">\n<h3>Manufacturing output: BOM, routings, and ERP handoff<\/h3>\n<pee>This is the clearest gap. Salesforce CPQ produces a commercial quote, not a production package. A multi-level BOM and routing operations aren&#8217;t native outputs of the quote line editor, and neither is a work breakdown structure (WBS) for project work. Enterprise resource planning (ERP) systems need those structures to release an order. Today, companies typically bridge the gap with custom middleware, manual syncing, or development work that copies ERP data into custom Salesforce tables. Every delay or manual handoff increases the risk of errors, rework, and lost margin. <a href=\"https:\/\/experlogix.com\/salesforce-cpq-manufacturers-nested-bundles-bom\/\">BOMs and routings for manufacturers<\/a> covers the production-output side in more detail.<\/pee><\/div>\n<div class=\"xpl-subcard\">\n<h3>Live cost and availability data<\/h3>\n<pee>Engineered quotes depend on current material costs, component availability, and capacity. When that data lives in ERP and the quote is built in CRM, the quote is only as current as the last sync.<\/pee><\/div>\n<\/div>\n<\/section>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<section class=\"xpl-section\">\n<h2>Other Paths Worth Weighing Honestly<\/h2>\n<pee>There are <a href=\"https:\/\/experlogix.com\/salesforce-cpq-vs-revenue-cloud\/\">three paths<\/a> worth considering, and the right one depends on where your complexity actually sits.<\/pee>\n<ul class=\"xpl-card-grid xpl-card-grid--stack\"><!-- [et_pb_line_break_holder] --><\/p>\n<li><strong>Stay on Salesforce CPQ.<\/strong> This is a legitimate choice if your quoting is mostly CTO within a stable catalog, your customizations are modest, and your renewal costs are acceptable. Salesforce CPQ is end of sale, not end of life. Existing customers can keep using it, renew, add users, and receive support, and Salesforce hasn&#8217;t announced an end-of-life date. The trade-off is that you&#8217;re running a product that no longer gets meaningful new features.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li><strong>Reimplement on Revenue Cloud Advanced (RCA), now part of Agentforce Revenue Management.<\/strong> This is where Salesforce&#8217;s strategic investment has moved. Treat it as a reimplementation, not an upgrade. RCA uses a different data model and configuration approach, so your existing bundles, rules, and QCP logic have to be redesigned rather than moved over as-is. It&#8217;s a reasonable path for organizations whose complexity is commercial and who want to consolidate on the core Salesforce platform.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li><strong>Keep Salesforce CRM and replace the quoting layer with a dedicated product configurator.<\/strong> This fits companies whose hardest problems are configuration depth and manufacturing output, and who don&#8217;t want to disrupt a CRM that&#8217;s working.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/ul>\n<pee>None of these is right for everyone. If your catalog is simple, your revenue is all subscription, or you&#8217;ve already committed to an RCA redesign, a specialized industrial configurator is probably more than you need.<\/pee><\/section>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<section class=\"xpl-section\">\n<h2>How Experlogix CPQ Approaches ETO and CTO Quoting<\/h2>\n<pee>Experlogix CPQ is one example of the third path. You keep Salesforce CRM as the system of record and replace the configuration and quoting layer with a configurator built for industrial complexity. Two things matter here.<\/pee><pee><strong>First, architecture.<\/strong> Experlogix CPQ connects to Salesforce CRM, and data flows in both directions. Reps quote in the familiar CRM interface with access to customer history, account terms, and opportunity context. When quoting doesn&#8217;t depend on copying data into a separate platform and syncing it back, you avoid the stale records, sync failures, and reconciliation work that come with data replication.<\/pee><pee><strong>Second, configuration and manufacturing output.<\/strong> The system enforces constraint logic that prevents impossible builds, automatically highlights dependent options, and calculates derived specifications, so reps don&#8217;t need to be product engineers. Guided selling steers users toward valid configurations. The same rules that validate the configuration during quoting also assemble the BOM and routing. Each selected option maps to its components, subassemblies, and operations, so the multi-level BOM and routing match what was sold, with a WBS for project-based work. Experlogix pushes that structured data directly into Microsoft Dynamics 365 Finance &#038; Supply Chain Management or Business Central. Only configurations the rules engine has validated are sent to ERP.<\/pee><pee>Pricing and scheduling follow the configuration too. Experlogix CPQ can reference live cost data from your ERP and apply markup rules, volume discounts, promotional pricing, and customer-specific terms. It also calculates lead time from configuration choices so reps can set realistic expectations before customers commit.<\/pee><pee>Mixed revenue is handled on the same quote. Equipment, installation, calibration, spares, and extended warranty are bundled together, and the quote data carries into the production order. Administration is low-code and logic-based, which puts more control in the hands of business users while IT maintains governance.<\/pee><\/section>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<section class=\"xpl-section xpl-section--bottom\">\n<h2>The Bottom Line on ETO vs. CTO in Salesforce CPQ<\/h2>\n<pee>Salesforce CPQ models CTO selling well when the set of options is bounded, the BOM already exists, and the output is a commercial quote. It can model ETO selling only with help. ETO requires derived calculations, deeply nested structures, engineering constraints, and a production-ready BOM and routing package that the quote line model was never designed to produce. Most teams close that gap with QCP scripts, middleware, or spreadsheets. Those workarounds become the real cost: dependence on developers, fragile integrations, and regression testing on every catalog change.<\/pee><pee>The end-of-sale status doesn&#8217;t force a decision, but it does change the math. Salesforce CPQ will keep working and keep being supported, but its capabilities won&#8217;t keep growing. If your complexity is moving toward ETO while your platform stands still, the gap will widen on its own.<\/pee><pee>The practical next step is to classify your revenue honestly. Take the last four quarters of closed business and tag each deal as make-to-order, configure-to-order, or engineer-to-order. Then note which deals needed engineering involvement, a manually built BOM, or an offline spreadsheet before the quote could go out. Add up the revenue and margin behind those manual deals. That number, not a vendor comparison chart, tells you whether your quoting layer needs to change and how capable a product configurator you actually need.<\/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 the difference between engineer-to-order and configure-to-order?<\/summary>\n<div class=\"xpl-faq-answer\"><pee>Configure-to-order (CTO) assembles a product from pre-engineered options under defined rules, so the BOM already exists before the sale. Engineer-to-order (ETO) means the sale itself creates new engineering content, such as custom dimensions, derived specifications, and BOM elements that only exist once the customer&#8217;s requirements are defined.<\/pee><\/div>\n<\/details>\n<details class=\"xpl-faq-item\">\n<summary>What is make-to-order?<\/summary>\n<div class=\"xpl-faq-answer\"><pee>Make-to-order (MTO) means the product is standard, but it isn&#8217;t built until an order arrives. Configuration effort is low. The main concerns are lead time, capacity, and production scheduling rather than option logic or engineering design.<\/pee><\/div>\n<\/details>\n<details class=\"xpl-faq-item\">\n<summary>What is variant configuration?<\/summary>\n<div class=\"xpl-faq-answer\"><pee>Variant configuration generates a specific, valid product variant from attributes and rules instead of selecting a pre-built SKU. It&#8217;s the core of CTO quoting. In ETO quoting, it extends to calculating derived values and flagging where engineering review is needed.<\/pee><\/div>\n<\/details>\n<details class=\"xpl-faq-item\">\n<summary>Can Salesforce CPQ model engineer-to-order products?<\/summary>\n<div class=\"xpl-faq-answer\"><pee>Only partly, and usually with custom development. Salesforce CPQ handles bundles, option constraints, and pricing well, but ETO quoting also needs derived calculations, deeply nested structures, and production-ready BOM and routing output. Teams typically fill those gaps with QCP scripts, Apex, middleware, or spreadsheets, and that logic then has to be maintained and regression-tested whenever the catalog changes.<\/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 Quote to the Test<\/span><pee>Quote engineered products without leaving Salesforce<\/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>If you sell machines, systems, or projects rather than SKUs, the difference between engineer-to-order (ETO) and configure-to-order (CTO) determines how your quoting system has to behave. Salesforce CPQ was built around a bundle-and-option model, and that model fits one of those worlds better than the other. Salesforce CPQ is now end of sale and no longer receiving meaningful new feature development, so it&#8217;s worth knowing exactly where the model holds and where it strains. This article explains the difference between ETO, CTO, and make-to-order quoting, what Salesforce CPQ models well, where its design runs into limits, and how to decide what your business actually needs.<\/p>","protected":false},"author":1,"featured_media":348415,"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":[187,194,183,200],"xpl_da_related_topic":[],"class_list":["post-348495","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-quoting-tools","xpl_cpq_related_topic-bom","xpl_cpq_related_topic-manufacturing","xpl_cpq_related_topic-rules-engine","xpl_cpq_related_topic-salesforce"],"acf":[],"_links":{"self":[{"href":"https:\/\/experlogix.com\/fr\/wp-json\/wp\/v2\/posts\/348495","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/experlogix.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/experlogix.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/experlogix.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/experlogix.com\/fr\/wp-json\/wp\/v2\/comments?post=348495"}],"version-history":[{"count":2,"href":"https:\/\/experlogix.com\/fr\/wp-json\/wp\/v2\/posts\/348495\/revisions"}],"predecessor-version":[{"id":348594,"href":"https:\/\/experlogix.com\/fr\/wp-json\/wp\/v2\/posts\/348495\/revisions\/348594"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/experlogix.com\/fr\/wp-json\/wp\/v2\/media\/348415"}],"wp:attachment":[{"href":"https:\/\/experlogix.com\/fr\/wp-json\/wp\/v2\/media?parent=348495"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/experlogix.com\/fr\/wp-json\/wp\/v2\/categories?post=348495"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/experlogix.com\/fr\/wp-json\/wp\/v2\/tags?post=348495"},{"taxonomy":"xpl_cpq_related_topic","embeddable":true,"href":"https:\/\/experlogix.com\/fr\/wp-json\/wp\/v2\/xpl_cpq_related_topic?post=348495"},{"taxonomy":"xpl_da_related_topic","embeddable":true,"href":"https:\/\/experlogix.com\/fr\/wp-json\/wp\/v2\/xpl_da_related_topic?post=348495"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}