Skip to content
Stone & Water
Doc · 06 CSV import & export

CSV import & export · multilingual, with mapping

Complete multilingual support in one file. Custom fields as individual columns. Matching by product number, EAN, manufacturer number or ID. With profiles, validation, strict mode and batch sync.

Column convention for translations

Instead of one file per language: all languages in ONE CSV. The main language for export (default: current admin language) fills the main columns such as name or description. Further languages appear as separate columns following the pattern:

  • trans_<channel>_<language>_<field> - for example trans_mainshop_en_GB_name; per sales channel and language for name, description, meta title, meta description, keywords, pack unit (singular/plural) and search keywords
  • cf_<name>__<language code> - language-specific values of a custom field

Which channel languages are offered as translation columns is set in the config matrix (Texts & translations tab → "Visible channel languages"). With "Also import data for the main language", translated fields are additionally written to the admin's main language on import.

Custom fields as individual columns

Custom fields each get their own column cf_<name> in the export, language-specific cf_<name>__<language code>. On import they are recognised directly - no JSON blob needed. The customFields column with all values as JSON, in contrast, is export only.

Preset export profiles

Seven ready-to-use column sets - adjustable and savable as your own profile:

  • Master data - product number, name, description, status, EAN, manufacturer, manufacturer number, top seller, clearance sale, free shipping, tags, categories, main category, custom fields
  • Prices & stock - gross, net, tax rate, stock, available stock, purchase price gross and net, strike-through price, RRP, delivery time, order quantities, base price data, pack unit and unit as readable name
  • SEO - meta title, meta description, keywords, canonical URL and search keywords
  • Images - cover URL and all images
  • Translations - all translation columns of the released channel languages
  • Variants - parent product number, variant options, prices, stock, EAN and status
  • Full export - all columns

The default export profile preselected on opening is set in the config matrix in the Import / export tab.

Price columns - gross and net separated

For the purchase price there are two separate columns:

  • purchasePrice - purchase price gross (on import also as purchasePrice_gross)
  • purchasePrice_net - purchase price net

On import all combinations are possible:

  • Only gross given → net is calculated from the tax rate
  • Only net given → gross is calculated from the tax rate
  • Both given → values are taken over 1:1

Selling prices are in price_gross and price_net, plus listPrice (strike-through price) and regulationPrice (RRP). Tier prices are not CSV columns.

Alias detection

The importer also recognises German and English spellings automatically:

  • ek_brutto, einkaufspreis_brutto, cost_gross, purchase_price_gross → purchase price gross
  • ek_netto, einkaufspreis_netto, cost_net, purchase_price_net → purchase price net

CSV export

  • Columns freely selectable, grouped into basics, price & stock, dimensions & weight, SEO, date & status, variants, visibility, images, properties, cross-selling and translations
  • Export scope: all products or active filter; a filter preset can be loaded as well
  • Decimal separator: dot (12.50) for international Excel or comma (12,50) for German Excel, each rounded to 2 decimals
  • Encoding: UTF-8 with BOM so that Excel shows umlauts correctly
  • Apply active filters - filters from the product list are applied to the export and evaluated exactly as in the list: cover and variant cover status, manufacturer, category and property status, main category, delivery time, price, translation status and "unchanged since".
  • What cannot be transferred is named - custom filters, RRP status, approval status and the search term do not take effect in the export. The dialog points this out explicitly instead of ignoring them silently.
  • Defaults in the config matrix (Import / export tab): default export profile, separator (semicolon, comma, tab), max. products (default 5,000), export variants by default, default file format, decimal separator

"Unit (name)" column

Alongside the unit ID, the product unit is exported as a readable name ("Litre", "Kilogram", "Piece") - Excel-friendly, without translating UUIDs. In the "Prices & stock" profile the readable name is enabled by default.

Export only

These columns are exported but not imported: main category, average rating, sales, number of variants, display group, custom fields (JSON), available stock, available, product URL, absolute image URL and absolute image URLs, plus created at and updated at.

CSV import

Workflow

  1. Select a file - CSV, TSV, XML, DATANORM or Excel (.xlsx, .xls) - or load a CSV, XML or DATANORM file from a URL
  2. Optionally load a saved import profile
  3. Choose separator, import mode, product matching and image mode
  4. Check and adjust the column mapping - detected automatically from the header row
  5. Run the validation: it shows how many rows will be created, updated or skipped, plus warnings (e.g. duplicate product numbers, rows without product number) and errors
  6. Start the import - with progress through the phases preparation, saving products, uploading images and writing translations
  • Import mode: update + new, update only or create new only (requires a name column)
  • Image mode: add or replace (delete all)
  • Strict mode (all or nothing): if errors occur, all changes imported so far are reverted automatically
  • Error list: searchable, copyable and downloadable as CSV

Match logic

  • Product number (productNumber) - default
  • EAN / GTIN
  • Manufacturer number (manufacturerNumber)
  • Product ID (UUID)

Resolution by product number

Variants can be assigned to their parent via the parentProductNumber column - UUIDs are not required.

"Unit" auto-detection

The importer recognises both "Unit (name)" and "Product unit" as column names and resolves readable names like "Litre" or "Kilogram" to the correct unit ID.

Automatic lookups

Missing manufacturers, tags, tax rates, delivery times and property options are created automatically on import. Categories (pipe-separated, also as a path with ">") and product units must already exist - entries that are not found appear in the error list.

Performance settings

In the config matrix (Import / export tab): products per sync batch (10, 50 default or 200, on errors automatic fallback to single processing), parallel image uploads per product (default 5), concurrent products during image import (default 2), translations per sync batch, API rate limit, disable indexing during import, re-index automatically after import and abort import at an error count (never or after 5, 10, 25, 50 or 100 errors).

DATANORM import (4.0 & 5.0)

In addition to CSV, the importer reads the DATANORM format from supplier catalogues (common in trades and wholesale):

  • Versions 4.0 and 5.0 are detected automatically via the V; header (incl. manufacturer); 5.0 has its own field layout for name, price and EAN.
  • Volume files with any extension .001-.999 (e.g. DATANORM.500).
  • Record types: A (article master record), B (product groups), T (long text), P (prices/DATPREIS).

Data type detection

  • Boolean: 1/0, true/false, yes/no
  • Date: ISO and German notation
  • Number: comma or dot decimal
  • Array: pipe separator
  • JSON: for complex fields

Column mapping

If the header row does not match the Shopware field names, you assign a Shopware field to each CSV column via a dropdown or set it to "Skip". A preview shows the first values. You save mapping, separator and modes as an import profile; profiles are stored in the shop database and available to all users.

Change log and undo

The Change log tab in the CSV window lists the imports:

  • Time and file name
  • Number of created and updated products and errors
  • The affected fields

"Undo last import" resets the most recently imported changes to the previous values, "Clear log" removes the list. A download of the original CSV is not available. In addition, every import creates a snapshot (can be switched off) that you can compare and restore in the config matrix in the Snapshots tab.

Permissions

Via function switches: there are no dedicated Shopware permissions for import or export. The import tab is always visible to superadmins and to regular users as long as the "CSV import" function switch is on (default). The export tab works the same way with "CSV export". Details: Permissions & superadmin.

There is a dedicated page for the industry format: DATANORM import for Shopware 6.

What's next

Continue to Feed Export to serve product feeds via URL for portals and ERP.

Frequently asked questions

Do I need a separate file per language?

No. All languages are in one CSV, with unique column names per language.

How are products matched on import?

By product number, EAN, manufacturer number or product ID. Depending on the import mode, new products are created, existing ones updated, or both.

Who may import?

Superadmins always, regular users as long as the "CSV import" function switch is on (default). Export is controlled by its own switch.

How fast is the import of large files?

The import runs in batches via the Shopware sync API. Batch size, parallel image uploads and indexing are set in the config matrix to suit the server.