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

# CSV product feed

> Import your product catalog from a CSV URL so Classic AI agents can answer product questions.

The CSV product feed imports products from a CSV file at a public URL into Chatarmin CX. Use it when your products don't live in a shop system cx connects to directly, such as an ERP export, a PIM feed, or a spreadsheet. Once imported, a Classic AI agent can use the catalog to answer product, price, and availability questions.

<Note>
  The feed is a product source for **Classic AI agents** only. [AI Agents](/ai-agents/intro) don't read CSV feed products. If you are moving to AI Agents, see [Migrate from Classic AI](/ai-agents/migrate-from-classic-ai).
</Note>

## When to use it

Use a CSV product feed when:

* your catalog lives in a system without a native cx integration
* you can publish a CSV export at a URL that cx can download
* you want a Classic AI agent to recommend products and quote prices, sizes, colors, or stock

If you sell on Shopify, connect [Shopify](/integrations/shopify) instead.

## Set up a feed

Publish your CSV at a URL that downloads the file directly, without a login. For Google Drive, share the file as **Anyone with the link can view**. For Dropbox, a normal share link works.

<Steps>
  <Step title="Open integrations">
    [Open integrations](https://armin.cx/app/_/settings/integrations) from your workspace settings and choose **CSV Product Feed**.
  </Step>

  <Step title="Add the feed">
    Click **Connect**. Enter an **Integration Name** (a label for your team) and the **CSV URL**, then click **Connect** in the dialog. cx starts the first import right away.
  </Step>

  <Step title="Check the import">
    Click the feed under your connected accounts. The **Sync Status** box shows **Synced** with the number of products and variants once the import finishes, or **Failed** with the error.
  </Step>

  <Step title="Link the feed to a Classic AI agent">
    Open the Classic AI agent, go to **Sources** → **AI Integrations**, and choose **CSV Product Feed**. Under **Connected Feeds**, click **Connect** next to your feed. It shows a **Connected** badge.
  </Step>
</Steps>

<Tip>
  You can link one feed to several Classic AI agents, and an agent can use several feeds. To unlink a feed, click the remove icon next to it under **Connected Feeds**.
</Tip>

## Prepare your CSV

cx has no fixed template. On import, it reads the header row and a few sample rows and uses AI to work out which column holds which product detail. Header names in English or German work, such as `Artikelnummer` or `Preis`.

Each file needs at least:

* a **product ID** column. If there is none, cx can use a product URL column and take the last part of the URL as the ID.
* a **product title** column

cx can also pick up description, short description, product URL, image URL, status, tags, vendor, product type, variant ID, variant title, price, SKU, stock quantity, in-stock flag, size, and color. Other useful columns are kept as extra product details.

For example, a file with these headers maps cleanly:

```csv theme={null}
product_id,title,description,price,sku,size,color,in_stock,url,image_url
```

How rows become products:

* **Variants**: rows with the same product ID become one product, with each row as a variant (for example, one row per size).
* **Prices**: write prices like `1234.56`, `1234,56`, or `1.234,56`. Currency symbols are allowed. Avoid commas as thousands separators: `1,234.56` is read incorrectly. The currency comes from the symbol in the first row's price (`€`, `$`, `£`, `¥`) and defaults to EUR.
* **Stock**: values like `yes`, `true`, `1`, `in stock`, or `available` count as in stock. `no`, `false`, `0`, `out of stock`, or `unavailable` count as out of stock.
* **Status**: `inactive`, `draft`, `hidden`, or `archived` mark a product inactive. Inactive products are removed from the agent's knowledge.
* Rows without a product ID are skipped.
* Commas, semicolons, pipes, and tabs all work as separators.

## How syncing works

cx imports the feed:

* when you first connect it
* when you click **Re-sync Products** in the feed's **Sync Status** box
* when you link the feed to a Classic AI agent, if the last import is more than 12 hours old

There is **no automatic schedule**. After you update the file at the URL, click **Re-sync Products** so cx picks up the changes. A re-sync also re-detects the columns, so it handles renamed or added columns.

Products are matched by product ID, so a changed row updates the existing product instead of creating a duplicate.

<Warning>
  Removing a row from the CSV does **not** remove the product from cx. To stop an agent from offering a product, keep the row and set its status to `inactive`, or unlink the feed from the agent.
</Warning>

## Remove a feed

In [integrations](https://armin.cx/app/_/settings/integrations), open **CSV Product Feed**, open the **Connected** menu on the feed, and choose **Disconnect**. Confirm with **Delete**.

## Troubleshooting

### The status shows Failed

* Open the CSV URL in a private browser window. If you see a web page or a login screen instead of a file download, cx can't read it either. Fix the sharing settings and click **Re-sync Products**.
* For Google Drive, make sure the file is shared as **Anyone with the link can view**.
* If the error says a product ID or title column was not found, add clear headers for them and re-sync.

### Products are missing or details look wrong

* Check that the row has a product ID. Rows without one are skipped.
* Rows that share a product ID merge into one product. Give products their own IDs if they were merged by mistake.
* Click **Re-sync Products** after you change headers, so cx detects the columns again.

### The Classic AI agent doesn't mention the products

* Confirm the feed shows **Connected** under the agent's **Sources** → **AI Integrations** → **CSV Product Feed**.
* Check that the products are not marked inactive in the CSV.


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