Shopify can import a catalog from a CSV file, which is the usual way to load many products at once. The catch is that Shopify's importer expects Shopify's column names and layout. A supplier spreadsheet, and almost every XML product feed, looks different. This guide walks through a Shopify import products CSV the official way, the format rules that make or break the file, what to do when the supplier sends XML, and how to keep stock and prices up to date afterwards.

The short answer

  1. Take a backup of your products, or export a CSV from Products first, so you can undo a bad import.
  2. In your Shopify admin, go to Products and click Import.
  3. Click Add file and choose a UTF-8 CSV. The file must be 15 MB or smaller.
  4. Choose whether new products should publish to all sales channels, and whether to Overwrite products with matching handles if you are updating existing products.
  5. Review the preview and start the import. Shopify does not let you cancel an import once it has started, and there is no import history; check the activity log if you need to see what changed.

These steps follow Shopify's help article on importing products with a CSV file. For a file that already uses Shopify's headers, that is all you need. For a supplier file, you usually have to reshape it first, or use a tool that reads the supplier's own columns.

What Shopify's CSV importer expects

Shopify documents the format in Using CSV files to import and export products. The important rules are:

  • The first row must be Shopify's column headers, with columns separated by commas. If the header row is wrong or missing, the import fails.
  • For new products, Title is required. If the product has variants, the URL handle column is required as well.
  • For updates, URL handle and Title are required. Shopify matches existing products by handle, not by SKU.
  • Save the file as UTF-8 with LF line breaks. Excel often saves a plain “CSV” in a regional encoding; choose CSV UTF-8, or export from Google Sheets.
  • The file cannot be larger than 15 MB. If the upload fails or times out, split the file into smaller batches, each with the same header row.
  • Images must already be on the web. The CSV can only contain image URLs, not files. 3D models and videos are not imported from the CSV.

The safest template is a file Shopify already understands. Export a few products under Products → Export, or download Shopify's sample product CSV from that help article, and copy your supplier data into those columns.

Variants, images and the overwrite option

A simple product uses one row, plus extra rows that only need the handle and further image URLs. A product with variants uses one full row for the first variant, then further rows that repeat the handle and fill in each variant's options, SKU, price, stock and image. Shopify explains this layout in the same CSV guide.

If you tick Overwrite products with matching handles, values in the CSV replace the matching columns on the existing product. Blank cells in a column that is present in the file can clear the value already in Shopify. A column you leave out of the file is left as it is. That is useful for a stock-and-price update, as long as your handles are stable and you only include the columns you mean to change. It is also the usual way a bad file overwrites titles, vendors or images by accident. Test with a handful of rows first.

CSV import cannot delete products in bulk, and it cannot bulk-update product availability on other sales channels.

Why a supplier CSV often fails

Most supplier files are not a Shopify product CSV. The usual problems are:

  • Different column names. A supplier might use “Item code”, “Qty” or “Wholesale”. Shopify looks for headers such as Variant SKU and Variant Inventory Qty. The first line has to match Shopify's names exactly.
  • A different delimiter or encoding. European spreadsheets often use a semicolon, and Excel may not save UTF-8. Shopify expects comma-separated UTF-8.
  • No handle. Updates and variants need a URL handle. A supplier SKU is not a handle.
  • Images as files or local paths. Only public image URLs work.
  • The file is an XML feed. Shopify's importer does not read XML at all. A search for “shopify import products xml” is common for that reason: you either convert the feed to Shopify's CSV or use an app that reads XML directly.

Shopify's common CSV import problems page is the right place to start if the admin shows a missing-header or format error. For a one-off catalog, fixing the spreadsheet is reasonable. For a feed that changes every day, reshaping it by hand each time is slow and easy to get wrong.

Keeping stock and prices up to date

A CSV import is a snapshot of the file you uploaded. It does not watch the supplier's feed. If you sell from a supplier's warehouse, prices and stock drift as soon as the supplier's file changes.

You can export your products, look up each SKU in the latest supplier file, paste in the new price and inventory, and import again with overwrite enabled. That works for a small catalog that changes once a week. It does not run on a schedule, and a column pasted one row out of line will update the wrong product.

If the supplier gives you a stable XML or CSV URL, a feed app can read that file in the supplier's own layout, match rows to your products, and update stock and prices on a schedule. That is the usual alternative to another round of spreadsheet work.

Importing a supplier feed with FeedPup

FeedPup is PLANO's app for this job. It is built to read a supplier's XML or CSV feed as it is, instead of forcing that file into Shopify's CSV template first. After you connect FeedPup to the Shopify store, paste the feed link your supplier gives you (or use a CSV upload where that is supported), review the suggested matches for titles, SKUs, prices, stock, images and options, and check a test import before you go further.

On other platforms FeedPup already does this today: you confirm the mapping, products can be tested before a full import, and paid plans re-read the feed on a schedule so stock and prices stay in line. Price markups and stock rules sit on eligible plans. The current plan structure, including the free test and the 14-day trial on paid plans, is on the FeedPup pricing page. On Shopify, billing is handled by Shopify.

The Shopify App Store listing URL is not on this page yet, so the button below goes to the FeedPup site. Once the listing is public, that link can be swapped for the official install page.

Get FeedPup for Shopify ↗

A practical rollout

  1. Export a few existing products from Shopify and keep that file as your format reference and backup.
  2. If the supplier file is already a Shopify product CSV, import a five-row sample first, then the rest.
  3. If it is a supplier spreadsheet or an XML feed, do not rename the columns and hope. Map the supplier fields (or use FeedPup to suggest the matches) and preview the result.
  4. Check a few imported products in Shopify: title, handle, variant options, price, inventory and images.
  5. Only then run the full catalog, and only tick overwrite when you intend to update existing products by handle.
  6. For recurring stock and price changes, switch from one-off CSV uploads to a scheduled feed sync.

Related FeedPup guides: import a supplier CSV into WooCommerce, import a supplier CSV into Wix, and fixing a CSV import that is not working.