Skip to content

Migration guide

How to Migrate to nopCommerce from WooCommerce, Magento or Shopify

To migrate to nopCommerce, map your old store’s data to nopCommerce’s import format, import categories, products, customers and orders in that order, decide how customers will get a working password, and redirect every old URL to its new page with a 301. Rehearse the whole migration on staging before switching the domain.

By CartenvoPublished

Target
nopCommerce 4.90
Built-in import
Excel (.xlsx)
Redirects
301, one-to-one

Source store

Exports and API data

  • WooCommerce
  • Magento / Adobe Commerce
  • Shopify
  • Custom platform

Import into nopCommerce 4.90

Map fields, then import in this order

  1. 1Categories & manufacturersCreated first so products can reference them
  2. 2ProductsMatched by SKU · pictures and SEO names
  3. 3CustomersMatched by customer GUID or email · roles, addresses
  4. 4OrdersLinked by customer GUID · items by product SKU

301 redirects

Every old URL maps to its new page

  • /product/oak-desk/→ /oak-desk
  • /products/oak-desk→ /oak-desk
  • /oak-desk.html→ /oak-desk

Customer passwords usually need a reset or a custom sign-in plugin.

Import order for a migration to nopCommerce, and old URLs mapped to 301 redirects.
On this page

This guide covers moving an existing store to nopCommerce 4.90 from another platform: what the built-in import can do, what needs custom work, and how to keep customers and search rankings through the switch. Already on nopCommerce and moving to a newer version? You need our nopCommerce upgrade guide instead.

What a migration to nopCommerce involves

A platform migration has four parts, and the data import is usually the smallest:

  • Data: catalog, customers and order history mapped field by field into nopCommerce.
  • Accounts: a plan for customer passwords, which rarely transfer between platforms.
  • URLs: a 301 redirect from every indexed old URL to its new page, so links and rankings carry over.
  • Everything around the store: theme, payment and shipping methods, taxes, emails and integrations rebuilt on nopCommerce.

Set up nopCommerce first — stores, currencies, tax, customer roles and specification attributes — so the imported data has somewhere to land. Then import, test and repeat on staging until a full run is clean.

What data can move, and how

nopCommerce 4.90 can import categories, manufacturers, products, customers and orders from Excel files in its own column layout. The fastest way to get that layout is to add one record by hand and export it.

What moves into nopCommerce 4.90, and how
DataHow it movesNotes
Categories and manufacturersBuilt-in Excel importImport first. Products can reference categories by ID or by name, including a full path such as “Furniture >> Desks”.
ProductsBuilt-in Excel importMatched by SKU: an existing SKU is updated, a new one is created. Includes prices, stock, SEO names and up to three pictures per row.
CustomersBuilt-in Excel importMatched by customer GUID, then email. Includes roles and address fields.
OrdersBuilt-in Excel importLinked to customers by GUID; order items are matched to products by SKU, so products must exist first. New orders get a new nopCommerce order number.
Newsletter subscribersBuilt-in text importA simple list of email addresses.
Customer passwordsOnly in nopCommerce’s own formatHashes from other platforms will not validate. See the passwords section.
Reviews, blog posts, content pagesScript or custom pluginNo built-in Excel import. Move them through the database or a one-off import plugin.

The official import documentation (opens in a new tab) recommends no more than 500–1,000 records per file, because import is memory-intensive. Downloading product pictures from external URLs is also turned off by default; enable Export/import products. Allow download images in the catalog settings if your spreadsheet points at the old store’s images.

Notes by source platform

The defaults below are a starting point. Plugins, themes and custom code on the old store often change URL patterns and data, so check a sample of real URLs and exports before planning.

Getting data, default URLs and password hashing by source platform
PlatformGetting the data outDefault product and category URLsPasswords
WooCommerceProduct CSV export in the admin; REST API for products, customers and orders/product/{slug}/ and /product-category/{slug}/WordPress hashes (phpass, or bcrypt since WordPress 6.8)
Magento 2 / Adobe CommerceSystem → Data Transfer → Export for products and customers; REST API for ordersURL keys ending in .htmlMagento’s own salted hashes
ShopifyCSV export for products and customers; Admin API for orders and full detail/products/{handle} and /collections/{handle}Not exportable; customers must set a new password
Custom or legacy .NET storeDirect database access or a custom exportWhatever the old routing producedDepends on the original code

Spreadsheets are fine for products. For customers and orders, reading the source through its API or database is usually safer: it keeps addresses, order lines and totals together and lets you re-run the migration as often as you need.

How to migrate to nopCommerce step by step

1. Inventory the old store

Count products, variants, categories, customers and orders. List every plugin or app the store depends on, every integration, the payment and shipping methods, and anything custom such as B2B pricing or quote requests. Export a full list of indexed URLs from Search Console and your sitemap.

2. Install and configure nopCommerce 4.90 on staging

Install the latest stable release on a staging server, then configure stores, languages, currencies, tax categories, customer roles, product attributes and specification attributes before importing anything.

3. Map every field

Write down where each source field goes in nopCommerce, including how variants become attributes and how customer groups become customer roles. Decide the new SEO name (slug) for each product and category now: keeping the old slug where possible makes the redirect map simpler.

4. Import in dependency order

Import categories and manufacturers, then products, then customers, then orders. Products reference categories and manufacturers; orders reference customers by GUID and products by SKU, so an order whose product SKU does not exist yet cannot be imported.

5. Decide how customers will sign in

Choose between a password reset at launch and a custom sign-in plugin. The options are explained in the next section.

6. Build and test the redirect map

Map every old URL to its new nopCommerce URL and set up 301 redirects on staging. Test every row of the map, not a sample.

7. Rebuild payments, shipping, emails and integrations

Configure payment and shipping plugins, rewrite email templates, and reconnect ERP, CRM, marketplace and feed integrations. Custom features from the old store become nopCommerce plugins.

8. Rehearse, then cut over

Run the full migration on staging at least once from a fresh export. On launch day, freeze catalog edits, import the orders and customers created since the rehearsal, switch the domain, and submit the new XML sitemap in Search Console.

Customer passwords

nopCommerce stores passwords as a salted hash, using SHA-512 by default. Its customer import accepts password hashes only in that format, so hashes exported from WooCommerce, Magento or a custom platform will not work, and Shopify does not export passwords at all. There are two practical options:

  • Password reset at launch. Import customers without passwords and send a clear message asking them to set a new one. It is simple and secure, but some customers will not come back to do it.
  • Validate the old hash on first sign-in. Import the old hashes into a separate field. A custom plugin checks a customer’s password against the old algorithm the first time they sign in, then saves it in nopCommerce’s format. Customers notice nothing, but the plugin has to be built and tested for the source platform’s exact hashing scheme. Shopify stores cannot use this option.

URLs and 301 redirects

nopCommerce product URLs are a single SEO name at the root, such as /oak-desk. The catalog settings can include the category or manufacturer instead, as in /desks/oak-desk. Category and manufacturer pages also use their SEO name at the root.

nopCommerce already redirects its own old SEO names to the current one with a 301. It has no built-in table for URLs from another platform, such as /products/oak-desk or /oak-desk.html, so those need redirect rules:

  • Web server rules — IIS URL Rewrite with a rewrite map, or nginx map rules — for a fixed list of URLs.
  • A redirect plugin that looks up old paths in a table, which is easier for staff to maintain after launch.

Redirect map · example rows

old URL                             new URL
/products/oak-desk                → /oak-desk
/collections/desks                → /desks
/product/oak-desk/                → /oak-desk
/product-category/office/desks/   → /desks
/oak-desk.html                    → /oak-desk

Redirect each old URL straight to its final page in one hop. Send discontinued products to the closest category rather than the home page. Keep the redirects in place for at least a year, and watch the Search Console page indexing report for 404s in the weeks after launch.

What to test before go-live

  • Record counts match the source: products, variants, categories, customers and orders
  • Spot-check 20–30 products across categories: prices, attributes, stock, pictures and descriptions
  • Tier prices, customer-role prices and discounts produce the same totals as the old store
  • A migrated customer can sign in, or receives the password-reset message, and sees their order history
  • Checkout with every payment and shipping method, including tax for each market you sell to
  • Order, shipment and customer emails use the new store’s branding and links
  • Every URL in the redirect map returns one 301 to the right page, with no chains or 404s
  • Integrations: ERP, CRM, feeds and accounting receive orders and stock updates
  • Page titles, meta descriptions and canonical URLs on key category and product pages

Add the workflows your business depends on, such as B2B approvals, quote requests or marketplace vendor flows.

Moving away from nopCommerce

The same rules apply in reverse. nopCommerce exports products, categories, manufacturers, customers and orders to Excel or XML from the admin area, which gives the new platform’s import tools a clean starting point. Password hashes are in nopCommerce’s own format (salted SHA-512 by default), so the new platform needs to support it or customers will need to reset their passwords. Product URLs at the root, such as /oak-desk, need redirects to the new platform’s URL pattern.

Before moving, check whether the reason is the platform itself or the way the store was built. Slow pages, fragile plugins and a painful upgrade path can often be fixed with an upgrade to 4.90, a performance review or moving core edits into plugins.

Frequently asked questions

Can nopCommerce import products from WooCommerce, Magento or Shopify directly?

Not directly. nopCommerce imports its own Excel layout. Export a template from Catalog → Products, then transform the source platform’s export into that layout. For anything beyond a simple catalog, a migration script or plugin that reads the source data and writes nopCommerce records is usually more reliable than hand-edited spreadsheets.

Can I keep my customers’ passwords?

Usually not as they are. nopCommerce only accepts hashes in its own format (salted SHA-512 by default), and other platforms hash passwords differently; Shopify does not export them at all. Plan a password-reset message at launch, or a custom plugin that checks the old hash at a customer’s first sign-in and then re-saves the password in nopCommerce’s format.

Will my old order numbers be kept?

Not by the built-in import. When it creates a new order, nopCommerce generates its own order number. If customers or support staff need the old numbers, store them in a custom field or keep them in the order notes.

Will I lose my Google rankings?

A migration always changes URLs, but rankings can be kept if every indexed URL from the old store redirects with a single 301 to its matching nopCommerce page, and titles, descriptions and content carry across. Expect some movement for a few weeks while Google processes the redirects; monitor Search Console for 404s and fix gaps quickly.

How many records can I import at once?

The official documentation recommends 500 to 1,000 records per Excel file, because import is memory-intensive. Split larger catalogs into several files, or use a scripted import.

How long does a migration to nopCommerce take?

It depends on catalog complexity, how much order history you move, the number of integrations and how custom the old store is. A small catalog with standard checkout is a short project; a B2B store with customer-specific pricing and an ERP connection needs an assessment before an honest estimate is possible.

Plan your nopCommerce migration

Start with the inventory and the URL export, choose your password approach, and rehearse a full migration on staging before you pick a launch date.

If you would rather hand it over, our nopCommerce migration services cover data mapping, import scripts, redirects, integrations and a rehearsed cut-over. Send your current platform, catalog size and integrations to contact@cartenvo.com and we will outline the migration plan.

Moving catalog data between nopCommerce stores rather than from another platform? Read our nopCommerce product import and export guide.

Related

Planning a move to nopCommerce?

Tell us your current platform, catalog size and integrations, and we will outline the migration, redirects and password plan.