Spreadsheets and CSV
Product feed from a spreadsheet: Etsy, Squarespace and hand-made sheets
How to turn a CSV from Etsy, Shopify, Squarespace or your own spreadsheet into a valid OpenAI product feed, and what columns you will need to add.
Checked against the sources on 7 October 2026
Not every shop has a public catalogue to read. Etsy sellers, Squarespace shops, market traders with a stock sheet and anyone on a platform we do not read directly can still get a feed. You export a CSV, upload it, and tell SKUHelm what each column means.
How the mapping works
When you upload a file, SKUHelm looks at the header row and guesses what each column is. A column called Variant Price becomes price. A column called Barcode becomes gtin. You can change any guess with a dropdown, and you can mark a column as not used.
You can also give a URL instead of a file. Any public CSV or JSON link works, including a Google Sheet published as CSV. A feed that refreshes from a link is much easier to keep current than one you re-upload by hand.
Etsy
Etsy lets you download your listings as a CSV from Shop Manager, under Settings, Options, then Download Data. Etsy's help page lists these columns: title, description, price, currency code, quantity, tags, materials, image URLs and SKU where you set one.
That is a decent start, but it is not the whole feed. Etsy's help page does not list a listing URL or a listing ID, and the spec needs a public URL for every item. So you add a column of links to your listings, one per row. Copy them from your shop page. It is dull work, but you only do it once per listing.
- Add a URL column with the public Etsy page for each listing.
- Add a brand. Your shop name is a fair answer for items you make yourself.
- Use the SKU as the item ID. If a listing has no SKU, give it a short fixed code yourself. Without an ID column, SKUHelm builds IDs from titles, and those change when you edit a title.
- Check variations. If your Etsy export has options such as size or colour, confirm how they appear in your file before you rely on them. Map them with the option name and option value targets if they are in separate columns.
Shopify and Squarespace exports
Shopify's product export is a CSV with one row per variant. Product details such as title and description are only filled on the first row for each product. SKUHelm carries them down to the other variants, using the handle as the group. The export also includes image URLs, not image files, as Shopify's help page points out, so your store has to stay public.
Squarespace and other platforms also offer product exports from their admin screens. Their columns differ, so check the header row and map what you can. We have not tested every platform's export, and you may need to add a URL column, a brand or a currency.
Getting a feed, step by step
- Export your catalogue as CSV. Save it as plain comma separated, not as a spreadsheet file.
- Open the file and check it has a header row, a column for the ID or SKU, and a column for the price.
- Add any missing columns: product URL, brand, currency code, stock quantity.
- Upload it at /check or in your SKUHelm account, and look over the column mapping.
- Read the report and fix what it flags in the sheet.
- Fill in store settings once: seller name, policy links, return policy, country.
- Publish. Free gives you a hosted feed of 25 items. Pro lifts that to 10,000 and can refresh from a link every hour.
Common failures
- Prices and currency. The feed wants a number and a three-letter currency code, like 24.00 GBP. Keep prices as plain numbers and put the code in a currency column, or set your store currency in store settings. Prices with no currency cannot be written.
- No stock column. Without quantity or availability, SKUHelm cannot tell whether an item is in stock. Add a quantity column. A quantity above zero becomes in_stock and anything else becomes out_of_stock.
- Descriptions full of HTML. They are stripped to plain text, but check the result still reads well.
- Leading zeros lost. Spreadsheets love to turn 00123 into 123. Format ID and barcode columns as text before you save.
- Semicolon-separated files. Some European spreadsheet settings save CSV with semicolons. If the columns look jumbled, save again as comma separated.
- Duplicate IDs. Two rows with the same ID will be treated as the same item. Every variant needs its own.
Upload your sheet and see what is missing before you spend an evening fixing it.
Check my spreadsheetQuestions
Can I use an Etsy export directly?
Almost. The export has titles, descriptions, prices and images, but Etsy's help page does not list listing URLs, which the spec requires. You add those yourself.
Does it work with Google Sheets?
Yes. Publish the sheet to the web as CSV and give SKUHelm the link, or download it as CSV and upload it.
What if I change a price in my sheet?
Re-upload the file, or, if you gave a link, sync again. On Pro, linked files refresh every hour and price, stock and title changes are recorded in the change log.
Can I use a JSON file instead?
Yes. A public JSON or JSONL link works too, and SKUHelm reads it into the same checks.
Does a clean feed mean ChatGPT will list my products?
No. OpenAI decides who is approved, and their documentation says feed onboarding is currently open to approved partners. A clean feed is what you will need if you are accepted.