Skip to main content

Tutorial: Migrate WooCommerce to Shopify

Connect WooCommerce, pull your catalog and orders into a spreadsheet, and import everything into Shopify.

Video walkthrough: Watch the 12-minute video

What you'll build: A complete WooCommerce-to-Shopify migration: products with categories and images, customers with addresses, orders with line items and refunds, discount codes, redirects, and product reviews. The final result is a working Shopify store mirroring your WooCommerce data, plus a reusable migration file you can re-run if anything goes wrong.

The migration happens in three stages: Altera reads your WooCommerce store and generates a spreadsheet file, you download that file (and review it if you like), then you re-import it into Altera to load the data into Shopify. The migration step never writes to Shopify directly - it always produces a file you import in a separate step, so you stay in control of what goes in.

Who this is for: Merchants, agencies, and developers moving an existing WooCommerce store to Shopify. No code or hosting changes are required on the WooCommerce side - you only need access to the WordPress admin to generate an API key.

Prerequisites

  • Altera app installed on your destination Shopify store

  • Admin access to your WooCommerce site, with permission to generate REST API keys

  • The WooCommerce site must be reachable from the public internet (no VPN, IP allowlist, or HTTP basic auth). If your host restricts inbound traffic by IP, allowlist 34.182.181.120 - Altera's outbound IP for all migration and remote-connection traffic

  • Estimated time to complete: 30-60 minutes depending on catalog size


1. Generate a WooCommerce API key

Altera reads from WooCommerce using its built-in REST API. You'll generate a read-only key that Altera uses to fetch your data.

Step 1 - Set your permalink structure

In your WordPress admin, go to Settings > Permalinks and confirm the permalink structure is set to anything other than Plain (the default Day and name is fine). The WooCommerce REST API will not respond while permalinks are set to Plain.

Step 2 - Open WooCommerce REST API settings

In your WordPress admin, go to WooCommerce > Settings > Advanced > REST API.

Step 3 - Add a new key

Click Add key. Set Description to Altera migration, leave User as your admin user, and set Permissions to Read. Click Generate API key.

Step 4 - Copy the credentials

WooCommerce shows the Consumer key (starts with ck_) and Consumer secret (starts with cs_) once. Keep this page open until you've pasted them into Altera - you can't view the secret again later.

Tip: WooCommerce also shows a QR code URL that embeds both the key and secret. You can paste the entire URL into Altera's Site URL field and Altera will split it into the right fields automatically.


2. Connect WooCommerce to Altera

This phase creates the migration record and verifies that Altera can talk to your WooCommerce site.

Step 5 - Open Altera and go to Migrations

In your Shopify admin, open Altera, then click Migrations in the left sidebar.

Step 6 - Pick the WooCommerce tab

The migrations page shows a tab for each supported source platform. Click the WooCommerce tab.

Step 7 - Enter the credentials

Paste your WooCommerce Site URL (e.g. https://yourstore.com), the Consumer key, and the Consumer secret. Click Connect.

Altera tests the connection immediately. If it fails, the page shows a banner explaining why (bad credentials, blocked by Cloudflare, plain permalinks, etc.) with a link to the matching error code documentation. Fix the issue at the source and click Test connection to retry.

Warning: If your site is behind Cloudflare, Sucuri, or a security plugin like Wordfence, you may need to allowlist the WooCommerce REST API path (/wp-json/wc/v3/*) or Altera's outbound IP (34.182.181.120) before Altera can read from it. See the WOO006 error code for guidance.


3. Generate the migration file

This phase is where you pull data out of WooCommerce. The run doesn't touch Shopify - it gathers your data and packages it into files you'll download and import in the next phases. You can run as many migrations as you like; each one is recorded under Past runs so you can compare results.

Step 8 - Select data types

On the migration detail page, click Products, Categories, Customers, Orders, Coupons, and Reviews - whatever you want to migrate. Each click adds the data type to this run. By default they're all selected.

If you include Reviews, pick the output format: the raw format keeps every field WooCommerce provides, or choose Judge.me or Loox to get a file you can import straight into that review app.

Tip: For your first run, start with only Products and Categories. This is the fastest way to confirm everything works end-to-end before pulling thousands of orders.

Step 9 - Add filters (optional)

Click Add filter to narrow the run by status or date range. Common starting filters:

  • Product status is any of publish - skip drafts and private products

  • Order created on or after 2024-01-01 00:00:00 - migrate only the last year or two of orders

  • Customer role is any of customer - skip admins and contributors

Filters apply at the WooCommerce API, so a filtered run is genuinely smaller and faster - not just trimmed at the end.

Step 10 - Start the run

Click Run migration. Altera streams the data and shows live progress for each data type. When it finishes, the run produces the downloadable files - nothing has been sent to Shopify yet. You can leave the page; the job will keep running and you can come back to it from the Past runs tab.


4. Download and re-import into Shopify

The migration produces a main xlsx file with one sheet per data type. Depending on what you included, it can also produce extra files: an images ZIP (images embedded in product descriptions) and a reviews CSV in the format you chose. You download these, import the main file back into Altera, and handle the images and reviews separately.

Step 11 - Download the migration files

When the run shows Complete, click Download on the latest run to save the main xlsx file. If the run also produced an images ZIP or a reviews CSV, download those too.

Step 12 - Review the file (recommended)

Open the main file in Excel, Google Sheets, or any spreadsheet tool. Spot-check a few rows for products, customers, and orders. Look at the import warnings column - Altera flags anything that was truncated or skipped during the export so you can decide whether to fix it before importing. WooCommerce attributes that don't map to a native Shopify field are carried over as metafield columns on the right of the products sheet.

Step 13 - Re-import the main file into Altera

Back in Altera, click New import and upload the migration file you just downloaded. Altera detects the multi-sheet xlsx and imports each sheet in the correct dependency order: definitions, then products and collections, then customers, then orders. You don't have to import sheets one at a time. This is the step that writes your data into Shopify.

Tip: When you import orders, turn off staff order notifications in the import options. Otherwise Shopify emails the store's staff once for every order created during the migration. Customers are not notified either way.


5. Upload images and reviews

The main import covers products, collections, customers, orders, and discounts. Two pieces are handled outside that file: images embedded in product descriptions and product reviews.

Step 14 - Upload the images ZIP to Shopify Files

If the run produced an images ZIP, unzip it and go to Content > Files in your Shopify admin. Select all the images and upload them. These are the files referenced inside your product descriptions, so the descriptions render correctly once the files are hosted on Shopify.

Step 15 - Import the reviews into your review app

If you migrated reviews, open the review app you chose (for example Judge.me) and use its spreadsheet import. In Judge.me, go to Settings > Import from a spreadsheet, add the reviews CSV, and match on the product handle. If the app warns about missing picture URLs, choose to skip them. You'll get an email when the import finishes.


6. Verify the results

Spot-check your Shopify admin after the import finishes:

  • Products page shows the migrated products with images, variants, and prices (including any images that were embedded in product descriptions)

  • Collections page shows one Manual Collection per WooCommerce category

  • Customers page shows imported customer records with billing/shipping addresses

  • Orders page shows historical orders with line items, totals, and tags

  • Your review app shows reviews linked to the right products and customers

If anything looks wrong, fix it in the spreadsheet and run a Shopify import again with the corrected rows. The Command column controls whether each row is created, merged, or replaced - see Import best practices for details.


7. Recap

You generated a read-only WooCommerce API key, used Altera to pull products, categories, customers, orders, coupons, and reviews into a set of files, and imported them into Shopify: the main data through Altera, the embedded images into Shopify Files, and the reviews into your review app. The migration files are preserved under Past runs so you can re-run, audit, or tweak the migration without going back to WooCommerce.


8. Next steps

  • Run a fresh migration just before go-live to catch any new orders or customers added since your first run.

  • Read Import best practices for tips on big imports and rollback.

  • Review data permissions on the destination store if you want to restrict what staff users can import.

Did this answer your question?