{"id":17123,"date":"2026-06-02T12:56:52","date_gmt":"2026-06-02T10:56:52","guid":{"rendered":"https:\/\/7learnings.com\/?post_type=docs&#038;p=17123"},"modified":"2026-06-11T14:23:20","modified_gmt":"2026-06-11T12:23:20","slug":"product-groups","status":"publish","type":"docs","link":"https:\/\/7l-dev.mr2-media.de\/de\/docs\/product-groups\/","title":{"rendered":"Product Groups"},"content":{"rendered":"<p>Product Groups give products, that belong together, one identifier in order to be optimized together. This helps keeping price distances within the group logical.<\/p>\n<p>Example<\/p>\n<ul>\n<li>Aspirin Complex 20mg<\/li>\n<li>Aspirin Complex 40mg<\/li>\n<li>Aspirin Complex 60mg<\/li>\n<\/ul>\n<h2 id=\"typical-issue-with-product-groups\"><a class=\"header\" href=\"#typical-issue-with-product-groups\">Typical issue with product groups<\/a><\/h2>\n<p>The\u00a0<strong>Prices<\/strong>\u00a0of the products in a product group should be connected\u00a0<em>Example: If the price of &#8222;Aspirin Complex 20mg&#8220; is going down 10%, so should the price of &#8222;Aspirin Complex 40mg&#8220; to avoid a lower price per mg of the 20mg pack<\/em><\/p>\n<h2 id=\"product-attribute-data-feed\"><a class=\"header\" href=\"#product-attribute-data-feed\">Product Attribute data feed<\/a><\/h2>\n<p>To better handle product groups, we ask for the column &#8222;product_group_id&#8220; in the product attribute feed.<\/p>\n<div class=\"table-wrapper\">\n<table>\n<thead>\n<tr>\n<th><strong>Column<\/strong><\/th>\n<th><strong>Data Types<\/strong><\/th>\n<th><strong>Description<\/strong><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>product_id<\/td>\n<td>Text<\/td>\n<td>Unique product identifier<\/td>\n<\/tr>\n<tr>\n<td>product_group_id<\/td>\n<td>Text<\/td>\n<td>Unique group identifier<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>This data feed enables to optimize the group together.<\/p>\n<h2 id=\"optimization-example\"><a class=\"header\" href=\"#optimization-example\">Optimization: Example<\/a><\/h2>\n<p>This rule sets the bundle price at a multiple of the price of the individual products.<\/p>\n<p><strong>Example<\/strong><\/p>\n<div class=\"table-wrapper\">\n<table>\n<thead>\n<tr>\n<th><strong>Product Name<\/strong><\/th>\n<th><strong>Product ID<\/strong><\/th>\n<th><strong>Product Group<\/strong><\/th>\n<th><strong>Price Change<\/strong><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Aspirin Complex 20mg<\/td>\n<td>660020<\/td>\n<td>PG6600<\/td>\n<td>+13%<\/td>\n<\/tr>\n<tr>\n<td>Aspirin Complex 40mg<\/td>\n<td>660040<\/td>\n<td>PG6600<\/td>\n<td>+13%<\/td>\n<\/tr>\n<tr>\n<td>Aspirin Complex 60mg<\/td>\n<td>660060<\/td>\n<td>PG6600<\/td>\n<td>+13%<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h2 id=\"further-details\"><a class=\"header\" href=\"#further-details\">Further Details<\/a><\/h2>\n<p>Sometimes, you will have a logical product group like in our Aspirin example, but you still might want the prices to diverge, e.g. because you have separate suppliers for some of the products with independently changing purchase prices. In this case, if you still generally want to use the product group, we would recommend incorporating the supplier into the product group definition so the products with the same supplier can still move together.<\/p>\n<p>The product group moving by the same percentage supersedes other rules if they should be at odds.<\/p>\n<p>If you optimize a subset of the product group in a separate optimization, this will break the common pricing of the products, so be aware of that. If you intend a different steering for some products within a product group, you can achieve that by applying a different target steering within the same optimization.<\/p>\n","protected":false},"parent":0,"template":"","meta":{"_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"","_seopress_news_disabled":"","_seopress_video_disabled":"","_seopress_video":[],"_seopress_pro_schemas_manual":[],"_seopress_pro_rich_snippets_disable_all":"","_seopress_pro_rich_snippets_disable":[],"_seopress_pro_schemas":[]},"doc_categories":[123],"class_list":["post-17123","docs","type-docs","status-publish","hentry","doc_categories-optimizations"],"_links":{"self":[{"href":"https:\/\/7l-dev.mr2-media.de\/de\/wp-json\/wp\/v2\/docs\/17123","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/7l-dev.mr2-media.de\/de\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/7l-dev.mr2-media.de\/de\/wp-json\/wp\/v2\/types\/docs"}],"wp:attachment":[{"href":"https:\/\/7l-dev.mr2-media.de\/de\/wp-json\/wp\/v2\/media?parent=17123"}],"wp:term":[{"taxonomy":"doc_categories","embeddable":true,"href":"https:\/\/7l-dev.mr2-media.de\/de\/wp-json\/wp\/v2\/doc_categories?post=17123"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}