Skip to content
feedlab Request early access

Feed format

Text (CSV)

Comma-delimited text feed

A CSV feed is a plain-text file with one header row naming the attributes and one row per product, fields separated by commas. It is the most widely accepted feed format and the easiest to produce, and its weakness is that any comma, quote or newline inside a value can split a row.

Specification

File extension
.csv .txt
Content type
text/csv; charset=utf-8
Compression
Gzip is accepted by most channels and required by OpenAI, which takes .csv.gz rather than a plain file.
One product is
One product per line. The first line is a header naming each attribute, and every subsequent line supplies values in that order, with empty fields left as consecutive commas rather than omitted.
Escaping
Any field containing a comma, a double quote or a line break must be wrapped in double quotes, and a literal double quote inside such a field is written twice. Encode as UTF-8 without a byte order mark, because a BOM attaches itself to the first header name and makes the id column unrecognisable.

A valid comma-delimited text feed

Two products, every required attribute, nothing omitted for brevity. Copy it and replace the values.

id,title,description,link,image_link,availability,price,brand,gtin,condition,item_group_id
SHIRT-BLK-M,"Northbound Oxford Shirt, Black, Medium","A long-sleeved Oxford shirt in 100% brushed cotton, with a button-down collar.",https://example.com/products/oxford-shirt?variant=101,https://cdn.example.com/oxford-black.jpg,in_stock,49.00 GBP,Northbound,05012345678900,new,SHIRT-OXFORD
SHIRT-BLK-L,"Northbound Oxford Shirt, Black, Large","A long-sleeved Oxford shirt in 100% brushed cotton, with a button-down collar.",https://example.com/products/oxford-shirt?variant=102,https://cdn.example.com/oxford-black.jpg,out_of_stock,49.00 GBP,Northbound,05012345678917,new,SHIRT-OXFORD

Which channels accept it

Channel support for Text (CSV)
Channel Support Notes
Google Shopping Supported Accepted as a text feed alongside tab-delimited files.
Meta Supported One of the primary formats for a Commerce Manager catalogue.
Microsoft Advertising Not supported Microsoft takes tab-delimited text rather than comma-delimited.
Pinterest Supported Accepted for a scheduled data source.
OpenAI Supported Accepted gzipped as .csv.gz, though Parquet is preferred.

What breaks a comma-delimited text feed

Descriptions break rows

A Shopify description stripped of its HTML still contains commas, quotation marks and often a line break. Unquoted, each of those splits the row, and the failure surfaces as a column-count error on a line number rather than as anything resembling its cause. Quote every text field rather than only the ones that currently need it.

A byte order mark hides the id column

Files written by spreadsheet software frequently begin with a UTF-8 BOM. The channel then reads the first header as a three-byte prefix followed by "id" and reports that the id attribute is missing, on a file that looks perfect in an editor.

Spreadsheets destroy identifiers

Opening a CSV in Excel or Sheets coerces numeric-looking strings to numbers. A twelve-digit UPC starting with zero becomes eleven digits, and a long GTIN can come back in scientific notation. Generating the file directly from the catalogue avoids the round trip entirely.

Empty is not the same as absent

A CSV has a fixed column count, so an attribute you do not want to send still occupies its comma. Some channels treat an empty value as an instruction to clear the field rather than as no data, which matters when you are supplying a partial update.

Frequently asked questions

What delimiter should a product feed CSV use?

A comma, with fields containing commas, quotes or line breaks wrapped in double quotes. Microsoft Advertising is the exception among the channels documented here: it takes tab-delimited text instead.

Why does my CSV feed say the id column is missing?

Almost always a UTF-8 byte order mark at the start of the file. The channel reads it as part of the first header name, so "id" is no longer recognisable. Write the file as UTF-8 without a BOM.

Can I edit a feed CSV in Excel?

You can open it, but saving it back is how leading zeros disappear from GTINs and long numbers turn into scientific notation. Generate the feed from the catalogue rather than editing the output.

Should a CSV feed be gzipped?

Most channels accept gzip and OpenAI requires it. For a large catalogue it is worth doing: a product feed is highly repetitive text and compresses to a small fraction of its size.

Errors this format causes

Related concepts

Primary sources

Channel specifications change. These are the official documents this page is based on.

Last reviewed View as markdown