> ## Documentation Index
> Fetch the complete documentation index at: https://docs.variable.global/llms.txt
> Use this file to discover all available pages before exploring further.

# Uploading and mapping columns

> Step-by-step guide to uploading files and configuring column mappings

This guide walks you through the import process from file upload to column mapping.

## Starting an import

<Steps>
  <Step title="Open the import wizard">
    Click the **Import** button on the page that matches your data - Products, Materials, Suppliers, Activities, Locations, or a Product's BOM. Then select the import type:

    * **Products** - your company's products
    * **Materials** - supplier materials and material inventory
    * **Bill of materials (BOM)** - inputs/line items for a specific product (offered when starting from a Product)
    * **Suppliers** - supplier companies
    * **Activity data** - purchase/sales transactions for GHG inventory
    * **Air travel** - flight emissions records
    * **Transport** - logistics and freight emissions
    * **Locations** - named factories, warehouses, ports, and other facilities
  </Step>

  <Step title="Configure the upload">
    On the upload screen, set the file-level options before continuing:

    * **Data source system** - defaults to **Spreadsheet**. For BOM imports, you can pick a specific export format (e.g., SAP S/4HANA) and Variable will run a built-in adapter to transform the file before mapping.
    * **Decimal separator** - defaults to **Period (.)** for US/UK formatting. Switch to **Comma (,)** if your file uses European number formatting (`1.234,56`).
    * **Match mode** (Materials and Products only) - decides what happens to rows that match an item you already have: **Create new only**, **Overwrite existing**, or **Fill missing only**. Materials default to **Fill missing only**, products to **Create new only**. See [Import match mode](/docs/import/import-behavior#import-match-mode-products-and-materials).
    * **Drag file here or click to upload** - select your CSV or XLSX file.
    * **Select sheet to import** (XLSX only) - for multi-sheet workbooks, pick which sheet contains your data. Defaults to the first sheet.

    Click **Next** to parse the file and continue to column mapping.
  </Step>
</Steps>

## Column mapping

After upload, Variable parses your file and displays the column mapping interface.

### How AI-assisted mapping works

Variable uses AI to suggest mappings between your column headers and Variable fields. The system considers:

1. **Exact matches** - Headers that exactly match Variable field names
2. **Semantic similarity** - Headers with similar meaning (e.g., "Part Number" maps to `productSku`)
3. **Previous imports** - Mappings you've used before for similar files

<Info>
  Each mapping shows its source: **AI** for AI-suggested, **System** for exact matches, or **User** for manually configured mappings.
</Info>

### Adjusting mappings manually

To change a mapping:

1. Click on the Variable field dropdown for the column
2. Select the correct field from the list
3. To remove a mapping, select "Do not import"

Required fields are marked with an asterisk (\*). The import cannot proceed until all required fields are mapped.

### Mapping preview

The preview shows how your data will be imported:

| Your column | Variable field | Sample values            |
| :---------- | :------------- | :----------------------- |
| Part Number | productSku     | BIKE-001, RIM-001        |
| Description | productName    | Mountain Bike, Alloy Rim |
| Qty         | quantity       | 5, 12.5                  |

Review the sample values to ensure the mapping is correct.

## Value mapping

After column mapping, configure how values are transformed.

### Unit mapping

Map your unit values to Variable's standard units:

| Your value    | Variable unit |
| :------------ | :------------ |
| kilograms     | kg            |
| pieces        | pcs           |
| square meters | m2            |

<Note>
  Variable recognizes many unit variations automatically. You should only need to map uncommon abbreviations.
</Note>

### Date format

If your file has date columns, use the **Date format** dropdown at the top of the mapping screen to tell Variable how to parse them. Pick the option that matches your file - Variable accepts several variations within each option:

| Format             | Accepted variations                      |
| :----------------- | :--------------------------------------- |
| Day / Month / Year | `17/05/2026`, `17.05.2026`, `17-05-2026` |
| Month / Day / Year | `05/17/2026`, `05-17-2026`               |
| Year / Month / Day | `2026/05/17`, `2026-05-17`, `20260517`   |
| Year Month         | `2026/05`, `2026-05`, `202605`           |
| Month Year         | `05/2026`, `05-2026`, `052026`           |
| ISO 8601           | `2026-05-17T14:30:00Z`                   |

<Note>
  All dates in a date column must use the same format. Mixing formats within a single column will cause parsing errors - clean those up in your source file before importing.
</Note>

## Reviewing your data

Before submitting, review the transformed data preview:

1. Check that quantities look correct (right decimal places)
2. Verify dates are parsed correctly
3. Confirm units are mapped appropriately
4. Review any rows flagged with warnings

### Validation warnings

The system highlights potential issues:

* **Missing required values** - Rows without productSku or quantity
* **Invalid units** - Unit values that couldn't be mapped

## Submitting the import

Once mappings are configured:

1. Click **Submit Import**
2. The import processes in the background
3. You can navigate away - you'll be notified when complete

<Info>
  Large imports (10,000+ rows) may take several minutes. The system processes data in batches of 250-1,000 items.
</Info>

### Import status

Track your import progress:

| Status     | Description                          |
| :--------- | :----------------------------------- |
| created    | Import record created, awaiting file |
| uploaded   | File received, awaiting processing   |
| processing | Import in progress                   |
| done       | Import completed successfully        |
| error      | Import failed - check error message  |
| stopped    | Import was manually cancelled        |

## Saving mapping configurations

Variable automatically saves your mappings. The next time you import a similar file:

* Previously used mappings are suggested first
* Column order doesn't need to match
* New columns are mapped using AI

This learning improves with each import you complete.

## Next steps

* [What happens after upload](/docs/import/import-materials) - Understand how Variable processes BOM data
* [Troubleshooting](/docs/import/import-troubleshooting) - Resolve common import issues
