Learn how to create a Wix store product with customizable options like colors, sizes, or other variants, allowing customers to select their preferences when purchasing.
The goal of this step is not just to create a product, but to help the user create a complete, ready-to-sell product. Before jumping to the API call in STEP 1, run a short conversation to fill the important gaps — but keep it brief.
CRITICAL — ASK AT MOST 1–2 FOLLOW-UP QUESTIONS. Never interrogate the user. Ask no more than one or two follow-up questions total before creating the product. If the user is disengaged or says "just create it", proceed with sensible generated values rather than asking again.
If the user hasn't named a product yet, open the conversation with this question up front:
What product would you like to create?
If the user already gave you product details, skip the opening question and go straight to the gap check in 0b.
Offer a starting path. When opening the conversation (and the user hasn't already committed to a method), let them choose how to provide the product details:
"You can either upload a product image and I'll create the product info from it, or just describe the product in text and I'll take it from there. Which would you prefer?"
Count this toward the 1–2 question budget. If you ask the image-vs-text question, keep the remaining follow-ups to one so the total conversation stays short.
Mandatory inputs are name and price. Check what the user has already provided:
Case 1 — a mandatory input is missing (no name and/or no price): Ask for the missing mandatory field(s), and in the same message offer to generate it for them. Combine both missing fields into a single question. For example:
"What would you like to call this product, and what price should I set? I can also suggest a name and price for you if you'd like."
If the user asks you to generate them (or doesn't provide them after being asked once), generate a sensible name and price based on the product context and proceed — do not ask a second time.
Case 2 — both mandatory inputs are provided: You may ask one enrichment question to make the product more complete. Ask about whichever is most relevant, and offer to do the work for them. For example:
"Does this product come in different sizes or colors (e.g. options customers choose from)? And would you like me to generate a SEO description and/or info sections to make it ready to sell?"
Do NOT ask about options AND enrichment as two separate rounds. Bundle them into the single enrichment question above so the total stays within the 1–2 question budget.
CRITICAL — ONCE A PRODUCT-CREATION CONVERSATION HAS STARTED, STAY ON IT. Do not switch to other topics, suggest unrelated tasks, or start new workflows until the product has actually been created (saved) via STEP 1 — unless the user explicitly asks to do something else. If the user goes off-topic, briefly answer if needed, then steer back to finishing and saving the product.
After the product is saved, you're free to suggest next steps (e.g. adding more products, setting up the store).
When Creating a product YOU MUST leave the physicalProperties and all other non required fields empty. for example: "physicalProperties": {}. In most cases the product will be a physical product, and therefore MUST have the empty physicalProperties object ("physicalProperties": {}) and a corresponding "productType": "PHYSICAL".
CRITICAL: variantsInfo is Always Required
variantsInfo.variants must contain at least one variant, even for simple products without options. Omitting it causes: "variantsInfo must not be empty".
CRITICAL: Description FormatIf you include a description, it MUST use Wix's rich text nodes structure, NOT a plain string. Plain strings will cause "Expected an object" API errors.
WRONG: "description": "Your text here" CORRECT:
CRITICAL: Media Format
To add product images, use the media object with main for the primary image and itemsInfo.items for additional gallery images. YOU MUST add an image to each product.
Important: The V3 Products API requires URLs for media, not media IDs. Even when using files from the Media Manager, you must use the full wixstatic.com URL.
Option 1: Using External URLs Directly
You can reference images directly from external URLs that allow hotlinking (e.g., Unsplash, Pexels):
Warning: Some external URLs may fail if the source server blocks requests or has hotlink protection. For reliable media, use Option 2.
Option 2: Using Media Manager (Recommended)
For reliable, permanent media storage, first upload the image to the site's Media Manager, then use the returned wixstatic.com URL.
Step 1: Upload the image to Media Manager using the Import File API:
Response includes the wixstatic.com URL:
Note: Wait for operationStatus to become READY before using the media. You can verify by calling the List Files API (GET /site-media/v1/files).
Step 2: Use the wixstatic.com URL (not the ID) when creating the product:
Why use Media Manager? External URLs can fail if the source server blocks requests. Once uploaded to Media Manager, the file is permanently stored on Wix servers and the wixstatic.com URL is always reliable.
CRITICAL: Options StructureEach option MUST include:
optionRenderType: "TEXT_CHOICES" for text-based choiceschoicesSettings: Object containing the choices arraychoicesSettings.choices: Array with at least one choicechoiceType: "CHOICE_TEXT" and name propertiesCRITICAL: Variants Structure
optionChoiceNames structure with optionName, choiceName, and renderTypeprice.actualPrice.amount with string valuesvisible: true for variants you want customers to see and purchasevisible: false for variants that exist but should be hidden from customersThe Create Product API can handle creating customizations and choices in a single call. There's no need to separately check for existing customizations, create new ones, or add choices to them—the API handles all of this automatically:
After Creating the product, verify that the options appear correctly in the store and that customers can select different variants.
Need to Update This Product Later?
See Update Product with Options for updating existing products.
Important: All update operations (PATCH) require the current product.revision value. Always GET the product first to obtain the revision before updating.
choicesSettings must not be empty. This can appear in several forms:
"product is invalid: options [at index 0] is invalid: value choicesSettings must not be empty""product is invalid: options [at index 0] is invalid: value choicesSettings must not be empty" with "violatedRule":"REQUIRED_ONE_OF_FIELD""choicesSettings must not be empty" with field violations showing "supported":["choicesSettings"]choicesSettings object with the full array of choices when creating a product with options. Every option MUST have a complete choicesSettings structure with at least one choice, even when using an existing customization.Common Causes:
Example of correct choicesSettings structure:
What NOT to do:
"product is invalid: options [at index 0] is invalid: optionSettings.choicesSettings is invalid: choices has size 0, expected 1 or more" or "choices must not be empty".optionSettings.choicesSettings instead of the correct choicesSettings directly under the option.WRONG Structure (causes the error):
CORRECT Structure (use this instead):
Key Points:
choicesSettings directly under the option object, NOT nested under optionSettingschoicesSettings.choices array MUST contain at least one choicechoiceType and name propertiesCreating a Wix store product with options involves understanding the relationship between store-wide customizations and product-specific options and variants. The key is to ensure consistency between customization definitions, product options, and product variants.
By following this recipe and being aware of the common pitfalls, you can successfully create a Wix store product with options.
Last updated: 7 July 2026