{"section":"tutorials","requestedLocale":"en","requestedSlug":"assembly-options","locale":"en","slug":"assembly-options","path":"docs/en/tutorials/catalog/custom-product-attributes/assembly-options.md","branch":"main","content":"> ⚠️ This feature is only available for stores developed using [VTEX IO](https://vtex.com/us-en/store-framework/). Before proceeding, you need to [install and configure Product Customizer](https://developers.vtex.com/vtex-developer-docs/docs/vtex-product-customizer) in your store. \n\nAn assembly option is an [attachment](/en/docs/tutorials/what-is-an-attachment) for complex scenarios, such as product customization, in which you need to manage different product combinations, quantity, additional items, costs, and product inventory management.\n\nIn the example below, a store offers multiple assembly options for the Custom Bell product. These options are shown on the product page, where the customer can select the desired options. Depending on the choices, there may be an additional cost for the SKU.\n\n![assembly-option-EN](https://cdn.statically.io/gh/vtexdocs/help-center-content/refs/heads/main/docs/en/tutorials/catalog/custom-product-attributes/assembly-options_1.png)\n\nYou can combine [SKUs](/en/docs/tutorials/what-is-an-sku) to provide assembly options, such as the Bells add-ons Roman or the Bells add-ons 1-3 lines in the example above. If an item is out of stock, it will be shown as unavailable.\n\nThis article will explain how to start using Assembly Options in your store.\n\n## Implementing Assembly Options\n\nThere are two ways to implement Assembly Options: using the [Assembly Options app](#app-assembly-options) or the native Catalog [Custom Product Attributes](#custom-product-attributes) interface.\n\n> ⚠️ If you implement Assembly Options in a [seller account](/en/docs/tutorials/what-is-a-seller), the product customization options will be displayed to your customers at checkout. If you want the options to be displayed on the product page, you need to install the app in a [marketplace account](/en/docs/tutorials/what-is-a-marketplace).\n\n### Assembly Options App\n\nThe [Assembly Options](https://apps.vtex.com/vtex-admin-assembly-options/p) app, available for stores developed with [VTEX IO](https://vtex.com/us-en/store-framework/), provides an interface for configuring and managing custom options. In this case, the assembly option syntax and attachment are automatically generated. Please refer to the [Assembly Options App](/en/docs/tutorials/assembly-options-app) user guide to learn more about the app.\n\n### Custom Product Attributes\n\nTo create Assembly Options using Attachments in VTEX Admin, you must manually create a [syntax](#assembly-options-syntax) to define the product customization rules. Then, enter that syntax in the [attachment configuration](#attachment-settings). Check out the following sections for more details.\n\n#### Assembly Options syntax\n\nTo implement an assembly option, first you need to create a syntax, such as the one below, by changing each value according to your scenario.\n\n`[0-3]#10000[1-2][1]pricetable1;#20000[0-2][0]pricetable2;#30000[0-2][0]pricetable3`\n\nThe first elements `[x-y]` are group rules, and between each `#` and `;` are SKU component rules. Learn more about each segment of this syntax in the table below.\n\n| Segment      | Description        |\n| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **\\[0-3\\]**#10000\\[1-2\\]\\[1\\]pricetable1;#20000\\[0-2\\]\\[0\\]pricetable2;#30000\\[0-2\\]\\[0\\]pricetable3      | Minimum and maximum quantity of items that can be selected from the group. The first segment defines how many choices  this assembly accepts in total. `[0-3]` means that you can select a minimum of zero items and a maximum of three. If the value is `[1-1]`, it  means that you can only select one item out of all the options. |\n| \\[0-3\\]#**10000**\\[1-2\\]\\[1\\]pricetable1;**#20000**\\[0-2\\]\\[0\\]pricetable2;#**30000**\\[0-2\\]\\[0\\]pricetable3 | After each `#`, you must include the SKU ID of the component. You must use at least one SKU in the assembly options.       |\n| \\[0-3\\]#10000**\\[1-2\\]**\\[1\\]pricetable1;#20000**\\[0-2\\]**\\[0\\]pricetable2;#30000**\\[0-2\\]**\\[0\\]pricetable3 | This segment defines the minimum and maximum quantity of each SKU that the end customer can select. If the value is `[0-1]`, it means that there can be up to one of this SKU.      |\n| \\[0-3\\]#10000\\[1-2\\]**\\[1\\]**pricetable1;#20000\\[0-2\\]**\\[0\\]**pricetable2;#30000\\[0-2\\]**\\[0\\]**pricetable3 | This segment defines the default selected quantity for each SKU.  |\n| \\[0-3\\]#10000\\[1-2\\]\\[1\\]**pricetable1**;#20000\\[0-2\\]\\[0\\]**pricetable2**;#30000\\[0-2\\]\\[0\\]**pricetable3** | The final segment indicates the price table for each item.  | \n\n![assembly-option-exemplo-EN](https://cdn.statically.io/gh/vtexdocs/help-center-content/refs/heads/main/docs/en/tutorials/catalog/custom-product-attributes/assembly-options_2.png)\n\n#### Attachment Settings\n\nTo add an Assembly Option, you  need to have an attachment already created. Check the article [Adding an attachment](/en/docs/tutorials/adding-an-attachment) to learn how to create one.\n\nAfter adding an attachment and [associating it with an SKU](/en/docs/tutorials/adding-an-attachment#associating-the-attachment-with-a-sku), follow the steps below to configure the Assembly Option.\n\n1. In the VTEX Admin, go to __Catalog__, or type __Catalog__ in the search bar at the top of the page.\n2. Click **Custom Product Attributes**.\n3. In the **Service and SKUs** tab, choose the attachment to which you want to add the Assembly option and click `Modify`.\n4. In the  **Permitted Values** field, insert the syntax you  created, as described in the [Assembly Options syntax](#assembly-options-syntax) section.\n5. Click `Save`."}