# (Customer-Specific) Articles

Master data for identifying articles. At Workist we distinguish between a *customer-specific article list* and a *general article list*. We use the same data structure in Workist for both article lists.

Workist typically requires **2 separate files** if both a general and a customer-specific article list are to be provided. In the [Master Data Hub](/en/docs/master-data/master-data-hub.md), these are two lists of the type **Articles**; in the channel, the general list goes into the **Article Lookup ID** field and the customer-specific list into the **Debtor Article Lookup ID** field.

:::warning
**Workist always requires at least one article list!**
:::

:::info
When providing a customer-specific article list **in addition to the general article list**, the following columns are usually sufficient: `partition_id`, `article_id1`, `article_id2`, (optional) `article_id3`
:::

:::note
If unit conversion is to be implemented in Workist, the `order_units` and `sales_units` must be provided. See: [Unit Conversion](/en/docs/master-data/unit-conversion.md)
:::

## General and Customer-Specific List

- **General list:** all articles, without a `partition_id`. `article_id2` and `article_id3` are additional numbers under which Workist finds the article.
- **Customer-specific list:** one row per customer and article. `partition_id` contains the customer's `client_id1`, `article_id1` your article number, and `article_id2` the article number this customer uses on its documents. Workist then finds the article by the customer's number and outputs your `article_id1`. Workist shows the customer's number on the line item as the external article number.
- Rows with a `partition_id` only apply to this customer; unlike other lists, Workist does not offer them for any other customer (see [Assignment to customers](/en/docs/master-data.md#partition-id)).

**Several sales organisations:** If the same `article_id1` appears with different `sales_organisation` values in your article lists, as several rows or in several article lists, Workist offers the sales organisations as a choice on the line item. For orders, the **Multiple sales organizations** check flags such line items so that a user picks the right one (see [validation checks](/en/docs/channel-configuration/document-processing/validation-checks.md)).

## Column Description

> **Required:** Workist cannot use the record without this column. **Recommended:** significantly improves recognition. The import itself does not check columns: if a column is missing, the field stays empty.

| # | Field Name | Status | Description |
|---|----------|--------|--------------|
| 1 | `partition_id` | <span class="status-optional">Optional</span> | Customer-specific list only: `client_id1` of the customer the row applies to. Leave empty in the general list. |
| 2 | `article_id1` | <span class="status-required">Required</span> | Your article number. Workist returns this number in the output. In the customer-specific list, use the same number as in the general list. |
| 3 | `article_id2` | <span class="status-optional">Optional</span> | General list: an additional article number under which the article should be found. Customer-specific list: the article number this customer uses. Workist shows it on the line item as the external article number. |
| 4 | `article_id3` | <span class="status-optional">Optional</span> | Additional article number, e.g. the EAN |
| 5 | `description` | <span class="status-required">Required</span> | Article description. Workist also recognises articles by their description when the document has no article number. In the additional customer-specific list, the column can stay empty. |
| 6 | `article_status` | <span class="status-optional">Optional</span> | Status of the article, e.g. `blocked` or `discontinued`. With the channel's article status rules, Workist flags line items with this status for review, see [validation checks](/en/docs/channel-configuration/document-processing/validation-checks.md). |
| 7 | `gross_price` | <span class="status-optional">Optional</span> | List price of the article before deductions or discounts. Workist shows it on the line item for information. |
| 8 | `order_units` | <span class="status-recommended">Recommended</span> | Units in which the article can be ordered, as a list in one cell, e.g. `["BOX","PCE"]`. Controls which units are available in the Workbench. An empty cell is imported as `["ST"]`. |
| 9 | `sales_units` | <span class="status-optional">Optional / Required for conversion</span> | Units in which the article is sold, as a list in one cell. Required if Workist should convert units: if a customer orders in another unit, Workist converts the quantity to a sales unit. |
| 10 | `sales_organisation` | <span class="status-optional">Optional</span> | The sales organisation that sells the article. If the same `article_id1` appears with several sales organisations in your article lists, Workist offers a choice on the line item. |
| 11 | `variants` | <span class="status-optional">Optional</span> | Configurable dimensions of the article (e.g. colour, size), format: `{'dimensions': [{'name': 'colour', 'values': ['red', 'blue']}]}`. Not used for recognition; serves as information for downstream systems. |
| 12 | `extra_data` | <span class="status-optional">Optional</span> | Additional information as a JSON object, e.g. `{"Brand": "Sample"}`. Workist stores it with the record and shows it in the data explorer. By default, Workist does not use it for recognition. |

Always provide several order or sales units as a list in **one** cell. Workist does not merge duplicate rows with different units: each row becomes a separate record.

## Format

> Columns that are not needed can be omitted from the data export.

Example file name: `article_list.csv`

```csv
article_id1;article_id2;description;gross_price;order_units
ART001;4001234;Schrauben M8x20 100er Pack;12.50;["Packung","Karton"]
ART002;4005678;Dübel 8mm 50er Pack;5.90;["Packung"]
ART003;4009999;Bohrmaschine XL Pro;149.99;["Stück"]
```

The example uses `;` as delimiter. Set the delimiter in the [import configuration](/en/docs/master-data/transformer-configuration.md); without a setting, Workist expects a comma.

Via the API you send the same columns as a CSV file or as JSON. Endpoint: [Swagger](https://api.workist.com/v1/swagger/#/Master%20Data/articles_imports_create), basics: [Using the Master Data API](/en/docs/api-documentation/master-data-api.md).
