{"id":147,"date":"2026-10-26T09:00:00","date_gmt":"2026-10-26T08:00:00","guid":{"rendered":"https:\/\/yindle.com\/?p=147"},"modified":"2026-09-20T21:40:42","modified_gmt":"2026-09-20T19:40:42","slug":"configuratoropties-echte-woocommerce-producten","status":"publish","type":"post","link":"https:\/\/yindle.com\/en\/modelling-configurator-options-as-actual-woocommerce-products\/","title":{"rendered":"Modelling configurator options as actual WooCommerce products"},"content":{"rendered":"<p><strong>Model a configurator option as an actual WooCommerce product when that choice has its own stock, price, tax, SKU or order handling.<\/strong> Store simple preferences as metadata, but add physical or separately managed components as their own cart lines. This keeps the catalogue and order chain authoritative.<\/p>\n<p>A configurator may visually look like a single product while the actual configuration consists of several items. If every choice disappears into one text field, stock cannot be reserved per component and the warehouse cannot see what to pick. Conversely, turning every colour or text label into a product makes the catalogue unnecessarily complex. The boundary follows the operational meaning.<\/p>\n<h2>Use a decision rule for each option<\/h2>\n<figure class=\"wp-block-table\">\n<table>\n<thead>\n<tr>\n<th>Does the option have\u2026<\/th>\n<th>Model as<\/th>\n<th>Example<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Its own SKU and stock<\/td>\n<td>Separate product line<\/td>\n<td>Mounting kit or extra panel<\/td>\n<\/tr>\n<tr>\n<td>Its own tax or shipping behaviour<\/td>\n<td>Separate product line<\/td>\n<td>Installation service or heavy component<\/td>\n<\/tr>\n<tr>\n<td>Only a customer preference<\/td>\n<td>Validated metadata<\/td>\n<td>Handle position<\/td>\n<\/tr>\n<tr>\n<td>Free-form personalisation text<\/td>\n<td>Bounded metadata<\/td>\n<td>Short engraving<\/td>\n<\/tr>\n<tr>\n<td>A choice that determines the main variant<\/td>\n<td>Product variation<\/td>\n<td>Standard size and base colour<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n<p>Also ask who manages the option. If operations must be able to change its price or stock in WooCommerce without changing the configurator, that points towards an actual product. If the choice only helps display production instructions and is never sold separately, metadata may be more logical.<\/p>\n<h2>Keep the customer-facing view as one whole<\/h2>\n<p>Separate cart lines do not have to look like disconnected, confusing products. Link them to a main line, group them visually and make clear that they belong to the configuration. Prevent customers from removing a required component separately or changing its quantity independently when that is technically not allowed.<\/p>\n<p>Calculate totals using the current products' WooCommerce prices. Do not copy an old price from the browser. Check on the server that a selected product is actually permitted in this configurator and the requested quantity is within the limits. For more on the order chain that follows, see <a href=\"\/en\/online-store-erp-integration\/\">reliably integrating an online store and ERP<\/a>.<\/p>\n<p>Test discount and tax rules against the chosen structure. A coupon for the main product need not automatically apply to an installation service; a free add-on may still need to remain an actual zero-price line so the warehouse can see it. Have the responsible specialists determine the commercial and tax setup, and ensure the technology consistently applies their chosen rules.<\/p>\n<h2>Fictional example: a modular workbench<\/h2>\n<p>Workshop supplier Staal &amp; Vorm sells a workbench with optional drawers, wheels and an engraved nameplate. The drawer cabinet and wheel set have their own SKUs, stock and picking locations. They are therefore added as linked product lines. The engraving text remains bounded metadata attached to the nameplate.<\/p>\n<p>In the basket, customers see one configuration block containing the main product and components. When they increase the number of workbenches from one to two, the required wheel sets scale with them. A one-off engraving instruction is not simply doubled; the interface asks whether both nameplates should have the same text. In the warehouse, all actual items appear as separate picking lines.<\/p>\n<p>When transferred to the ERP, SKUs and quantities remain recognisable, while the configuration group can be included as a relationship. An integration such as <a href=\"\/en\/connect\/\">Yindle Connect<\/a> can translate that final structure into the back-end systems in a controlled way.<\/p>\n<p>Staal &amp; Vorm also stores a readable configuration summary on the order. That summary helps customer service and the customer, but does not replace structured SKUs. A product label changed later can otherwise make a historical order difficult to understand. Keep both stable identification and the label displayed at the time of ordering.<\/p>\n<h2>Data model checklist<\/h2>\n<ul>\n<li>For each choice, determine whether stock, price, tax or fulfilment is independent.<\/li>\n<li>Use stable product and variation IDs, rather than visible labels alone.<\/li>\n<li>Only permit add-on products approved in advance.<\/li>\n<li>Revalidate quantities and availability on the server.<\/li>\n<li>Preserve the relationship between the main product and components in both cart and order.<\/li>\n<li>Define removal, quantity changes and session recovery for the group as a whole.<\/li>\n<li>Show customers and the warehouse an understandable configuration summary.<\/li>\n<li>Test a price change, an out-of-stock component and a removed option.<\/li>\n<\/ul>\n<p>Create a small domain model on paper before drawing the interface. This reveals which choices are actually products, variants, services or instructions. If standard plugins cannot reliably support this model, the discussion of <a href=\"\/en\/custom-vs-off-the-shelf-software\/\">custom software or standard software<\/a> helps you choose the right boundary.<\/p>\n<p>Include returns and cancellations in that outline, even if they fall outside the initial configurator screens. If one component is returned, it must remain clear which main configuration it belonged to and whether the other components are still usable. Design that relationship before orders are created; reconstructing it from descriptions afterwards is prone to errors.<\/p>\n<p><a href=\"\/en\/contact\/\">Have Yindle develop the data model for your product configurator.<\/a><\/p>\n<p>The described model is available in <a href=\"\/en\/downloads\/yindle-kit-configurator\/\">Yindle Kit Configurator<\/a>. Also read <a href=\"\/en\/woocommerce-configurators-with-real-products\/\">how to build a configurator with real products<\/a> before connecting options to your catalogue.<\/p>","protected":false},"excerpt":{"rendered":"<p>Use actual products for operational components and metadata for choices without an independent commercial role.<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-147","post","type-post","status-publish","format-standard","hentry","category-e-commerce"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Configuratoropties als WooCommerce-producten<\/title>\n<meta name=\"description\" content=\"Bepaal wanneer een configuratoroptie een echte WooCommerce-productregel moet zijn voor voorraad, prijs, belasting en orderafhandeling.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/yindle.com\/en\/modelling-configurator-options-as-actual-woocommerce-products\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Configuratoropties als WooCommerce-producten\" \/>\n<meta property=\"og:description\" content=\"Bepaal wanneer een configuratoroptie een echte WooCommerce-productregel moet zijn voor voorraad, prijs, belasting en orderafhandeling.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/yindle.com\/en\/modelling-configurator-options-as-actual-woocommerce-products\/\" \/>\n<meta property=\"og:site_name\" content=\"Yindle\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-26T08:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/yindle.com\/wp-content\/themes\/yindle\/assets\/images\/yindle-social-share.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Yindle\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Yindle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/yindle.com\\\/en\\\/modelling-configurator-options-as-actual-woocommerce-products\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/yindle.com\\\/en\\\/modelling-configurator-options-as-actual-woocommerce-products\\\/\"},\"author\":{\"@id\":\"https:\\\/\\\/yindle.com\\\/en\\\/#organization\"},\"headline\":\"Configuratoropties als echte WooCommerce-producten modelleren\",\"datePublished\":\"2026-10-26T08:00:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/yindle.com\\\/en\\\/modelling-configurator-options-as-actual-woocommerce-products\\\/\"},\"wordCount\":742,\"publisher\":{\"@id\":\"https:\\\/\\\/yindle.com\\\/en\\\/#organization\"},\"articleSection\":[\"E-commerce\"],\"inLanguage\":\"en-GB\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/yindle.com\\\/en\\\/modelling-configurator-options-as-actual-woocommerce-products\\\/\",\"url\":\"https:\\\/\\\/yindle.com\\\/en\\\/modelling-configurator-options-as-actual-woocommerce-products\\\/\",\"name\":\"Configuratoropties als WooCommerce-producten\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/yindle.com\\\/en\\\/#website\"},\"datePublished\":\"2026-10-26T08:00:00+00:00\",\"description\":\"Bepaal wanneer een configuratoroptie een echte WooCommerce-productregel moet zijn voor voorraad, prijs, belasting en orderafhandeling.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/yindle.com\\\/en\\\/modelling-configurator-options-as-actual-woocommerce-products\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/yindle.com\\\/en\\\/modelling-configurator-options-as-actual-woocommerce-products\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/yindle.com\\\/en\\\/modelling-configurator-options-as-actual-woocommerce-products\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/yindle.com\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Configuratoropties als echte WooCommerce-producten modelleren\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/yindle.com\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/yindle.com\\\/en\\\/\",\"name\":\"Yindle\",\"description\":\"Software voor e-commerce en klantprocessen\",\"publisher\":{\"@id\":\"https:\\\/\\\/yindle.com\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/yindle.com\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/yindle.com\\\/en\\\/#organization\",\"name\":\"Yindle B.V.\",\"url\":\"https:\\\/\\\/yindle.com\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/yindle.com\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/yindle.com\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/yindle-site-icon.png\",\"contentUrl\":\"https:\\\/\\\/yindle.com\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/yindle-site-icon.png\",\"width\":512,\"height\":512,\"caption\":\"Yindle B.V.\"},\"image\":{\"@id\":\"https:\\\/\\\/yindle.com\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"legalName\":\"Yindle B.V.\",\"address\":{\"@type\":\"PostalAddress\",\"streetAddress\":\"Markt 43\",\"postalCode\":\"5554 CA\",\"addressLocality\":\"Valkenswaard\",\"addressCountry\":\"NL\"},\"identifier\":{\"@type\":\"PropertyValue\",\"propertyID\":\"KvK\",\"value\":\"99695367\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Configurator options as WooCommerce products","description":"Determine when a configurator option should be an actual WooCommerce product line for stock, price, tax and order handling.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/yindle.com\/en\/modelling-configurator-options-as-actual-woocommerce-products\/","og_locale":"en_GB","og_type":"article","og_title":"Configuratoropties als WooCommerce-producten","og_description":"Bepaal wanneer een configuratoroptie een echte WooCommerce-productregel moet zijn voor voorraad, prijs, belasting en orderafhandeling.","og_url":"https:\/\/yindle.com\/en\/modelling-configurator-options-as-actual-woocommerce-products\/","og_site_name":"Yindle","article_published_time":"2026-10-26T08:00:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/yindle.com\/wp-content\/themes\/yindle\/assets\/images\/yindle-social-share.png","type":"image\/png"}],"author":"Yindle","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Yindle","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/yindle.com\/en\/modelling-configurator-options-as-actual-woocommerce-products\/#article","isPartOf":{"@id":"https:\/\/yindle.com\/en\/modelling-configurator-options-as-actual-woocommerce-products\/"},"author":{"@id":"https:\/\/yindle.com\/en\/#organization"},"headline":"Configuratoropties als echte WooCommerce-producten modelleren","datePublished":"2026-10-26T08:00:00+00:00","mainEntityOfPage":{"@id":"https:\/\/yindle.com\/en\/modelling-configurator-options-as-actual-woocommerce-products\/"},"wordCount":742,"publisher":{"@id":"https:\/\/yindle.com\/en\/#organization"},"articleSection":["E-commerce"],"inLanguage":"en-GB"},{"@type":"WebPage","@id":"https:\/\/yindle.com\/en\/modelling-configurator-options-as-actual-woocommerce-products\/","url":"https:\/\/yindle.com\/en\/modelling-configurator-options-as-actual-woocommerce-products\/","name":"Configurator options as WooCommerce products","isPartOf":{"@id":"https:\/\/yindle.com\/en\/#website"},"datePublished":"2026-10-26T08:00:00+00:00","description":"Determine when a configurator option should be an actual WooCommerce product line for stock, price, tax and order handling.","breadcrumb":{"@id":"https:\/\/yindle.com\/en\/modelling-configurator-options-as-actual-woocommerce-products\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/yindle.com\/en\/modelling-configurator-options-as-actual-woocommerce-products\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/yindle.com\/en\/modelling-configurator-options-as-actual-woocommerce-products\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/yindle.com\/en\/"},{"@type":"ListItem","position":2,"name":"Configuratoropties als echte WooCommerce-producten modelleren"}]},{"@type":"WebSite","@id":"https:\/\/yindle.com\/en\/#website","url":"https:\/\/yindle.com\/en\/","name":"Yindle","description":"Software for e-commerce and customer processes","publisher":{"@id":"https:\/\/yindle.com\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/yindle.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/yindle.com\/en\/#organization","name":"Yindle B.V.","url":"https:\/\/yindle.com\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/yindle.com\/en\/#\/schema\/logo\/image\/","url":"https:\/\/yindle.com\/wp-content\/uploads\/2026\/09\/yindle-site-icon.png","contentUrl":"https:\/\/yindle.com\/wp-content\/uploads\/2026\/09\/yindle-site-icon.png","width":512,"height":512,"caption":"Yindle B.V."},"image":{"@id":"https:\/\/yindle.com\/en\/#\/schema\/logo\/image\/"},"legalName":"Yindle B.V.","address":{"@type":"PostalAddress","streetAddress":"Markt 43","postalCode":"5554 CA","addressLocality":"Valkenswaard","addressCountry":"NL"},"identifier":{"@type":"PropertyValue","propertyID":"KvK","value":"99695367"}}]}},"_links":{"self":[{"href":"https:\/\/yindle.com\/en\/wp-json\/wp\/v2\/posts\/147","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/yindle.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/yindle.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/yindle.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/yindle.com\/en\/wp-json\/wp\/v2\/comments?post=147"}],"version-history":[{"count":1,"href":"https:\/\/yindle.com\/en\/wp-json\/wp\/v2\/posts\/147\/revisions"}],"predecessor-version":[{"id":680,"href":"https:\/\/yindle.com\/en\/wp-json\/wp\/v2\/posts\/147\/revisions\/680"}],"wp:attachment":[{"href":"https:\/\/yindle.com\/en\/wp-json\/wp\/v2\/media?parent=147"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/yindle.com\/en\/wp-json\/wp\/v2\/categories?post=147"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/yindle.com\/en\/wp-json\/wp\/v2\/tags?post=147"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}