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

# Products CSV

> Export and import Bloom pre-order, Notify Me, campaign, stock and recommendation settings for Shopify variants as CSV, with a preview before anything changes.

Edit many variants at once in a spreadsheet. Export from Bloom, change the cells you want, then import. Bloom previews every change before it's applied.

There are two files:

* **Products CSV** - pre-order, Notify Me, campaign and stock per variant. On **Pre-order → Configure products** and **Notify me → Configure products**.
* **Recommendations CSV** - curated lists per product or variant. On **Recommendations → Configure products**.

## Export

1. In Shopify admin, open **Apps → Bloom**.
2. Go to **Pre-order → Configure products** or **Notify me → Configure products**.
3. Click **More actions**.
4. Choose **Export all** for the whole catalogue, or **Export current view** for the variants matching your search and filters.

## Import

1. On the same page, click **Upload**.
2. Drop your file into the modal, then click **Upload**.
3. Review the summary - click **Show what changes** to see every changed field, old and new.
4. Click **Continue import**.

If any row has an error, nothing is imported. The modal lists each line that needs fixing. Click **Download errors** for the list as a CSV, fix the file, then click **Upload new file**.

<Warning>
  Importing reloads the page. Save or discard edits in the table first. Keep the page open until the import finishes.
</Warning>

* **Only `variant_id` is required.** Include just the columns you want to change. Columns left out stay unchanged.
* **A cleared cell deletes the stored value.** A cleared `preorder_enabled` turns pre-order off.
* **Dates are UTC.** Use `2026-08-01T09:00:00Z` for date-times and `2026-08-01` for `ship_date`.
* **Limits:** 5,000 rows per file and 500 changed variants per import. Split bigger files.

## Columns

| Column | What it holds |
| - | - |
| `variant_id` | Numeric Shopify variant ID. Required. |
| `sku`, `product_title`, `variant_title` | For reference. |
| `preorder_enabled` | `true` or `false`. |
| `oversell_limit` | Whole number, 0 or more. |
| `preorder_message` | **Message on PDP**. |
| `preorder_message_cart` | **Message in cart**. |
| `available_at` | **Show pre-order after** date-time. |
| `ship_date` | **Ships on** date. |
| `notify_me_disabled` | `true` hides Notify Me on the variant. |
| `notify_me_button_message` | Notify Me **Button Text**. |
| `notify_me_header_message` | Notify Me **Form Heading**. |
| `notify_me_message` | Notify Me **PDP Message**. |
| `notify_me_schedule` | Notify Me schedule date-time. |
| `notify_me_campaign` | Campaign key. Unknown keys are rejected. See [Campaigns](/bloom/notify-me/campaigns). |
| `inventory_available:<location id>` | Available stock at that location. Blank leaves stock unchanged. |
| `inventory_exported:<location id>` | Stock at export. Don't edit it. |
| `<column>:<market id>` | One market's override of a pre-order setting. Multi-market shops only. See [Market columns](#market-columns). |

## Stock

The export adds a pair of stock columns for each location that fulfils online orders. The file's header comments name each location.

* **Edit `inventory_available`** to set stock. Only whole numbers.
* **Stock changed since the export is rejected.** If a sale or restock moved the number in Shopify, that row fails - re-export to edit it.
* **Untracked variants can't be set.** Turn on inventory tracking in Shopify first.

## Market columns

On shops with two or more markets, the export adds a column per market for each pre-order setting: `preorder_enabled`, `oversell_limit`, `preorder_message`, `preorder_message_cart`, `available_at` and `ship_date`. Each is named `<column>:<market id>`, e.g. `oversell_limit:<market id>`. The file's header comments name each market.

* **Blank uses the default.** A blank cell removes that market's override.
* **`(none)` means none in that market.** Use it in a message, `available_at` or `ship_date` column.
* **Values follow the base column.** Same formats and checks, dates in UTC.

See [Pre-order by market](/bloom/pre-order/markets).

## Recommendations CSV

1. Go to **Recommendations → Configure products**.
2. Click **More actions → Export**, or **More actions → Download template** for a file with worked examples.
3. Edit the file, then click **Upload** and pick it.
4. Choose **Add** to keep current lists and add the file's picks, or **Replace** to overwrite each list with the file.

Importing continues if you close the modal.

| Column | What it holds |
| - | - |
| `owner_type` | `product` or `variant`. |
| `command` | `set` writes the list, `clear` removes it (a variant inherits again), blank leaves it alone. |
| `product_id` | Numeric product ID. Required. |
| `variant_id` | Required on variant rows, blank on product rows. |
| `recommendations` | Comma-separated IDs in the order shoppers see them - product IDs on product rows, variant IDs on variant rows. Max 128. |
| `enabled` | Variant rows only. `false` hides recommendations for that variant. |
| `draft` | `true` keeps the list unpublished. |

`product_title` and `variant_title` are ignored on import. Lines starting with `#` are ignored.

## Related

* [Configure a pre-order product](/bloom/pre-order/product-config)
* [Configure Notify Me products](/bloom/notify-me/product-config)
* [Curate recommendations](/bloom/recommendations/product-config)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.