Odoo Product Import Template Builder (Variants)
An Odoo product import needs a name, the appropriate product type and tax settings, plus stable external IDs for later updates. Create attributes and values before templates reference them, then check variant combinations, internal references and barcodes. Build a file for the selected model and version, inspect the validation report and test a small 3-row sample before importing the catalogue.
Rows ready for import
$0.00
Show breakdown
Calculation breakdown
- Valid rows
- $0.00
| Valid rows | $0.00 |
|---|
Choose a versioned import layout, map your columns and resolve every blocking error before downloading.
At a glance
- Layouts
- Odoo 18 product templates and updates to existing product variants
- Input
- paste or upload your current list, or generate SKU planning rows from attributes
- Validation
- required fields, unique IDs, referential integrity, lengths, types, GTIN check digits
- Output
- CSV or XLSX in the import screen's column order, plus a validation report and import notes
- Import order
- attributes and classes first, then items, then variants or matrix children
- Note
- Nothing is uploaded; the file is built and validated in your browser
How it is calculated
Match source columns to the selected layout, apply explicit defaults and validate every output row. Required fields, identifiers, declared references, types and barcodes must pass before download.
source rows → column mapping → defaults → validation → download- Rates as at 2026-09-07 from Gs1
Why do product imports fail?
Spreadsheet data often lacks the relationships the target system requires. Codes can collide after whitespace and case normalisation; attribute values may not exist yet; and tax codes or units may differ from the tenant’s configured values. The builder checks the selected layout against the reference lists you declare. It cannot query the tenant or reproduce every server-side rule, so a successful validation report must still be followed by a native test import.
What does an Odoo product import need?
For Odoo 18, select Goods or Service; inventory tracking is a separate Track Inventory flag. A product template carries the sales and purchase settings, taxes, category and attribute lines. Import the attributes and values first, using their external IDs. Each attribute line also needs its own stable External ID: omitting it can create extra lines and variants on re-import. When updating existing lines, retain their actual exported IDs. Additional attributes use continuation rows with the parent fields left blank; the builder does not apply parent defaults or generate an ID on those rows.
Odoo generates variants from the template’s attribute combinations. To update a variant’s reference, barcode, cost or weight, export its actual External ID from Odoo and retain that ID in the update file. Never invent a replacement variant ID or use the SKU alone as its identity. Selling price is shared by the template; variant price differences need attribute extra prices or a separately configured pricelist, not an independent price column in this update layout.
When should the import file be built?
Start during discovery, before the full migration. A representative sample makes the catalogue size, variant structure, attributes and tax requirements visible. Validate the source, test it in a non-production tenant, inspect the imported records and repeat an update using the same identifiers. Expand to the full catalogue only after those checks pass; customisations and tenant settings may require a different layout.
| Group | Rules | Blocking |
|---|---|---|
| Required fields | Every required column in the layout is present and non-empty | Yes |
| Identifiers | Unique codes; length limits; allowed characters; trimmed; stable external IDs | Yes |
| References | Item class, tax code, UoM, warehouse, accounts, categories exist in the declared lists | Yes |
| Variants | Every attribute value referenced is defined; no duplicate combinations; ID template produces unique children | Yes |
| Types | Prices, costs, weights, dimensions numeric and non-negative; dates ISO; booleans normalised | Yes |
| Barcodes | GTIN length and check digit; unique | Yes |
| Text | Length limits; no control characters; initial zeroes preserved | Yes |
| Warnings | Empty description; missing barcode; price below cost; zero weight on a storable item; duplicate rows collapsed | No |
Frequently asked questions
Why do product imports need stable external IDs?
External IDs let a later import identify the same product and update it rather than creating another record. Keep them stable across exports and revisions. Check that template IDs, variant IDs and attribute references remain distinct and that each file targets the correct import model.
How should attribute lines be prepared before importing variants?
Create or import the attributes and their permitted values before product templates reference them. Map the template’s attribute lines consistently, then handle variant references and any variant-specific values in the appropriate model. Test a small representative product before importing the full catalogue.
Is my product data uploaded anywhere?
No. The file you paste or upload is read in your browser, validated there, and the output is generated there. Nothing is sent to our servers or anyone else's. If you want to keep your mapping and defaults for next time, turn on "Remember my settings", which stores only the settings, not the data.
Will the file import without changes?
Validation checks the selected layout and the reference lists you supply; it cannot check your live database or every customisation. Use the recorded Odoo version, retain the correct external IDs, and run a small representative file through Odoo’s Test and Import actions before importing the catalogue.
Bring the validated file to a discovery call and we will size the implementation from it.
Book a conversation