Import templates let you read CSV and Excel files into X-Sitter. A template stores the import type, optionally the client, the file format and the mapping "column of the file → field in X-Sitter". Once saved, you can import any number of files with the same layout in a few clicks.

The most common use is the article import: create or update articles with attributes, categories, main image, product family and owner. The same tool also imports categories, manufacturers, bills of materials, storage places, stock and tracking numbers.

![Screenshot: Overview "Import templates (CSV & Excel)" with several templates, the cloud icon to import a file and the "New template" button](/products/images/import-templates-overview.png)

## Before you start

- Your user needs the permissions for the import, the template list and creating templates – ask your administrator.
- **For an article import, set up first:**
  - [Attribute groups](/products/attribute-groups.md) and [attribute fields](/products/attribute-fields.md). The template shows your fields sorted by attribute group, plus the standard fields your company does not have yet ("*Wird beim ersten Import für die Firma angelegt*" – created for your company with the first import).
  - Dropdown attributes with their values. Texts in the file are matched to the dropdown values (exact name first, then the first partial match, otherwise the raw value is stored).
  - [Clients](/company/clients.md), if you import for a client.
  - The languages of your company (**Catalogue › Attributes › Languages**, *Katalog › Attribute › Sprachen*), if you import names and descriptions in several languages.
  - [Categories](/products/categories.md) with an external ID, if you use the field **External category ID**. Categories in the fields **Category 1–6** (*Kategorie 1–6*) are created automatically.
- File format: CSV (`.csv`, `.txt`, `.tsv`) or Excel (`.xls`, `.xlsx`).

!!!
For Excel files, X-Sitter reads the **active sheet** – the one that was open when the file was last saved. Formulas are read as their result, date cells as `YYYY-MM-DD`, whole numbers without decimals (so EANs stay complete).
!!!

## Step by step

### Create a template

1. Open **Catalogue › Import › Templates** (*Katalog › Import › Vorlagen*) and click **New template** (*Neue Vorlage*). Or go directly to **Catalogue › Import › Create template** (*Vorlage erstellen*).
2. **1 · Template** (*Vorlage*): enter the **Template Name** (*Name der Vorlage*), choose the **Import type** (*Import-Typ*) and the **Client** (*Mandant*). The client dropdown is shown to the logistician only: it lists your own company under **Logistician** (*Logistiker*) and your active clients under **Clients** (*Mandanten*) – see [The client of a template](#the-client-of-a-template). The types are grouped into **Items & catalog** (*Artikel & Katalog*), **Storage** (*Lager*) and **Orders & shipping** (*Aufträge & Versand*); a short text under the dropdown explains what the selected type does.
3. **2 · Sample file & format** (*Beispiel-Datei & Format*): drag a sample file into the field **Drag a CSV or Excel file here or click** (*CSV- oder Excel-Datei hierher ziehen oder klicken*). It is only used for the preview and the mapping – it is neither imported nor stored. For CSV, X-Sitter detects the **Separator** (*Trennzeichen*) automatically; you can adjust it, the **Text delimiter** (*Textbegrenzer*) and **First line contains column names** (*Erste Zeile enthält Spaltennamen*).
4. Check the preview. Mapped columns are highlighted in blue and show the name of their field. The preview stays at the top while you scroll through the mapping.
5. **3 · Map columns** (*Spalten zuordnen*): the fields are grouped in sections you can expand – **Master data** (*Stammdaten*), **Images** (*Bilder*), **Texts & categories · [language]** (*Texte & Kategorien · [Sprache]*, default language first) and **Attributes · [group]** (*Attribute · [Gruppe]*). Each section shows a counter "x / y". For every field, choose the column of your file; an example value from the file is shown next to it.
6. **4 · Import settings** (*Einstellungen des Imports*) – only for some import types, see below.
7. Click **Save template** (*Vorlage speichern*) in the bar at the bottom. If something is missing, *Bitte noch ergänzen* lists it (name, import type, separator, required fields). Otherwise you see **The CSV import template has been successfully saved**.

![Screenshot: Step "1 · Template" with name, import type dropdown (groups visible) and client dropdown](/products/images/import-templates-step-template.png)

![Screenshot: The opened client dropdown with "— no client —", the group "Logistician" with the own company and the group "Clients" with the active clients](/products/images/import-templates-client-groups.png)

![Screenshot: Step "2 · Sample file & format" with a loaded file, detected separator and preview table with blue mapped columns](/products/images/import-templates-step-file.png)

![Screenshot: Step "3 · Map columns" with the expanded section "Stammdaten", example values and the buttons "Auto-assign", "Search field …", "Only mapped" and "Clear mapping"](/products/images/import-templates-step-mapping.png)

**Helpers for the mapping:**

- **Auto-assign** (*Automatisch zuordnen*) maps columns whose heading matches a field (e.g. "SKU" → **Item Number (SKU)**). For a new template this happens automatically when you load the file.
- **Search field …** (*Feld suchen …*), **Only mapped** (*Nur zugeordnete*) and **Clear mapping** (*Zuordnung leeren*).
- If one column is mapped to several fields, the field shows "*Spalte auch zugeordnet zu: …*" (column also mapped to …).

### Import a file

1. In the template overview, click **Import File** (*Datei importieren*, cloud icon) next to the template.
2. Drag the file into the dialog or select it – or **choose from your data pool** (*wähle aus Deinem Datenpool*). The data pool lists your CSV and Excel files, newest first. You can upload files to it beforehand under **Catalogue › Import › Files** (*Dateien*).
3. When the import is done, X-Sitter reports how many records were processed. For **Book in items** (*Artikel einbuchen*), the message also shows the pallet labels created and printed. The column *verarbeitete Elemente* (processed items) in the overview shows the number of the last run.

![Screenshot: Import dialog with drag-and-drop area and the "choose from your data pool" list](/products/images/import-templates-import-dialog.png)

### Edit, duplicate or delete a template

- Click the name or **Edit** (*Bearbeiten*) to change a template.
- **Duplicate** (*Duplizieren*) creates a copy "[name] (Kopie)" and opens it right away so you can rename it.
- **Delete** (*Löschen*) asks **Should the template really be deleted?** and then confirms **The template has been deleted**.

### Load a new file into an existing template

When you load a new sample file into a saved template, the mappings follow their column by **column name**. If the new file has a different column order or extra columns, the mappings move along; empty fields with an exactly matching column name are filled in. Fields whose column no longer exists are listed under "*Ohne passende Spalte, bitte zuordnen: …*" (no matching column, please map). This only works with a header row – without column names, the column numbers stay.

One template works for both formats: the same template can read a CSV or an Excel file. Separator and text delimiter only apply to CSV.

## Import types

| Import type | What it does |
|---|---|
| **Article** (*Artikel*) | Creates or updates articles: master data, categories, images, texts and attributes |
| **Product Supplier Information** (*Artikel Lieferanten Daten*) | Writes attributes into existing articles, creates no new articles |
| **Articles - Category Linking** (*Artikel - Kategorie Verlinkung*) | Links existing articles with up to ten categories (by name) |
| **Bill of Materials** (*Stücklisten*) | Creates bills of materials with their articles and quantities – see [Bills of materials](/products/bills-of-materials.md) |
| **Item Mapping (Warehouse)** (*Artikel Mapping (Lager)*) | Replaces the mapping retailer SKU → warehouse SKU – see [Article mapping](/products/article-mapping.md) |
| **Portal Mapping** (*Portal-Mapping*) | Sets the ID and the item number of articles in one marketplace or connected system – the same values as the portal mapping in the article, see [Settings for "Portal Mapping"](#settings-for-portal-mapping) |
| **Manufacturer** (*Hersteller*) | Creates or updates manufacturers – see [Brands](/products/brands.md) |
| **Categories** (*Kategorien*) | Creates the category tree; parents via the external ID |
| **Creating Storage Bins** (*Lager Plätze anlegen*) | Creates or changes storage places, matched by place name – see [Storage places](/warehouse-setup/storage-places.md) |
| **Book in items** (*Artikel einbuchen*) | Books stock onto storage places, optionally with history and pallet labels |
| **Tracking Numbers** (*Tracking Nummern*) | Writes tracking numbers and carriers into existing orders. Without a carrier column, the carrier is detected from the tracking number. |
| **Order statistics** (*Bestell-Statistik*) | Imports order statistics |

For **Creating Storage Bins** and **Book in items**, the section **Bin name from parts** (*Platzname aus Teilen*) lets you build the place name from up to eight columns. The parts are joined with "-"; parts from the second one on are padded with leading zeros to the number of digits you choose.

## The client of a template

| Import type | Effect of the client |
|---|---|
| Article | Every row becomes an article of this client. The column **Owner (client)** is ignored. |
| Book in items | Articles are searched for (or created for) this client. The owner column is ignored. |
| Product Supplier Information, Articles - Category Linking | Only articles of this client are found |
| Item Mapping (Warehouse) | Only articles of this client; only this client's mappings are replaced, those of other clients stay |
| Portal Mapping | Only articles of this client are found. Without a client, the item number has to be unique at the logistician. |
| Tracking Numbers | Tracking numbers are written into the orders of this client |
| Manufacturer, Categories, Bill of Materials, Creating Storage Bins, Order statistics | No client can be chosen: "*Dieser Import-Typ gehört immer dem Logistiker*" (this type always belongs to the logistician) |

The dropdown offers two groups: **Logistician** (*Logistiker*) with your own company and **Clients** (*Mandanten*) with your active clients.

- **— no client —** (*— kein Mandant —*): the column **Owner (client)** decides; without that column, the articles belong to your own company.
- **Logistician**: every row belongs to your own company – only your own articles (articles without an owner) are found or created. The owner column is ignored as well.
- A client: as in the table above.

The dropdown is shown to the logistician only – a client who is logged in always imports for themselves. See also [Article owner and client access](/products/owner-and-sharing.md).

## Fields for the article import

| Field | Meaning | Required |
|---|---|---|
| **Item Number (SKU)** (*Artikelnummer (SKU)*) | Key of the article. It is also stored as attribute "SKU" automatically – no second mapping needed. | Yes |
| **Status** | `1`, `yes` or `Y` = active. Without a column, the choice next to the field applies: active / inactive / do not set. | No |
| **Owner (client)** (*Eigentümer (Mandant)*) | Client's company ID, company number or name. Not available when the template has a client. | No |
| **External category ID** (*externe Kategorie Id*) | Assigns an existing category with this external ID | No |
| **Main image** (*Hauptbild*) | Image URL (png, gif, jpg); stored as preview image of the article | No |
| **Texts & categories · [language]** (*Texte & Kategorien · [Sprache]*) | Name, short and long description, **Category 1–6** (*Kategorie 1–6*) and **Product Family** (*Produkt Familie*) per language of your company. Missing categories and product families are created; the article goes into the deepest category. | No |
| **Attributes · [group]** (*Attribute · [Gruppe]*) | Every attribute field of your company or the standard template. A decimal comma becomes a point; `0` or an empty cell is ignored. SKU, owner, name and descriptions are not listed here because they have their own fields. "No group" (*Ohne Gruppe*) means the field's group does not exist. | No |

Older templates show their mappings at the new fields when you open them (for example "SKU" as attribute → **Item Number (SKU)**, names and descriptions without a language → the field of the default language). Save the template to store them there.

## Settings for "Book items"

| Setting | Meaning | Default |
|---|---|---|
| **Storage** (*Lager*) | Target warehouse for rows without a warehouse name column | Default warehouse |
| **Replace or add to stock** (*Bestand ersetzen oder aufrechnen*) | **Replace** (*Ersetzen*) sets the stock of the place; **Sum** (*Summieren*) adds the quantity of the file (same batch and best-before date) | Replace |
| **Create non-existent items** (*Nicht vorhandene Artikel anlegen*) | Unknown item numbers are created as new articles | Off |
| **Create a history for a storage location** (*History für Lagerplatz erzeugen*) | Writes an entry into the stock history (always with **Sum**) | Off |
| **Create pallet labels** (*Palettenlabel anlegen*) | Every booked stock row gets its own pallet label with pallet number and a pallet history entry (reason = default goods-in reason of the warehouse, note "CSV-Import Bestand"). If the row already has a label, only quantity and batch are updated. | Off |
| **Print pallet labels** (*Palettenlabel drucken*) | After the import, the label PDFs are sent to your packing table – see [Packing tables](/company/packing-tables.md). Without **Create pallet labels**, only rows that already have a label are printed. | Off |

Labels are printed only after the whole import has been saved. If the import fails, no label is created or printed. See also [Pallet overview](/stock/pallet-overview.md).

![Screenshot: Step "4 · Import settings" for the type "Book in items" with warehouse, replace/sum and the pallet label switches](/products/images/import-templates-book-items.png)

## Settings for "Portal Mapping"

The import type **Portal Mapping** (*Portal-Mapping*) writes the same values as the **Portal Mapping** card in the article's **Mapping** tab (see [Article mapping](/products/article-mapping.md)) – for many articles at once. One row of the file is one article.

| Field / setting | Meaning | Required |
|---|---|---|
| **Portal** – under **4 · Import settings** (*Einstellungen des Imports*) | The marketplace or connected system all rows of the file belong to. The list is the same as in the dialog **New Portal Mapping** of the article. | Yes |
| **Item Number (SKU)** (*Artikelnummer (SKU)*) | Finds the article. With a client, only that client's articles; without a client, the item number has to be unique at the logistician. | Yes |
| **External Id** (*Externe Id*) | ID of the article in the portal (for example the JTL *kArtikel*), at most 36 characters | One of the two |
| **External SKU** (*Externe SKU*) | Item number of the article in the portal, at most 32 characters | One of the two |

![Screenshot: The fields "Item Number (SKU)", "External Id" and "External SKU" of the type "Portal Mapping" and step "4 · Import settings" with the portal dropdown and the note "All rows of the file belong to this portal."](/products/images/import-templates-portal-mapping.png)

- **Empty cells keep the current value.** An existing mapping of the article in this portal is updated only in the columns you filled in; nothing is deleted.
- Unknown item numbers are skipped. If an item number exists for several owners and the template has no client, the import stops and names the row – choose the client in the template.
- Item numbers made of digits with a decimal separator are searched in both spellings: a file with `122.68` (as a JTL export or a spreadsheet writes it) also finds the article `122,68` – the spelling X-Sitter and JTL use. Item numbers with letters (`B6.2`) are searched exactly as written.
- A new portal mapping always belongs to the logistician, also for a client's article.

## Good to know

- An import is all or nothing: if one row fails, nothing is saved and the message names the row ("*Zeile N: … Es wurde nichts gespeichert.*").
- The import runs directly in your browser – keep the page open until the message appears.
- Article numbers are unique per company and owner. A different owner creates a separate article with the same SKU.
- The template stores the first rows of the sample file so that columns and example values are visible again the next time you open it.
- For order files, use the separate [order import templates](/orders/order-import-templates.md).
- After an article import, you may want to add [images](/products/article-images.md) or book stock ([Putaway](/inbound/putaway.md)).

| Message | Cause | Solution |
|---|---|---|
| *Bitte noch ergänzen: …* | Name, import type, separator or a required field is missing | Add the missing details |
| *Der gewählte Mandant gehört nicht zu deiner Firma oder der Import-Typ kennt keinen Mandanten.* | The client does not belong to your company or the type has no client | Choose another client or "— kein Mandant —" |
| *Der Mandant dieser Vorlage gehört nicht mehr zu deiner Firma. …* | The client was moved to another logistician | Open the template and choose the client again |
| *Die Datei wurde nicht gefunden oder konnte nicht gelesen werden (CSV oder Excel).* | File missing, wrong extension or damaged Excel file | Check the file; save it again as `.xlsx` if needed |
| *Die Excel-Datei konnte nicht gelesen werden.* | The sample file could not be read | As above |
| *Für diese Vorlage ist kein Ziel-System hinterlegt* | Template without import type – or a Portal Mapping template without a portal | Edit the template and choose a type or portal |
| *The template does not map “Item Number (SKU)” and “External Id” or “External SKU” to a column.* (*Die Vorlage ordnet „Artikelnummer (SKU)“ und „Externe Id“ oder „Externe SKU“ keiner Spalte zu.*) | Portal Mapping without the item number or without a target column | Map the columns |
| *Line N: The item number “…” exists for several owners. Please choose the client in the template.* (*Zeile N: Die Artikelnummer „…“ gibt es bei mehreren Eigentümern. …*) | Portal Mapping without a client, the item number exists for several owners | Choose the client in the template (one template or file per client) |
| *Line N: External Id (at most 36 characters) or External SKU (at most 32 characters) of “…” is too long.* | A value does not fit into its column | Check the file |
| *Die Palettenlabel wurden nicht gedruckt: Deinem Benutzer ist kein Arbeitsplatz (Packtisch) zugeordnet.* | Your user has no packing table | Assign a packing table ([Packing tables](/company/packing-tables.md)) |
| *N Palettenlabel konnten nicht erzeugt werden (PDF-Vorlage für Palettenlabel im Lager prüfen).* | The warehouse has no PDF template for pallet labels | Set the template in the [warehouse settings](/warehouse-setup/warehouse-settings.md) |
| *N Bestandszeilen haben kein Palettenlabel und wurden nicht gedruckt.* | **Print pallet labels** without **Create pallet labels** | Switch on **Create pallet labels** as well |
| An attribute value is missing after the import | The value was `0` or empty | Check the file and the mapping |
| Duplicate articles | Different owner → separate article per owner | Check the template's client or the owner column |
