Typing products one by one into the Admin Panel is fine for ten items. For a hundred, it is a full day’s work. For a thousand, it is a week. Magento’s built-in import/export is the way UK merchants bulk-load catalogues, sync with suppliers, update seasonal pricing and move stock between systems without losing their weekend. This guide covers the CSV format, the workflow, the common validation errors and the patterns that save hours.
When to use import/export instead of manual edits • Exporting to get the template • The CSV file structure • Importing products — step by step • Updating prices and stock at scale • Handling images in imports • Validation errors and how to fix them • Scheduled imports for supplier feeds • FAQ
Four situations where CSV beats clicking:
Always start with an export. Magento’s import schema has 70+ columns and the fastest way to understand it is to see a working sample. Open System › Data Transfer › Export.
catalog_product_YYYYMMDD_HHMMSS.csv.Open the CSV in Excel, LibreOffice Calc or Google Sheets. For UK users, use the right character encoding on save: Magento expects UTF-8 with LF line endings. Excel on Windows tends to save as CP-1252 with CRLF, which breaks special characters like the pound sign, é, ä and similar. LibreOffice Calc offers explicit UTF-8 save dialogue; Google Sheets downloads as UTF-8 by default.
Each row is one product. The first row holds column headers that match Magento attribute codes (sku, name, price, qty, etc.). Some columns deserve a closer look:
| Column | Value format | Notes |
|---|---|---|
| sku | Your unique identifier | Primary key. Importing a row with an existing SKU updates it; new SKU creates the product. |
| product_type | simple / configurable / grouped / bundle / virtual / downloadable | Set once at creation; changing it via import is not supported. |
| attribute_set_code | Default, or your custom set code | Case sensitive. |
| categories | Category path like Default Category/Womens/Jumpers | Multiple categories separated by comma. |
| name | Plain text | Up to 255 chars. |
| price | Decimal, tax-inclusive for UK | No currency symbol. 29.99 not £29.99. |
| tax_class_name | Taxable Goods or your custom class | Controls VAT application. |
| visibility | Catalog, Search / Not Visible Individually / Catalog / Search | Use comma-exact values. |
| qty | Integer or decimal | Goes into the default stock source. |
| is_in_stock | 1 or 0 | Override the default (derived from qty). |
| base_image / small_image / thumbnail_image | Filename relative to pub/media/catalog/product/ | Upload images first (see below). |
| configurable_variations | Pipe-separated list of variants | Only for configurable parents. Format covered below. |
Empty cells mean “do not change” on an update, not “set to empty”. To explicitly clear a value, use the special string __EMPTY_VALUE_ENCODED__.
Open System › Data Transfer › Import.
For large imports (10,000+ rows), Magento locks some admin functions during processing. Schedule large imports for off-peak hours — UK stores typically run these overnight.
The cleanest pattern for bulk updates:
A small example: applying a 25% sale across 1,200 winter-season SKUs.
=ROUND(C2*0.75,2) (where C is price). Copy the result into special_price.special_price_from_date with 2026-01-05 and special_price_to_date with 2026-01-31.The same pattern works for stock sync: export SKU + qty, the WMS updates the qty column overnight, a scheduled import pushes new stock levels back into Magento.
Product images do not live in the CSV — they live on disk. The CSV references filenames. Workflow:
pub/media/catalog/product/. Organise into sub-folders if you like (jumpers/, shirts/).base_image = jumpers/merino-charcoal.jpg.For stores with thousands of images, Plesk SFTP is the practical upload path. Browsers time out on very large uploads; SFTP or rsync does not. SmartXHosting plans include SFTP access via Plesk by default — credentials are in the initial welcome email.
Most common import errors and their cause:
Default Category/Womens/Jumpers) must match an existing category exactly, including spaces and capitalisation. Create missing categories first.Core Magento supports one-click imports from Admin but not scheduled automation. For recurring supplier feeds, two approaches:
bin/magento import:run command. SmartXHosting engineers can deploy this for you — it runs on the same server and logs to standard Plesk cron.The CLI approach is cost-free and transparent; the extension approach is cheaper than developer time if you need GUI mapping and scheduling. UK merchants on the Shop Market and Shop Hypermarket plans often start with CLI for one feed and add the extension later when more suppliers come on board.
Magento hosting with SFTP and cron ready out of the box
SmartXHosting Magento plans come with Plesk SFTP for bulk image uploads, full cron scheduling for automated imports, and UK-based support for custom scripts.
See Magento plansQ: What CSV encoding does Magento expect?
A: UTF-8 without byte-order mark (BOM), with LF line endings. Excel on Windows defaults to CP-1252 with CRLF, which Magento can parse but which breaks non-ASCII characters. Use Google Sheets or LibreOffice Calc for reliable UTF-8 export, or in Excel choose “CSV UTF-8 (Comma delimited)” from the Save As dropdown.
Q: Can I import configurable products via CSV?
A: Yes. Create the child simple products first (one row each, type = simple). Then create the configurable parent (type = configurable) with the configurable_variations column filled in. The format is sku=CHILD-SKU,size=M,color=Charcoal|sku=CHILD-SKU-2,size=L,color=Charcoal|... Each variant is pipe-separated; attribute pairs within a variant are comma-separated.
Q: How do I delete products in bulk?
A: Create a CSV with only the sku column and the rows you want removed. Import with Behavior: Delete. Magento removes only the listed SKUs. Always test on a development store or small batch first — deletion is permanent and cascades to order history.
Q: What is the maximum file size I can import?
A: Magento’s web uploader limit is typically 2 MB by default but SmartXHosting increases this to 32 MB. For CSVs larger than 32 MB (roughly 100,000 rows), use the CLI: upload the CSV via SFTP to var/import/ and run bin/magento import:run filename.csv.
Q: Can I import customers or orders the same way?
A: Customers yes — the Entity Type dropdown on the Import screen has a “Customers” option. Orders, strictly no — Magento does not offer an order import feature for data integrity reasons. For historical order migration during a platform move, custom import scripts via the Magento API are the path.
Q: Why do my category paths fail validation?
A: Three common causes. First, case sensitivity: “Womens” and “womens” are different paths. Second, trailing whitespace: an accidental space after the category name in the CSV breaks the match. Third, the root category: the full path must start with your root category name (usually “Default Category”), not the sub-tree.
Q: The import ran but I do not see the changes on the storefront.
A: Three things to check. First, flush the cache — product and catalogue caches need invalidation. Second, reindex: go to System › Index Management and run the indexes marked “Reindex Required”. Third, refresh Elasticsearch indexes if your search relies on them. SmartXHosting has cron-driven reindex configured by default, so all three usually happen within a minute or two.