***

title: Custom Inventory Fields
description: Extend the inventory model to track data specific to your projects and cargo.
---------------------

For clean Markdown of any page, append .md to the page URL. For a complete documentation index, see https://docs.esoapp.co.uk/guides/settings/llms.txt. For full documentation content, see https://docs.esoapp.co.uk/guides/settings/llms-full.txt.

# Custom Inventory Fields

While our system tracks standard data like weight and dimensions, every logistics project has unique requirements. **Custom Inventory Fields** allow you to extend our database with your own tracking parameters.

These fields appear in the **Inventory Detail** view, the **Bulk Upload** template, and can even be toggled to show up on printed **Packing Lists**.

***

## Field Types

When creating a new field, you can choose from several data types to ensure your team enters clean, valid data.

| Type            | Best Used For...                           | Example                     |
| :-------------- | :----------------------------------------- | :-------------------------- |
| **Text**        | General notes or short strings.            | `Vessel Name`               |
| **Number**      | Measurable values or counts.               | `Container Capacity`        |
| **Boolean**     | Yes/No toggles or checkboxes.              | `Hazardous Material?`       |
| **Date**        | Specific calendar days.                    | `Arrival Date`              |
| **Select**      | Choosing **one** option from a list.       | `End Color`                 |
| **Multiselect** | Choosing **multiple** options from a list. | `Applicable Certifications` |

***

## Creating a New Field

1. Go to **Settings > Inventory Fields**.
2. **Key:** This is the internal ID (e.g., `po_number`). It should be lowercase with no spaces.
3. **Label:** This is what the user sees (e.g., `PO Number`).
4. **Required:** If checked, an item cannot be saved without this data.
5. **Options:** (For Select/Multiselect only) Enter your choices separated by commas.

<Callout intent="warning">
  **The Key is Permanent:** Once a field is created, you can change the **Label**, but you cannot
  change the **Key**. This is because the Key is used to map your data in the database and CSV
  uploads.
</Callout>

***

## Display Options

You have granular control over where these custom fields appear in your daily workflow:

### Show in Table

Toggle this "On" to add a column for this field in the main **Inventory Dashboard**. This is great for data you need to scan at a glance, like `Container Number`.

### Show on Packing List

Toggle this "On" to include this field in the generated **PDF Packing Lists**. This is vital for data that carriers or customs officials need to see, such as `Seal Numbers` or `Country of Origin`.

***

## Managing Existing Fields

### Reordering

Use the **Up (↑)** and **Down (↓)** arrows to change the `Order Index`. This determines the sequence in which fields appear in the "Add Inventory" form and the columns in the CSV template.

### Archiving

If you no longer need to track a specific field for future projects, click **Archive**.

* **What happens?** The field will be hidden from forms and the bulk upload template.
* **Is data lost?** No. Any inventory items that already have data in this field will keep that data, but no new data can be entered.

***

## Pro-Tip: Data Consistency

If you are tracking something like "Port of Discharge," use a **Select** field instead of **Text**. This prevents "Port of LA" and "Los Angeles Port" from being entered as two different values, making your final reports much cleaner.