Odoo 19 Product Setup: Variants, Import Identity and Publication Checks
Prepare product data, select variant creation modes and control repeat imports with External IDs before checking website publication.

Applicability
For Odoo 19, subject to the plan, hosting, apps, permissions and provider eligibility described below; not every database has these enabled.
Research method
Research based on Odoo 19 and applicable official policies; no new Odoo operation, payment or messaging tests.
Define what identifies one sellable option before creating products. A Hong Kong apparel shop that creates a new template for each colour can make later imports and stock checks harder. This Odoo 19 workflow is based on official documentation; the sample was not imported.
Contents
- Prepare the product data first
- Create the product and check publication
- Attributes, variant modes and price extras
- Import mapping and duplicate prevention
- Troubleshoot visibility, pricing and duplicates
Prepare the product data first
Fictional item: a cotton shirt at HK$180, red/blue, S/M; size M adds HK$20. Use template External ID apaa_demo_shirt, with a stable SKU for each actual variant. SKU, barcode and External ID serve different purposes and are not interchangeable.
Confirm name, description, sales-price currency, tax settings, product type, inventory tracking, website category and image rights. A website category organizes customer browsing and differs from the internal product category. Translating a name should not create another product template.
Create the product and check publication
The documented frontend entry is Website → New → Product; the backend entry is Website → eCommerce → Products. Enter the name, price and required product settings, then add images and website copy. A stocked physical item and a service need suitable types and inventory policies; their names do not define fulfilment behaviour.
Inspect Unpublished/Published on the website product page, or Is Published in the backend Sales tab's Ecommerce shop section. Check the actual state after creation or import rather than assuming everything is automatically published. Verify the correct website, stock/visibility conditions and options as a signed-out visitor.
Attributes, variant modes and price extras
If not enabled, use Sales → Configuration → Settings, enable Variants under Product Catalog and save with the appropriate configuration access. Create colour and size under Sales → Configuration → Attributes and attach them to the template. Choose the creation mode first:
| Mode | Documented behaviour | Decision question |
|---|---|---|
| Instantly | Creates combinations when values are added | Will staff manage every combination? |
| Dynamically | Creates a variant when its combination is used on a sales order | Can downstream operations handle on-demand creation? |
| Never | Does not create separate purchasable variants | Is this information rather than a separately stocked item? |
Two colours times two sizes gives four combinations in Instantly mode; it is not the result of every mode. Multi-checkbox display requires Never. The documentation warns that creation mode cannot be edited after an attribute is added to a product. Decide before rollout rather than casually deleting used variants to switch behaviour.
The fictional M-size price is HK$180 + HK$20 = HK$200. Actual display also depends on pricelist, discount, currency and taxes. Check barcode and stock per variant; template totals do not mean each size is available.
For invalid combinations, use the attribute value's Exclude for configuration for the relevant template/values rather than accepting an order and cancelling later. The Variants button shows created variants. The quotation product configurator should use the same attributes and price extras; define one valid and one excluded combination to check that website and sales options agree.
Import mapping and duplicate prevention
Use XLSX/CSV through the list's import entry and prepare fields from the documented template. For an update, export a small existing set with import-compatible fields and preserve External IDs. An established External ID identifies the record to update; missing or newly invented IDs may create records. Matching names do not guarantee deduplication.
Illustrative preparation data, not a verified ready-to-import file:
| External ID | Name | Sales Price |
|---|---|---|
| apaa_demo_shirt | Cotton shirt | 180 |
Map attributes and values to the required relational fields; do not assume any comma-separated string will be interpreted correctly. Use Test to inspect formatting, missing references and failing rows before import. Passing Test does not establish that prices, variants, stock and website presentation satisfy the business.
Troubleshoot visibility, pricing and duplicates
For an absent product, inspect website selection, publication, sales settings and visibility. For an unexpected price, check currency/pricelist, the selected variant's extra price and tax display before changing the template base price. For duplicates, stop repeated imports, preserve source files and the External ID mapping, and distinguish templates from variants before repairing them.
Completion means staff can map each SKU to its variant, identify which record a repeat import updates and show customers the intended prices/options. Continue with payment and delivery responsibilities to complete the selling workflow.
Sources
- Odoo 19 eCommerce Products
Frontend/backend creation and explicit publication controls.
Source checked
- Odoo 19 Product variants
Attributes, creation modes, price extras and mode-change restrictions.
Source checked
- Odoo 19 Export and import data
Mapping, Test, External IDs and repeated-import behaviour.
Source checked