Shopify Import CSV Products: The Easiest Way to Move 500+ Products
Moving 500+ products to a new platform is where most store launches quietly go sideways. We have watched teams burn three weeks re-typing product data by hand, and we have watched other teams get 1,800 SKUs live in a single afternoon because they got the CSV structure right the first time. The difference is not effort, it is method. This guide walks you through exactly how to Shopify import CSV products at scale, from cleaning your source data to validating every variant, so your catalogue lands correct, searchable, and ready to sell.
TL;DR
Structure First: The single biggest predictor of a clean bulk import is a correctly formatted CSV that matches Shopify’s exact column schema. Get the headers and Handle logic right and 90% of import failures disappear before you ever hit upload.
CSV Import Is Free And Native: Shopify ships a built-in CSV product importer on every plan at no extra cost, and it can handle thousands of rows. The paid part is only the labor of preparing the file, which is where most of the 8 to 20 hours on a 500-product move actually goes.
Validate Before You Trust: Never treat a successful upload as a successful import. Roughly 1 in 6 large imports we audit has silent errors like collapsed variants, dropped images, or mis-mapped inventory, so a structured post-import QA pass is non-negotiable.
Step 1: Audit and Export Your Existing Product Catalogue
Before you touch a single Shopify screen, you need a clean, complete inventory of what you actually have. When we scope this for clients, the first thing we ask for is a raw export of the current catalogue, because you cannot migrate data you have not counted. A store that thinks it has “around 500 products” almost always has a different real number once variants, out-of-stock items, and archived drafts are included, and that gap is exactly where import errors hide.
Start by exporting from your current platform in the most granular format available. On WooCommerce that is the built-in product CSV exporter or a plugin export. On Magento, BigCommerce, or a custom stack, pull a full database export or API dump. The goal is one authoritative source file that contains every field you care about: title, description, SKU, price, compare-at price, inventory quantity, weight, images, categories, and every variant option.
What data actually matters when you move products?
Not every column in your old system deserves a seat on the new one. We sort source fields into three buckets: must-migrate, nice-to-have, and leave-behind. Being ruthless here saves hours of cleanup later.
Data field Priority Why it matters Title, SKU, price Must-migrate Core commerce data, breaks checkout if wrong Variants (size, color, etc.) Must-migrate Most common source of silent import failures Product images Must-migrate Directly tied to conversion, hard to re-source Inventory quantity Must-migrate Prevents overselling on day one SEO handle / URL slug Nice-to-have Preserves search equity if mapped to redirects Legacy category IDs Leave-behind Rarely map cleanly, rebuild as Shopify collections Internal admin notes Leave-behind Clutter, not customer-facing
Pro Tip: Export your product images as a column of publicly reachable URLs, not as file attachments. Shopify’s CSV importer pulls images by URL at import time, so if your old images live on an unreachable staging server or behind a login, they will silently fail to attach and you will not know until you audit. Keep the old store live and public until the import is fully validated.
How many products do you really have?
Run a quick reconciliation. Count total parent products, then count total variants, because Shopify treats each variant as its own row in the CSV. A catalogue of 500 parent products with an average of 3 variants each is really 1,500 rows to import. This number drives your timeline: in our experience a well-prepared file of up to 1,000 rows imports and validates in about 4 to 6 hours of hands-on work, while 5,000+ rows crosses into the 2 to 3 day range with QA.
Checkpoint: You know your exact parent-product count and variant-row count, and you have a single master export file saved somewhere safe before any edits begin.
Section checklist:
- Source Export: Pulled a complete, granular export from the old platform including drafts and out-of-stock items.
- Field Triage: Sorted every column into must-migrate, nice-to-have, or leave-behind.
- Image URLs: Confirmed all product image URLs are public and reachable.
- Row Count: Calculated true row count including all variants, not just parent products.
- Master Backup: Saved an untouched copy of the original export before any cleanup.
Step 2: Understand the Shopify Product CSV Format
Here is the part that trips up nearly everyone attempting to Shopify import CSV products for the first time. Shopify does not accept “a CSV,” it accepts a very specific CSV with named columns in a structure that behaves differently from almost every other e-commerce platform. Learning this schema before you format your file is the highest-leverage thing you will do in this entire process.
The fastest way to internalize the format is to download Shopify’s own sample product CSV template from the Products page inside your admin. It gives you the exact column headers, in the exact order, with example rows. Do not build your file from memory or from a blog post, always start from the live template Shopify hands you, because the schema does get updated.
The Handle column is the whole game
The single most important column in a Shopify product CSV is Handle. The Handle is the unique identifier that ties multiple rows together into one product. This is the concept that catches people out: in Shopify, a product with three variants is not one row, it is three rows that all share the same Handle. The first row carries the title, description, and product-level data, and the following rows with the same Handle carry only the additional variant information.
Get the Handle logic wrong and you get one of two disasters: either your variants collapse into a single product incorrectly, or one product explodes into dozens of separate near-empty products. When we audit failed imports, mismatched or inconsistent Handles are the number one root cause, present in roughly 40% of the broken files we see.
Which columns are required versus optional?
You do not need to populate every column, but you must respect which ones are mandatory for a product to publish.
Column Required? Notes Handle Yes Unique per product, shared across its variant rows Title Yes (first row only) Leave blank on subsequent variant rows Variant Price Yes Every sellable variant needs a price Variant SKU Recommended Needed for inventory tracking and reporting Variant Inventory Qty Recommended Drives stock levels on launch Option1 Name / Option1 Value If variants exist e.g. Size / Large Image Src Recommended Public URL, one per row for extra images Body (HTML) Optional Product description, accepts HTML Status Optional active, draft, or archived
Pro Tip: If your products have no variants, you still populate Option1 Name with “Title” and Option1 Value with “Default Title” on the single row. Trying to leave those blank on a no-variant product is a subtle cause of import warnings that confuses first-timers into thinking something is broken when it is not.
Checkpoint: You have downloaded Shopify’s official sample CSV, you can explain in one sentence what the Handle column does, and you understand that variants are additional rows sharing a Handle.
Section checklist:
- Official Template: Downloaded the current sample CSV directly from your Shopify admin.
- Handle Logic: Confirmed you understand shared-Handle rows for multi-variant products.
- Required Columns: Identified which columns are mandatory for your specific catalogue.
- Option Mapping: Planned how your existing variant attributes map to Option1/2/3.
- Encoding Check: Confirmed the file will be saved as UTF-8 CSV, not Excel’s default encoding.
Step 3: Clean, Map, and Transform Your Data
You now have a source export and you understand the destination format. Step 3 is the bridge between them, and it is where the real work lives. This is data transformation: reshaping your old columns into Shopify’s schema, cleaning up inconsistencies, and getting your variants into the shared-Handle structure. For a 500-product catalogue, budget 4 to 10 hours here depending on how messy the source data is.
At Presta, we have seen source files where the same color was written eleven different ways (“Navy,” “navy blue,” “NAVY,” “Blue-Dark”) across the catalogue. Every inconsistency like that becomes a broken filter or a duplicate variant option on the new store, so this cleanup step directly determines how professional the finished catalogue looks and how well it converts.
The CLEAN Data Framework
We run every migration file through a repeatable five-step process we call the CLEAN framework, because doing these in order prevents you from redoing work.
Step Action Outcome C – Consolidate Merge all source data into one working sheet Single source of truth to edit L – Label Rename columns to match Shopify’s exact headers File maps 1:1 to Shopify schema E – Eliminate Delete leave-behind fields and dead products Smaller, faster, cleaner file A – Align Standardize values (colors, sizes, units) Consistent filters and variant options N – Nest Restructure variants into shared-Handle rows Products import as products, not fragments
The Nest step is the one people underestimate. Restructuring a flat variant table into Shopify’s parent-plus-child row format is fiddly, and it is why we often reach for a spreadsheet formula or a lightweight script rather than doing it by hand once you are past a few hundred rows.
Should you use a migration app instead of manual CSV?
Sometimes, yes. If your catalogue lives in WooCommerce, Magento, or BigCommerce, dedicated migration apps can automate a large share of this transformation and are worth serious consideration above roughly 2,000 SKUs or when you also need to move orders and customers, not just products. We break down the full platform trade-offs in our complete guide to WooCommerce to Shopify benefits, and if you are specifically leaving WooCommerce, our walkthrough on how to migrate from WooCommerce to Shopify in 2025 covers the app-versus-CSV decision in depth.
For a pure product move of 500 to 2,000 SKUs where you control the data, a well-prepared CSV is usually faster and cheaper than app subscriptions, and it gives you total control over exactly how the finished catalogue looks.
Method Best for Effort Typical cost Manual CSV import 100 to 2,000 products, product data only Medium (4 to 12 hrs prep) Free (native tool) Migration app 2,000+ products, or orders + customers too Low-medium (setup + review) $50 to $300+ per migration Agency-managed Complex catalogues, zero-downtime, redesign Low for you, high value Project-based
Checkpoint: Your working file has Shopify-exact column headers, standardized values, and variants correctly nested under shared Handles, with a test slice of 5 to 10 products ready to trial-import first.
Section checklist:
- Single Sheet: Consolidated all source data into one working file.
- Header Match: Renamed every column to Shopify’s exact schema.
- Value Standardization: Aligned colors, sizes, and units to consistent formats.
- Variant Nesting: Restructured variants into shared-Handle parent-child rows.
- Test Slice: Carved out a 5 to 10 product sample to trial-import before the full run.
Step 4: Run a Test Import Before the Full Upload
Never run your first import on the full file. This is the rule we enforce on every project without exception, because a failed import of 1,500 rows means you either delete 1,500 products and start over or spend hours untangling duplicates. A failed import of 8 test rows means you fix one formula and move on.
Take the 5 to 10 product test slice you carved out in Step 3, ideally choosing your most complex products: the ones with the most variants, multiple images, and long HTML descriptions. If the hard cases import cleanly, the simple ones almost certainly will too.
How do I import products from CSV to Shopify?
The actual mechanics are simple once your file is ready. Inside your Shopify admin, go to Products, click Import, upload your CSV, and choose whether to overwrite existing products with matching Handles. Shopify processes the file and emails you a summary when it finishes, flagging any rows it could not read.
For the test slice, do the following:
- Upload the test CSV with “overwrite” unchecked on the first pass.
- Wait for the completion email, which usually arrives within a few minutes for a small file.
- Open each imported test product manually in the admin.
- Compare it field by field against the source: title, price, every variant, every image, inventory, and description formatting.
- Note every discrepancy, then fix the root cause in your master file, not just the visible symptom on the one product.
If your test slice imports perfectly, you have de-risked the entire full run. This single step is why our managed imports have a re-do rate of under 5%, versus the industry norm we see closer to 30% for first-time DIY imports.
A clean test import of your ten hardest products is worth more than a hundred hours of hoping the full file works.
Pro Tip: When you fix an error in your master file, write down what caused it. On a 500-product file, the same mistake is almost always repeated across dozens of rows, so a find-and-replace fix on the whole column is faster and safer than patching individual products after the fact.
Checkpoint: All test-slice products appear in the admin exactly matching their source data, with every variant and image present, and every error you found has been fixed at the column level in the master file.
Section checklist:
- Hard Cases First: Selected the most complex products for the test slice.
- Dry Run: Imported the small file before ever touching the full catalogue.
- Field-By-Field QA: Manually compared each test product to its source.
- Root-Cause Fixes: Corrected errors at the column level in the master file.
- Error Log: Documented every issue and its cause for the full run.
Turn Your Migration Into a Growth Moment With Presta’s Startup Studio
Moving 500+ products is the perfect trigger to fix everything that was holding your old store back, not just replicate it on new software. Our Startup Studio team frequently builds catalogues that convert harder than the originals, restructuring product data, collections, and filters so customers find and buy faster from day one. If you want your import handled cleanly and your storefront engineered to sell, hire Presta’s Startup Studio to launch and scale and we will treat the migration as the growth event it should be.
A migration done right routinely lifts conversion, not just preserves it. For a real example, when we built a brand new Shopify store for Metalne Police, a Croatian metal shelving retailer whose products are bought purely on numbers like dimensions, load capacity per shelf, and total system weight, we treated the specifications as the interface itself. We replaced downloadable spec sheets and phone calls with structured product data shown directly on the page, organized the catalogue by space and use case, and shipped a single native Shopify checkout localized in EUR. A first-time visitor can now go from “I need shelves for my garage” to a completed order without contacting anyone, and conversions increased 18% compared to the previous setup. Heavy products, as it turns out, do not need a heavy platform.
“Our clients are usually old school and they need a very straightforward and easy way of online shopping. Presta delivered exactly that!” – Davor Katalinic, CEO, Metalne Police
Step 5: Run the Full Import and Handle Errors
With a validated test slice behind you, the full import is mostly a matter of patience and attention. Upload your complete master CSV through Products, Import, and let Shopify process it. Larger files take longer: expect a few minutes for 500 rows and up to 20 or 30 minutes for several thousand rows. Do not close the tab in a panic if it seems slow, and rely on the completion email as your signal.
What do Shopify’s import errors actually mean?
Shopify’s completion email and admin will flag rows it skipped or partially imported. The most common errors, and what they really mean, break down predictably.
Error signal Likely cause Fix Product missing / row skipped Blank Handle or blank required field Populate Handle and required columns Variants collapsed to one Inconsistent Handle across variant rows Make Handles identical for shared products Images missing Image URL unreachable or malformed Confirm public, correctly formatted URLs Duplicate products created “Overwrite” unchecked on re-import Re-import with overwrite matched by Handle Prices showing as zero Comma or currency symbol in price cell Use plain numbers, no symbols or separators
When errors do appear, resist the urge to fix them one by one in the admin. Fix the master CSV, delete the affected products in bulk, and re-import. Editing in two places at once is how you end up with a catalogue that no longer matches any file, which makes future updates a nightmare.
Is CSV import free on Shopify?
Yes. The CSV product importer is a native, built-in feature available on every Shopify plan, including the entry-level tier, at no additional charge. There is no per-product fee and no cap that a normal catalogue would ever hit. The only costs in a CSV migration are the labor of preparing the file and, optionally, a migration app if you choose one for very large or complex catalogues. This is one of the structural advantages we cover in our piece on why Shopify is more than just a platform: the tooling to run your own catalogue day to day is included, with zero server maintenance.
Checkpoint: The full catalogue is imported, the completion email shows zero unresolved errors, and your product count in the admin matches your expected parent-product count from Step 1.
Section checklist:
- Overwrite Setting: Chose the correct overwrite option to avoid duplicates.
- Completion Email: Waited for and read the full import summary.
- Error Triage: Mapped each flagged error to its root cause.
- Master-File Fixes: Corrected errors in the CSV, not scattered across the admin.
- Count Match: Verified admin product count equals expected parent count.
Step 6: Validate, Organize, and Optimize the Imported Catalogue
A successful upload is not a successful launch. This is the step that separates a catalogue that merely exists from one that sells. Roughly 1 in 6 large imports we audit passes Shopify’s own checks but still has silent problems: variants in the wrong order, primary images not set, descriptions with broken HTML, or products missing from their collections. Your job now is to catch those before customers do.
The post-import validation pass
Work through a structured QA rather than randomly clicking around. We validate in this order because it moves from most-damaging to least-damaging issues.
- Checkout integrity: Add several products with variants to a test cart and complete a test order. This confirms prices, variants, and inventory all wired correctly.
- Image assignment: Spot-check 10% of products to confirm the correct primary image and image order.
- Variant order and options: Confirm sizes and options display in a logical order (Small, Medium, Large, not alphabetical chaos).
- Description formatting: Scan for broken HTML, stray tags, or lost line breaks in Body (HTML).
- Collections and navigation: Confirm products fall into the right collections and appear in menus.
Organize by how customers actually shop
Importing products is only half the job. The other half is organizing them the way buyers think. This is exactly what moved the needle for Metalne Police: we organized the catalogue by space and use case rather than by internal SKU groupings, and we answered the fit-and-capacity question right on the product page. When we scope a redesign alongside a migration, this restructuring is where most of the conversion lift comes from, and we go deep on the trade-offs in our complete guide to Shopify store redesign, agency versus DIY.
Build Shopify collections (both manual and automated by tag or type), set up clear filters, and make sure the highest-margin or best-selling products are surfaced first. A catalogue that is technically complete but hard to navigate leaves conversion on the table.
Pro Tip: Set up automated collections using tags you added during the CLEAN framework’s Align step. If you standardized values properly in Step 3, you can build an entire filtered navigation in under an hour, because your data is already consistent. Messy data means manual collection-building, which is where teams lose another full day.
Checkpoint: A test order completes end to end, spot-checked products display correctly, and every product appears in its correct collection with working filters.
Section checklist:
- Test Purchase: Completed a real test order through checkout.
- Image QA: Confirmed correct primary images on a 10% sample.
- Variant Sanity: Verified logical variant ordering and option names.
- HTML Scan: Checked descriptions for broken formatting.
- Collection Logic: Organized products by how customers shop, not internal SKUs.
Step 7: Preserve SEO Equity and Set Up Redirects
If you are moving from an existing store, this step protects revenue you already have. Every old product URL that returns a 404 after migration is lost search traffic and lost sales, and on a 500-product catalogue that can mean thousands of monthly visits vanishing overnight. Shopify’s CSV import handles product data, but it does not automatically redirect your old URLs, so this is a manual step you cannot skip.
How to map old URLs to new ones
Shopify generates product URLs from the Handle, in the pattern yourstore.com/products/the-handle. Your old platform almost certainly used a different URL structure. The fix is a redirect map: a list pairing every old URL with its new Shopify URL, imported through Shopify’s URL redirects tool, which also accepts a CSV.
- Export your old URL list (from your CMS, sitemap, or a crawl tool).
- Match each old URL to its new Shopify product URL by SKU or Handle.
- Create 301 redirects in bulk via Online Store, Navigation, URL Redirects.
- Verify a sample of redirects resolve correctly to live products.
Doing this preserves the search authority those pages already earned. Skipping it is one of the most expensive mistakes in a migration, and it is entirely avoidable. We treat zero-downtime, SEO-safe cutover as a core deliverable, which we detail in our guide on how to migrate WooCommerce to Shopify with no downtime.
Checkpoint: A redirect map covers every old product URL, 301 redirects are live in Shopify, and a sample of old URLs resolves to the correct new product pages.
Section checklist:
- URL Inventory: Exported the complete list of old product URLs.
- Redirect Map: Paired each old URL to its correct new Shopify URL.
- Bulk 301s: Imported redirects via Shopify’s URL redirects tool.
- Sample Test: Verified live redirects resolve to the right products.
- Sitemap Submit: Submitted the new Shopify sitemap to Search Console.
Measuring Success: 30/60/90 Day KPIs
An import is not finished when the products go live, it is finished when the data proves the move worked. We hold every migration to a measurable 30/60/90 day framework so there is no ambiguity about whether the effort paid off. Guessing is not a strategy; the numbers below are.
Timeframe KPI focus Target signal Day 30 Data integrity and indexing 100% of products live, 301s indexing, 404s trending to zero Day 30 Checkout health Test and live orders processing with correct pricing and inventory Day 60 Organic recovery Organic sessions recovered to 90%+ of pre-migration baseline Day 60 Conversion rate Conversion at or above previous platform, aiming for a 5 to 18% lift Day 90 Revenue and AOV Revenue meeting or exceeding pre-migration run rate, stable or improved AOV Day 90 Operational load Team running catalogue updates independently, zero server maintenance
The 60-day organic recovery metric is the one most teams forget to watch. A migration can look perfect operationally while quietly losing search traffic, and if you have not baselined your pre-migration organic sessions, you have no way to know. Capture that baseline before you cut over.
Section checklist:
- Baseline Capture: Recorded pre-migration organic sessions, conversion, and AOV.
- 404 Monitoring: Tracked and drove product 404s toward zero by day 30.
- Organic Watch: Confirmed 90%+ organic recovery by day 60.
- Conversion Compare: Measured post-migration conversion against baseline.
- Independence Check: Verified the internal team can run the catalogue solo by day 90.
Common Mistakes When You Shopify Import CSV Products
Mistake: Treating variants as separate products. Why It Happens: The migrator does not understand that Shopify uses a shared Handle across multiple rows to group one product’s variants. Fix: Give every variant of the same product the identical Handle and leave title and description blank on all rows after the first.
Mistake: Uploading the full file with no test run. Why It Happens: Confidence or time pressure leads people to skip the small trial import and go straight for the whole catalogue. Fix: Always import a 5 to 10 product test slice of your hardest products first, validate it, then run the full file.
Mistake: Skipping URL redirects after migration. Why It Happens: The CSV import completes successfully, so the migrator assumes the job is done and never sets up 301s for old URLs. Fix: Build a redirect map pairing every old product URL to its new Shopify URL and import it before or immediately after go-live to protect search traffic.
Advanced Tips for Large or Complex Catalogues
Once you are past the fundamentals, a few practitioner techniques separate a decent import from a bulletproof one, especially above 2,000 SKUs or on ongoing, high-frequency catalogue updates.
Use metafields for structured data. If your products carry technical specs, like the dimensions and load capacities in the Metalne Police catalogue, load them into Shopify metafields via CSV rather than burying them in the description. Structured metafields let you build spec tables, filters, and comparison features that plain descriptions never can, and they make the specifications themselves the interface.
Split imports by product type. Rather than one giant file, import in logical batches by category or brand. Smaller files import faster, fail more gracefully, and make error-tracing dramatically easier. A 3,000-row import that fails tells you very little; a 300-row import that fails tells you exactly which category has the problem.
Script your transformations for recurring imports. If you will re-import regularly, for example a supplier feed that updates weekly, invest an afternoon in a repeatable script or a spreadsheet template that reshapes the supplier’s format into Shopify’s schema automatically. This turns a recurring 4-hour manual chore into a 10-minute task, and it is exactly the kind of durable tooling we build for clients who manage large or fast-moving catalogues.
Leverage draft status for staged launches. Import products as “draft” status, validate everything privately, then bulk-publish when ready. This lets you build the full catalogue behind the scenes without exposing half-finished products to customers or search engines.
Section checklist:
- Metafields: Loaded structured specs into metafields, not descriptions.
- Batch Imports: Split large catalogues into logical per-category files.
- Repeatable Tooling: Built a reusable transformation for recurring feeds.
- Draft Staging: Imported as drafts for private validation before publishing.
- Backup Discipline: Kept a versioned copy of every CSV you upload.
If you are just getting started with a brand new store, prioritize Steps 2 and 3 above everything else: nail the CSV format and clean your data, because a correctly structured file makes the actual import trivial. If instead you are auditing a catalogue that is already live on Shopify and something looks wrong, start at Step 6, run the validation pass, and work backward to find whether the issue is a Handle problem, a missing redirect, or messy source data that came across dirty. Do not rebuild what already works, just find and fix the silent errors.
Next Steps:
- Download Shopify’s official sample product CSV and open it side by side with your current export.
- Carve out a 5 to 10 product test slice of your most complex products and trial-import it today.
- Capture your pre-migration organic sessions and conversion baseline before any cutover so you can prove the move worked.
Frequently Asked Questions
How do I import products from CSV to Shopify?
In your Shopify admin, go to Products, click the Import button, and upload your prepared CSV file. Shopify will let you choose whether to overwrite existing products that share a Handle, then it processes the file and sends you a completion email summarizing how many products were imported and flagging any rows it could not read.
The mechanics take about two minutes; the preparation is where the real work is. Your CSV must match Shopify’s exact column schema, with a Handle column grouping variants, required fields like Title and Variant Price populated, and image URLs that are publicly reachable. Always run a small test import of 5 to 10 products first, validate that they look correct in the admin, then import the full file.
After the full import completes, do a structured validation pass: complete a test purchase, spot-check images and variants, and confirm products land in the correct collections. A successful upload is not the same as a correct catalogue, so budget time for QA after the file goes in.
What CSV format does Shopify accept for product import?
Shopify accepts a UTF-8 encoded CSV file with a specific set of named column headers. The single most important structural rule is that products with multiple variants are represented as multiple rows that all share the same value in the Handle column, with the first row carrying product-level data like Title and Body (HTML), and subsequent rows carrying only the additional variant details.
The safest way to get the format right is to download the sample product CSV that Shopify provides directly inside the Products section of your admin. It contains the exact headers in the correct order along with example rows, and because Shopify occasionally updates the schema, starting from the live template rather than an old copy prevents avoidable errors.
Watch your file encoding and your number formatting. Save as UTF-8 CSV rather than Excel’s default encoding to avoid garbled special characters, and keep prices as plain numbers with no currency symbols or thousands separators, since a stray comma or dollar sign in a price cell is a common cause of import failures.
Is CSV import free on Shopify?
Yes. The CSV product importer is a native feature built into every Shopify plan at no additional cost, including the entry-level tier. There is no per-product fee and no realistic row cap for a normal catalogue, so you can import hundreds or thousands of products without paying anything extra to Shopify itself.
The costs in a CSV migration are labor and, optionally, tooling. Preparing and cleaning the file is the main investment, typically 4 to 12 hours for a 500-product catalogue depending on how messy the source data is. If your catalogue is very large or you also need to move orders and customers, a paid migration app in the $50 to $300+ range can save time, but it is not required for a straightforward product move.
Because the importer and ongoing catalogue management are included, Shopify lets your own team run day-to-day updates without server maintenance or developer overhead, which is a large part of its cost advantage over self-hosted platforms.
How long does it take to import 500 products to Shopify?
The actual upload of a 500-product file takes only a few minutes for Shopify to process. The realistic project timeline is driven almost entirely by preparation and validation, not the upload itself. For a reasonably clean source export, expect roughly 4 to 6 hours of hands-on work to clean, map, test, import, and validate 500 parent products.
If your source data is messy, with inconsistent variant naming or scattered image locations, that number climbs toward 10 or 12 hours because the CLEAN transformation stage takes longer. Larger catalogues scale up: 2,000+ SKUs typically means one to two full days, and 5,000+ can reach two to three days including a thorough QA pass and redirect setup.
The single biggest lever on your timeline is data quality at the source. A well-organized export imports predictably; a chaotic one turns a half-day job into a multi-day cleanup, which is why we always start with the audit in Step 1.
Will importing products break my SEO or existing search rankings?
The import itself does not affect SEO, but changing platforms changes your URL structure, and that is what can hurt rankings if you do not manage it. Shopify builds product URLs from the Handle in a fixed pattern, which almost never matches your old platform’s URLs, so without action, every old product URL returns a 404 and loses the search authority it earned.
The fix is a complete set of 301 redirects mapping every old URL to its new Shopify equivalent, imported through Shopify’s built-in URL redirects tool. Done correctly, this passes the vast majority of your existing search equity to the new pages and your organic traffic should recover to 90% or more of baseline within about 60 days.
Capture your pre-migration organic sessions before you cut over so you can measure recovery objectively. If you skip the redirects, the traffic loss is real and can take months to rebuild, which makes this one of the highest-stakes steps in the entire process.
When does it make sense to bring in Presta’s Startup Studio for a product migration?
Honestly, not every store needs an agency for this. If you have a clean catalogue of a few hundred products, some spreadsheet comfort, and time to follow the steps in this guide carefully, a DIY CSV import is entirely achievable and will save you money. Plenty of founders get this done well on their own, and we would rather you succeed than overspend.
The threshold where it becomes worth bringing us in is usually one of three things. First, scale and complexity: catalogues above roughly 2,000 SKUs, heavy use of variants and technical specs, or the need to move orders and customers alongside products. Second, risk tolerance: if downtime, lost SEO traffic, or a botched checkout would cost you real revenue, professional handling of redirects and validation pays for itself quickly. Third, ambition: if you want the migration to be a growth event, restructuring the catalogue to convert harder rather than just replicating the old store, that is squarely what our Startup Studio does.
For the Metalne Police project, the value was not the import mechanics, it was rethinking how a specification-driven catalogue should present itself, which lifted conversions 18%. If your migration is also a chance to sell better, that is the point at which an agency earns its keep. You can read more about what that engagement looks like in our Shopify agency services guide and how to evaluate a Shopify migration agency before committing.
What is the difference between a CSV import and a migration app?
A CSV import is a manual, native process where you prepare a file yourself and upload it through Shopify’s built-in importer. You have total control over exactly how the data is structured and how the finished catalogue looks, and it costs nothing beyond your time. It is ideal for product-only moves in the 100 to 2,000 SKU range where you control the source data.
A migration app automates much of the data transformation, connecting to your old platform and mapping fields for you. Apps shine when you have a very large catalogue, when the source format is complex, or when you need to move orders and customer records in addition to products, since those are far more tedious to move by CSV. The trade-off is a per-migration fee and slightly less granular control over the final structure.
Many real projects use both: an app for the bulk lift and manual CSV touch-ups for the last-mile cleanup and organization. The right choice depends on catalogue size, data complexity, and whether products are the only thing you are moving.
How do I handle products with lots of variants in a CSV?
Variants are the most common source of import failures, so they deserve special care. In Shopify’s format, each variant of a product is its own row, and all of those rows must share the exact same Handle. The first row for a product carries the Title, Body (HTML), and other product-level fields, while each following variant row leaves those blank and populates only the Option values and variant-specific data like SKU, price, and inventory.
Shopify supports up to three option dimensions per product, mapped as Option1, Option2, and Option3 (for example Size, Color, and Material), with up to 100 variants per product on standard configurations. Plan your option structure before you build the file, and standardize your option values during the cleanup stage so “Large” and “L” do not both appear as separate options.
Restructuring a flat variant list into Shopify’s shared-Handle row format is the fiddliest part of any import, and it is where we most often use formulas or a script rather than manual editing once past a few hundred variant rows. Always include your most variant-heavy products in your test slice, because if the hardest cases import cleanly, the rest will follow.
Sources
- Shopify Help Center: Importing products with a CSV file
- Shopify Help Center: Product CSV file format reference
- Shopify Help Center: Redirecting a URL
- Shopify Help Center: Adding and updating variants
- Presta: Complete Guide to WooCommerce to Shopify Benefits
- Presta: How to Migrate From WooCommerce to Shopify in 2025
- Presta: Migrate WooCommerce to Shopify With No Downtime
- Presta: How to Evaluate a Shopify Migration Agency