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
Show breakdown
Calculation breakdown
- Valid rows
- 0
| Valid rows | 0 |
|---|
Choose a versioned import layout, map your columns and resolve every blocking error before downloading.
PDF for a finished report, Excel for a formatted workbook, CSV for plain data.
At a glance
- Layouts
- Odoo 18 product templates and updates to existing product variants
- Input
- paste or upload a product CSV with a header row
- 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 values first, then product templates, then updates to existing variants
- 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-09 from Gs1
Try a test import example
Choose a product type, then select Load test example to fill the builder with sample products and matching reference lists. Continue through mapping and validation to see how it works. You can also download a test CSV:
The products and reference values are fictional. Use actual identifiers and reference lists from your own system for a real import. Loading your own CSV clears the example reference lists.
Start with your product CSV
Paste or upload a CSV with a header row. Choose Odoo product templates or updates to existing variants, map your columns and correct the validation report. Download the resulting CSV or XLSX and test it with Odoo’s Test and Import actions before importing the catalogue. The source file stays in your browser.
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 referenced attribute value is declared; no duplicate combinations; stable product and attribute-line IDs | 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