Shopify csv import is the fastest way to load an existing product catalogue into your store without entering products one at a time — you prepare a comma-separated file in Shopify's template format and the platform processes your entire range in a single job. For South African operators building on Shopify, the native import tool works exactly as the documentation describes.

The gap is local: there are SA-specific formatting rules around price, character encoding, and VAT that global guides skip, and those rules break more imports than the file structure itself. When you bulk import Shopify products from an existing supplier catalogue or legacy system, those local rules are the difference between a clean first run and a debugging session that lasts half a day.

This guide covers the required column structure, the seven-step import process, the SA-specific traps that cause silent failures, and what to do about inventory after the import if you run more than one warehouse location. If you are working through a structured ecommerce build timeline, budget time to test your CSV against a development store before touching live product data — an import that starts cannot be stopped mid-run.

Quick Answer

A shopify csv import is a bulk product upload using a comma-separated file that matches Shopify's template. In your Shopify admin, go to Products → Import, upload the file, and confirm. Title is the only required column for new products without variants; Handle is also required when adding variants or updating existing records. For South African stores: format prices as plain decimals with no R prefix and a period as the decimal separator — not a comma. Save the file as UTF-8 (not Excel's default Windows-1252 encoding), keep all image URLs on public HTTPS servers, and export a backup of your existing products before using the overwrite option.

Struggling to Format Your Product Data for Upload?

Send us your raw catalogue and we will map exactly which columns you need and how to structure variant rows before you touch the import tool.

Send Us Your Catalogue

What the Shopify Product CSV Template Contains

The Shopify CSV file format covers product details, pricing, inventory, images, SEO, variant options, and international market columns — but for most SA stores a first import works with roughly a dozen of those fields. According to Shopify's CSV documentation, Title is the only column the platform requires to create a new product — everything else is optional, though missing fields mean incomplete listings.

ColumnRequired?FormatSA Note
TitleYes (new products)Text, max 255 charsFirst row of each product only; leave blank on variant rows
HandleFor variants & updatesLowercase, hyphens, no spacesChanging a handle after publishing breaks that product's URL
Body (HTML)NoHTML; wrap in double quotes if content contains commasRich product description
StatusNoactive / draft / archivedBlank defaults to active; use draft to import without publishing
VendorNoTextSupplier or brand name
TypeNoTextYour internal product category label
TagsNoComma-separated, in a quoted celle.g., "summer,sale,menswear"
Option1 NameFor variants onlyText (e.g., "Size", "Colour")Required if the product has variants; supports up to three option dimensions
Option1 ValueFor variants onlyText (e.g., "S", "Red")One row per option combination
Variant SKUNoTextYour internal stock code — see barcode vs SKU in Shopify for how each field is used
Variant PriceNo (practical must)Decimal, no symbolPlain decimal, period separator, no currency prefix — e.g., 299.00 (ex-VAT; see SA gotchas)
Variant Compare At PriceNoDecimal, no symbolOriginal price for crossed-out display; same format as Variant Price
Variant Inventory QtyNoWhole number (integer)No decimals; sets stock at your default location only
Image SrcNoPublic HTTPS URLNot Google Drive (unless shared publicly), not local paths, not intranet addresses
Image Alt TextNoText, under 125 charsDescribes the image for accessibility and product SEO
CollectionNo (import-only)Text, max 255 charsNot in Shopify's export — add it yourself; Shopify creates the collection if it does not exist

The safest starting point is to download the Shopify product CSV template directly from Products → Import in your admin rather than building the column structure from scratch — Shopify's own export file is the most reliable source of the correct headers.

A note on product taxonomy: if you need to think through how your product types and categories should be structured before the import, the ecommerce product taxonomy guide covers how to organise a catalogue hierarchy before it reaches Shopify.

Key Point: Status vs Published

Shopify's current CSV template uses a Status column (active / draft / archived) to control product availability. Importing products with Status set to draft lets you check every listing in the admin before anything goes live on your storefront — useful for large first-time imports where a few rows almost always need correcting.

How to Run a Shopify CSV Import Step by Step

A shopify csv import queues in seconds from the admin panel — the preparation work happens before you reach the import screen. The most reliable way to import products to Shopify is to complete and verify your CSV file first, then follow these steps exactly as documented in Shopify's Help Center.

  1. Products → Import. In your Shopify admin, navigate to the Products section and click Import in the top-right corner.
  2. Add file. Click Add file and select your CSV. The file must be 15 MB or smaller and UTF-8 encoded — if it is larger, split the catalogue into batches.
  3. Set channel options. By default, Shopify publishes imported products to all sales channels. If you want to review them first, deselect "Publish new products to all sales channels".
  4. Set overwrite behaviour. Tick "Overwrite products with matching handles" only if you are updating existing products. Warning: any column that is present but blank in your import file will erase the existing data in that field.
  5. Upload and continue. Click the button. Shopify validates the file structure and shows you a preview of what will be created or updated.
  6. Review the preview. Check the count of products and variants. If something looks wrong — wrong number of products, variants missing — stop here and fix the CSV rather than proceeding.
  7. Import products. Click the final import button. Once you confirm, the import cannot be cancelled. Shopify sends a confirmation email when the job completes.

Pre-Import Checklist for SA Stores

  • Store currency set to ZAR in Settings → General before importing
  • Prices formatted as plain decimals with a period, no R prefix (299.00)
  • File saved as CSV UTF-8 — not standard CSV from Excel, not Windows-1252
  • Do not sort rows in any spreadsheet editor after building image rows — only reorder products from a freshly exported copy
  • Image URLs on public HTTPS servers (not Google Drive folders requiring sign-in)
  • Handles unique across all products and URL-friendly (lowercase, hyphens, no spaces)
  • Variant rows include the same Handle as the parent product row
  • File size under 15 MB — split large catalogues into batches
  • Backup of existing product data exported before using the overwrite option

SA-Specific Gotchas That Break Your Product Upload

South African merchants encounter a consistent set of formatting problems that do not appear in global Shopify import guides — most of them rooted in how SA businesses typically prepare spreadsheets, handle pricing, and manage images. If your import is throwing errors or importing incorrect data, one of these five issues is usually the cause. For a full breakdown of error messages and fixes, see the Shopify CSV import error guide.

1. Wrong Price Format (the Most Common SA Mistake)

What breaks it: Adding an R currency prefix to prices, using a comma as the decimal separator, or including a comma thousands separator in the Variant Price column.

What Shopify requires: A plain decimal number with a period as the separator and no currency prefix — enter 299.00 not a currency-prefixed or comma-decimal equivalent. Shopify reads the plain number and displays it in your store's set currency (ZAR). The comma-as-decimal convention common in Afrikaans-language spreadsheets will either import as zero or cause a row error.

2. UTF-8 Encoding — the Afrikaans Product Name Trap

What breaks it: Saving your CSV from Microsoft Excel on Windows using the default "CSV (Comma delimited)" option. Excel on Windows saves in Windows-1252 encoding, which garbles characters like ê, ö, ü, é, and â — common in Afrikaans product names. Shopify returns the error "Illegal quoting on line" and refuses to import.

The fix: In Excel, choose Save As → CSV UTF-8 (with BOM) — it is a separate option from standard CSV. Better still, build your CSV in Google Sheets, which exports UTF-8 by default when you download as CSV.

3. Excel Sorting Scrambles Image Rows

What breaks it: Opening the CSV in Excel or Apple Numbers and sorting rows to reorder products. Shopify links images to products by row order under each Handle — sort the rows, and Shopify silently attaches images to the wrong products. Shopify's documentation explicitly warns against sorting in spreadsheet editors.

The fix: Use Google Sheets for all editing. If you must sort, export a fresh copy from Shopify first and do not sort after building image rows.

4. VAT: Do Not Manually Inflate CSV Prices for Tax

Shopify applies VAT at checkout based on your store's tax settings — it does not read tax from the CSV. Enter prices to match however your tax settings are configured: ex-VAT if Shopify is set to add VAT at checkout, or VAT-inclusive if your settings already show the tax-included price.

Avoid manually adding VAT to CSV prices when you have already configured Shopify's tax rules for South Africa. Doing so typically results in prices displaying with the tax applied twice — a problem that surfaces only once customers reach checkout.

5. Image URLs Must Be Publicly Accessible

What breaks it: Pasting Google Drive share links, Dropbox URLs that require sign-in, intranet addresses, or local file paths (C:\Images\product.jpg) into the Image Src column. Shopify fetches each image URL from the internet during import — if the URL is behind authentication or returns anything other than the image file, Shopify skips the image silently or logs a URL error.

The fix: Host images on a publicly accessible server. Shopify's own CDN (upload images first via the admin), a public AWS S3 bucket, or an unlocked Dropbox/Google Drive share link (one that opens the file directly) all work.

If Your Import Succeeds But Something Looks Wrong

Shopify's native importer does not always surface warnings for every skipped field — it simply imports what it can and ignores the rest. After every import, spot-check five to ten products in the admin: verify that images are attached to the right product, prices are correct, and variant combinations match your Option columns. Fix errors in the CSV and re-import only the affected rows using the overwrite option.

Inventory After a Bulk Product Upload — The Multi-Location Gap

Shopify's product CSV sets stock quantities only for your default location. If you have a Johannesburg warehouse and a Cape Town distribution point — or any secondary location enabled in Shopify — the product CSV does not populate those separately. This is the gap that catches SA merchants off guard when their Shopify inventory management shows correct totals for one location but nothing for the others.

The solution is a separate workflow: once the product import is complete, go to Products → Inventory in your Shopify admin, click Export, select your locations, and download the inventory CSV. That file has a separate quantity column per location. Edit the quantities, then re-import via the same Products → Inventory screen. Shopify's inventory CSV is distinct from the product CSV — it knows about location assignments that the product file does not carry.

As of July 2025, Shopify also supports bulk CSV importing for inventory transfers, which allows you to create stock movements between locations using a CSV template — a useful option if you are relocating stock between the Johannesburg and Cape Town facilities rather than setting opening quantities.

Moving a Large Catalogue to Shopify?

Share your current data setup and we will scope the migration — formats, image hosting, inventory mapping for your locations — at no cost.

Get a Free Migration Scope

When to Use the Native CSV Import vs Other Methods

Shopify's native CSV import is the right tool for first-time bulk loads and periodic manual catalogue updates, but it is not the right tool for every situation. The method you choose determines how much ongoing work the process creates.

SituationBest MethodWhy
Loading a new catalogue for the first timeNative CSV importFast, no app required, no cost
Updating prices or descriptions for a subset of productsNative CSV import (overwrite)Export → edit only changed fields → re-import with overwrite
Migrating from Magento, WooCommerce, or TakealotMigration app or agencyExport column structures differ; field mapping needs transformation before Shopify's template accepts the data
Real-time inventory sync from a warehouse or ERP systemInventory integration appCSV is a manual, point-in-time process — it cannot keep stock levels current across systems
Adding 5 or fewer productsManual admin entryFaster than building and debugging a CSV for a small number of products
Products with highly complex variant structuresShopify Plus or appShopify enforces a product variant limit per product that the CSV cannot override — check that limit before importing large option sets

The Overwrite Option Is Your Most Powerful Tool — and Your Biggest Risk

When you tick "Overwrite products with matching handles" and your import file includes a column that is present but blank, Shopify erases the existing data in that field. A column entirely absent from the file leaves the existing value untouched. This means the safest update workflow is: export your products, edit only the columns you are changing, leave all other columns exactly as exported, and re-import. Never build an update CSV from scratch with only the changed fields and blank placeholders for everything else.

Why South African Businesses Choose Growth Pulse Media for Shopify Builds

Growth Pulse Media is a registered Shopify Partner with a background in scaling South African ecommerce before the agency existed. That operating history means we have handled multi-SKU catalogue imports for SA merchants — including the variant-row structures, image hosting setups, and multi-location inventory configurations that take most merchants a full afternoon of debugging to figure out for the first time.

Our Shopify marketing and build work runs in-house, with senior attention on every store. We do not hand catalogue preparation to junior staff or offshore teams. If your data is messy — mixed price formats, product descriptions that need cleaning, images sitting on a local network share — we normalise it before it touches the importer, not after. We keep a limited number of active clients to maintain that standard.

Who This Is NOT For

Merchants adding fewer than 10 products. The time it takes to download Shopify's template, populate it correctly, and debug any format issues exceeds the time it takes to enter those products manually through the admin. Use the CSV import when the catalogue justifies the setup investment.

Stores migrating from another platform without data mapping. A WooCommerce, Magento, or Takealot export will not match Shopify's CSV column structure. Uploading a re-saved version of your current platform's export will fail or import garbage data. You need a field-mapping step that transforms the source format into Shopify's template before the import starts.

Businesses that need live inventory sync. The CSV import is a point-in-time, manual process. If your warehouse or ERP system needs to keep Shopify's stock levels current throughout the day — or even weekly — a CSV file you upload periodically will create stock discrepancies between uploads. An inventory integration app designed for your warehouse system is the right solution.

Anyone trying to delete products in bulk via the CSV. Shopify's native CSV import cannot delete products — it can only create or update. Removing products in bulk requires either a bulk delete app or manual selection in the admin. If your clean-up strategy includes removing discontinued lines at the same time as uploading new ones, handle the deletions first through the admin before running the import.

Want the Import Done Without the Debugging?

Our team handles catalogue preparation, CSV formatting, image hosting, and test imports in-house — book a free consultation and we will give you a clear timeline.

Book a Free Consultation

Frequently Asked Questions

What is the only required column in a Shopify product CSV?

Title is the only required column when you are adding new products without variants. If you are adding variants to a product, or updating existing products, Handle is also required. All other columns — including price, SKU, images, and status — are optional, though a product imported without a price or image is an incomplete listing that will need to be updated before it can meaningfully sell.

Why does my Shopify CSV import show garbled characters in product names?

Garbled characters almost always mean the file was saved in the wrong encoding. Shopify requires UTF-8, but Microsoft Excel on Windows saves CSV files in Windows-1252 by default, which mangles characters like ê, ö, ü, and é — common in Afrikaans product names. Fix it by choosing "Save As → CSV UTF-8" in Excel, or switch to Google Sheets, which exports UTF-8 automatically when you download as a CSV file.

How should I format ZAR prices in a Shopify product CSV?

Prices must be plain decimal numbers with a period as the decimal separator and no currency prefix — for example, 299.00. Including a currency prefix or using a comma as the decimal separator causes the row to fail or import the price as zero. Enter ex-VAT prices if your Shopify tax settings are configured to add South Africa's VAT at checkout.

Can the product CSV set inventory for multiple warehouse locations?

No — the product CSV sets inventory quantities only for your default location. If you have multiple locations enabled in Shopify (for example, a Johannesburg warehouse and a Cape Town distribution point), you need the separate inventory CSV accessed via Products → Inventory → Export/Import in your admin. That file has a quantity column per location and is a distinct process from the product import.

What happens if I use the overwrite option and leave columns blank?

Any column that is present in your import file but left blank will overwrite the existing field with nothing — effectively erasing that data for the matching product. A column that is entirely absent from the import file leaves the existing value unchanged. The safest update workflow is to export your products first, edit only the columns you intend to change, and leave all other columns exactly as exported before re-importing with the overwrite option enabled.

Ready to Import Your Product Catalogue to Shopify?

Growth Pulse Media handles Shopify catalogue preparation in-house — CSV formatting, image hosting, variant-row structures, and multi-location inventory setup. We are a registered Shopify Partner serving South African merchants, and we work with a limited client load to keep senior attention on every build. No obligation — we will get back to you within 24 hours.

Get a Free Consultation
Dirk van Greuning — Founder, Growth Pulse Media
Dirk van Greuning Founder, Growth Pulse Media

Founder of Growth Pulse Media and a specialist in South African search dominance. Dirk translates his experience in scaling South African businesses into high-velocity digital strategies for B2B and retail leaders. He writes about SEO, lead generation, and paid media from an operator's perspective — prioritising pipeline value over impressions.

Connect on LinkedIn