> For the complete documentation index, see [llms.txt](https://docs.claret.app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.claret.app/integrations/inbound-file-feed/finished-good-items.md).

# Finished Good Items

Finished-goods item master. Delivers Claret's full item hierarchy in a single file, with every level flattened across columns on each row.

## About the hierarchy

By default, Claret expects a four-level hierarchy: **Brand Group → Brand → Item → Vintage**. For example:

* **Brand Group:** `Premium`
* **Brand:** `ZAM`
* **Item:** `122` (ZAM Napa Valley Cabernet Sauvignon 12 x 750ml)
* **Vintage:** `122-16`, `122-17`, ... `122-24` (one per vintage year)

**If your item hierarchy differs in either depth or naming, that is fine.** Provide your own level names as column pairs in your hierarchy's order, from highest (most general) to lowest (most granular), using the pattern `{Level} Name, {Level} Description`. Replace `{Level}` with the name of each level you use. Examples:

* Two-level: `Item Name, Item Description, Vintage Name, Vintage Description`
* Three-level: `Brand Name, Brand Description, Item Name, Item Description, Vintage Name, Vintage Description`
* Five-level: `Category Name, Category Description, Brand Group Name, Brand Group Description, Brand Name, Brand Description, Item Name, Item Description, Vintage Name, Vintage Description`

If you adapt the columns to your own hierarchy, email `help@claret.app` describing your levels in order so the labels can be applied in Claret's UI.

## Planning level vs. Transactional level

This is a key concept for the integration. In the default hierarchy, **two of the four levels are referenced by other files**, and they serve different purposes:

| Level                        | Example  | Used as the reference in                                                                                                                                                      | Purpose                                                                             |
| ---------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| **Item** (`item_name`)       | `122`    | [Bottling Schedule](/integrations/inbound-file-feed/bottling-schedule.md), supply plans, budgets, forecasts                                                                   | Forward-looking **planning**: "we plan to bottle 1,500 cases of 122 in May"         |
| **Vintage** (`vintage_name`) | `122-16` | [Inventory](/integrations/inbound-file-feed/inventory.md), [Recipes](/integrations/inbound-file-feed/recipes.md), [Work Plans](/integrations/inbound-file-feed/work-plans.md) | Actuals / **transactional** data: "we have 879 cases of 122-16 in FG-GEN-BIN today" |

**Why the split:** Plans are made at the SKU-family grain (you commit to bottling a certain volume of `122` per period), but actual production, inventory, and recipes always operate on a specific vintage (`122-16`), because the wine in the bottle is a particular year's wine.

**Special case: items without a Vintage level.** Some items (e.g., `124` "ZAM Lodi Zinfandel 12 x 750ml" below) don't have vintages. For these, the **Item level** serves as both the planning and the transactional reference, and rows in this file will have the Vintage columns blank. Downstream transactional files for these items should reference the `item_name` directly.

## Schema

One row per leaf-level entry. For items with vintages, that's one row per vintage. For items without vintages, that's one row at the item level with the vintage columns blank.

<table><thead><tr><th>#</th><th>Column</th><th data-type="checkbox">Required?</th><th>Description</th><th>Example</th></tr></thead><tbody><tr><td>1</td><td><code>brand_group_name</code></td><td>true</td><td>Top-level grouping. Same value repeats across every row in that brand group.</td><td><code>Premium</code></td></tr><tr><td>2</td><td><code>brand_group_description</code></td><td>false</td><td>Long-form description of the brand group.</td><td><code>Premium group</code></td></tr><tr><td>3</td><td><code>brand_name</code></td><td>true</td><td>Mid-level grouping. Same value repeats across every row in that brand.</td><td><code>ZAM</code></td></tr><tr><td>4</td><td><code>brand_description</code></td><td>false</td><td>Long-form description of the brand.</td><td><code>ZAM brand</code></td></tr><tr><td>5</td><td><code>item_name</code></td><td>true</td><td><strong>The planning level.</strong> Referenced by Bottling Schedule and other planning files.</td><td><code>122</code></td></tr><tr><td>6</td><td><code>item_description</code></td><td>false</td><td>Long-form description of the item.</td><td><code>ZAM Napa Valley Cabernet Sauvignon 12 x 750ml</code></td></tr><tr><td>7</td><td><code>vintage_name</code></td><td>false</td><td><strong>The transactional level.</strong> Referenced by Inventory, Recipes, and Work Plans. Leave blank if this item has no vintages. <strong>Must be unique across all rows in the file when present.</strong></td><td><code>122-16</code></td></tr><tr><td>8</td><td><code>vintage_description</code></td><td>false</td><td>Long-form description of the vintage.</td><td><code>ZAM Napa Valley Cabernet Sauvignon 12 x 750ml 2016</code></td></tr></tbody></table>

## Header row

```
brand_group_name,brand_group_description,brand_name,brand_description,item_name,item_description,vintage_name,vintage_description
```

## Sample data

```csv
brand_group_name,brand_group_description,brand_name,brand_description,item_name,item_description,vintage_name,vintage_description
Premium,"Premium group",ZAM,"ZAM brand",122,"ZAM Napa Valley Cabernet Sauvignon 12 x 750ml",122-16,"ZAM Napa Valley Cabernet Sauvignon 12 x 750ml 2016"
Premium,"Premium group",ZAM,"ZAM brand",122,"ZAM Napa Valley Cabernet Sauvignon 12 x 750ml",122-17,"ZAM Napa Valley Cabernet Sauvignon 12 x 750ml 2017"
Premium,"Premium group",ZAM,"ZAM brand",122,"ZAM Napa Valley Cabernet Sauvignon 12 x 750ml",122-18,"ZAM Napa Valley Cabernet Sauvignon 12 x 750ml 2018"
Premium,"Premium group",ZAM,"ZAM brand",122,"ZAM Napa Valley Cabernet Sauvignon 12 x 750ml",122-19,"ZAM Napa Valley Cabernet Sauvignon 12 x 750ml 2019"
Premium,"Premium group",ZAM,"ZAM brand",122,"ZAM Napa Valley Cabernet Sauvignon 12 x 750ml",122-20,"ZAM Napa Valley Cabernet Sauvignon 12 x 750ml 2020"
Premium,"Premium group",ZAM,"ZAM brand",123,"ZAM Sonoma Coast Chardonnay 12 x 750ml",,
Premium,"Premium group",ZAM,"ZAM brand",124,"ZAM Lodi Zinfandel 12 x 750ml",,
```

{% hint style="info" %}
Rows 1-5: item `122` has multiple vintages, one row per vintage with parent columns repeated. Rows 6-7: items `123` and `124` have no vintages, single row each with vintage columns blank.
{% endhint %}

## Snapshot semantics

* Full snapshot every delivery. Include every currently-active item and vintage.
* An item or vintage omitted from a new snapshot is treated as retired; its history is preserved but no new transactional rows referencing it will be accepted.
* `item_name` must be unique across all rows. `vintage_name`, when present, must also be unique across all rows.
* All `Name` and `Description` columns should be populated where applicable. `Description` values appear in Claret's UI (tooltips, search, exports) and improve usability for the people working in the grids.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.claret.app/integrations/inbound-file-feed/finished-good-items.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
