> ## Documentation Index
> Fetch the complete documentation index at: https://help.polygon-one.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Import (CSV / Excel)

> Import packaging units, components and bills of materials via CSV or Excel

## Overview

Instead of creating units and components one by one, you import them in bulk from CSV or Excel files. The import is built for scale and offers, for units and components, an overwrite preview as well as a result with created, updated and skipped rows.

Accepted formats: **CSV** and **Excel** (`.csv`, `.xlsx`, `.xls`).

## Where the import buttons are

The import buttons sit in the toolbar of the respective list. Each button is a split button: **Import** plus a menu to download the matching template.

| Import                        | Location                                                                              |
| ----------------------------- | ------------------------------------------------------------------------------------- |
| **Packaging units**           | Toolbar of the **Packaging units** list (`/packaging`)                                |
| **Bill of materials (links)** | Toolbar of the **Packaging units** list — links existing units to existing components |
| **Components**                | Toolbar of the **Components** list (`/packaging/components`)                          |

<Frame caption="The import buttons in the toolbar of the packaging units list">
  <img src="https://mintlify.s3.us-west-1.amazonaws.com/polygonone/images/ppwr/stammdaten/import-buttons.png" />
</Frame>

## Preview and validation

<Steps>
  <Step title="Choose a file">
    Click **Import** and select your CSV/Excel file. Polygon One reads the file and validates each row against the schema.
  </Step>

  <Step title="Valid and invalid rows">
    Valid rows are staged for import; invalid rows (e.g. unknown enum values, invalid GTIN, missing required fields) are reported with their reason. If a column mapped as required is missing entirely, this is reported as a column error — not as a silent per-row failure.
  </Step>

  <Step title="Confirm overwrites (units & components only)">
    The units and the components import are an **upsert** (matched by internal reference or code). If the import would **overwrite** an existing value, the preview opens first, where you decide row by row. Pure fill-ins (populating empty fields) are applied automatically.
  </Step>

  <Step title="Result">
    At the end, the result shows how many rows were **created**, **updated**, **skipped**, and which **errors** occurred.
  </Step>
</Steps>

<Frame caption="The import preview with valid, to-confirm and skipped rows">
  <img src="https://mintlify.s3.us-west-1.amazonaws.com/polygonone/images/ppwr/stammdaten/import-vorschau.png" />
</Frame>

<Info>
  The **bill-of-materials import** (links) is create-only and idempotent: already-existing links are **skipped**, not duplicated. It therefore has no overwrite preview — only a result with linked / already-linked (skipped) / errors (unknown references).
</Info>

## Which columns exist

The templates carry the canonical column headers. Under **Settings → Imports** you can save your own column mapping for units and components; the bill-of-materials template uses fixed headers.

### Packaging units

Core columns: **Name**, **Reference** (internal reference, matching key), **Packaging Type**, **Role**, **Supplier**, **Format**, **Recyclability Grade**, **GTIN**, **Width (mm)**, **Height (mm)**, **Depth (mm)**, **Market Member States**, **Notes**, **Own Brand**, **Modifies Conformity**. Plus two link columns: **Article Numbers** (link to existing articles by their internal article number) and **Component Codes** (link to components).

### Components

Core columns: **Code**, **Name**, **Supplier**, **Materials**, **Polymer**, **Mass (g)**, **Recycled Content (%)**, **Recycled Source**, **Recycled Method**, **Contact-sensitive**, **Food-contact**, **Heavy Metals (mg/kg)**, **Heavy Metals Basis**, **Heavy Metals Method**, **PFAS Compliant**, **PFAS Basis**, **PFAS Method**, **PFAS Sum (ppb)**, **Total Fluorine (mg/kg)**, **Notes**.

### Bill of materials (links)

Only three fixed columns: **Unit Reference**, **Component Code**, **Quantity** (blank → 1).

<Info>
  Resolution notes: **Supplier** is resolved server-side by name (no match → no supplier). For units, an empty **Market Member States** column imports as an empty list — the import sheet is authoritative and is **not** backfilled from the PPWR default setting. In the bill-of-materials import, unknown unit/component codes are reported as error rows and are not auto-created.
</Info>

<Card title="Back to the data model" icon="diagram-project" href="/en/ppwr/stammdaten/uebersicht">
  How articles, units and components relate.
</Card>
