Video walkthrough: Watch the 12-minute WooCommerce migration video for an end-to-end example.
What migrations do
Migrations connect Altera to a non-Shopify store, pull the data you select, and produce one or more files - including an Excel file in the standard Altera/Matrixify format. You then upload those files into Shopify, using the normal Altera import flow for the main data.
Migrations do not write to your Shopify store directly. The output is always a set of files you can inspect, edit, and re-run before any data lands in Shopify.
Supported platforms
WooCommerce (via the WordPress REST API) - generally available
Magento 1 and Magento 2 (via file upload) - you upload the product and customer exports from the Magento admin and CSV exports of the order tables. See How to migrate Magento to Shopify.
Etsy (via file upload) - you upload the listings and order CSVs from Etsy Shop Manager. See How to migrate Etsy products to Shopify and How to migrate Etsy orders to Shopify.
BigCommerce - planned. Use the Contact us button on the BigCommerce tab of the migrations page to register interest.
Supported data types
The WooCommerce connector currently exports:
Products - including variants, images, categories (as tags and as Manual Collections), prices, weights, dimensions, and SKUs
Manual Collections - one per WooCommerce category, so the category structure carries over to Shopify
Customers - including billing/shipping addresses and customer role
Orders - including line items, taxes, shipping, notes, and refunds (the refunded items, the refunded shipping, the refund amount, and the reason). Refunds don't change inventory, and customers don't get a refund email
Discounts - WooCommerce coupons mapped to Shopify discount codes
Redirects - WooCommerce product, category, and page URLs converted to Shopify URL redirects, including nested category paths, so existing inbound links keep working
Reviews - product reviews exported in Altera, Judge.me, or Loox CSV format for import into your chosen Shopify review app
The Magento migration exports:
Products - simple, configurable (as variants), virtual, grouped, and bundle products, with prices, sale prices, stock, weights, images, and SEO fields
Manual Collections - one per Magento category, including the parent categories
Redirects - the old Magento product and category URLs, redirected to the new Shopify URLs
Customers - one customer per email address, with addresses
Orders - including line items, taxes, shipping, discounts, payment status, tracking numbers, and (optionally) the order history in the order note. Refunds are not migrated yet.
The Etsy migration exports:
Products - one per listing, with variations (as variants), prices, stock, SKUs, tags, materials, and images
Orders - including line items with variations and personalization, shipping addresses, shipping, discounts, payments, and fulfillments. Etsy files have no buyer email, so orders are not linked to customers. Refunds are not migrated.
You can include any combination of data types in a single run. Each data type lands on its own sheet of the output xlsx file.
How a migration runs
A migration is a two-step process. First you create a migration in Altera to generate your files. Then you upload those files to the places they belong. Altera does not write to your Shopify store directly during a migration - the first step only produces files, so you can always inspect and edit the data before any of it lands in Shopify.
Step 1 - Create the migration and generate files
Create the migration - for WooCommerce, enter the source-store credentials. Altera tests the connection straight away so you can fix problems (bad credentials, blocked by Cloudflare, missing plugin) before going any further. For Magento and Etsy, upload the export files. Altera identifies each file by its columns and shows on the Files card which data types are complete.
Pick data types and filters - choose what to pull and narrow it down with status and date filters. The filters are per-data-type and apply server-side, so a partial migration is genuinely partial - we only fetch what you asked for.
Create import file - Altera pulls the source data into your migration files and shows live row counts on the job detail page. When the run finishes you'll see a "Migration files ready" banner.
Step 2 - Download the files and upload them
Download the files from the job detail page, then upload each one to the right place (see The files you get and where they go below). A typical order is to import the main data file first, then upload the images, then the reviews.
The files you get and where they go
A migration produces one or more files. The exact set depends on the platform and the data types you included, but a run can produce:
A main data file (Excel) - the bulk of your data: products, collections, customers, orders, discounts, redirects, and so on. Most migrations produce at least this file, with each data type on its own sheet.
An images file (ZIP) - a bundle of images and other files that need to live in Shopify alongside your data.
A reviews file (CSV) - product reviews, formatted for the review app you selected.
Each file goes to a different place:
Main data file -> import into Altera. Run it through Altera's normal import flow to create your products, collections, customers, orders, and other records. Multi-sheet files are imported in the correct dependency order automatically (definitions -> products -> collections -> customers -> orders -> ...).
Images ZIP -> Shopify admin. Upload it to the Content > Files section of your Shopify admin so the images are available for your products and other content.
Reviews CSV -> your review app. If your migration produced a reviews CSV, import it using the review app you selected. Altera supports Judge.me and Loox review formats.
Filters
Filters are applied at the source platform's API, not after the fact, so they keep large migrations small and fast. The available filters depend on the data type. For WooCommerce these are:
Product status (
publish,draft,pending,private)Product created/updated date ranges
Order status (
pending,processing,completed, etc.)Order created/updated date ranges
Customer role (
customer,subscriber,shop_manager, etc.)Customer created/updated date ranges
For Magento, you can filter orders by status and by creation date. Magento filters are applied to the uploaded files.
You can add WooCommerce status values that come from custom plugins (e.g. wc-on-hold-stripe) by typing them into the filter field - it accepts free-form text in addition to the suggestion list. The same goes for customer roles that a plugin adds (e.g. wholesale_customer).
The customer date filters are the one exception to filtering at the source. WooCommerce has no date filter for customers, so Altera reads each customer (of the roles you selected) and keeps the ones inside your date range. The file contains only the matching customers, but the run takes as long as an unfiltered one, and the progress bar shows no total. A date without a timezone offset is read in your Shopify store's timezone, the same one the file's Created At and Updated At columns use.
Previous files
Each migration keeps a history of every run under Previous files on its detail page. Run details include row counts per data type, filters used, and the resulting file - useful for iterating on a migration without losing earlier output, and for proving exactly what was pulled when.
What migrations are not
Not a live sync. Each run is a one-shot snapshot. If you need ongoing sync between WooCommerce and Shopify, use a third-party sync app.
Not gated by data permissions. Store data permissions only apply to Shopify imports and exports. To restrict what gets created in Shopify from a migration file, set the matching Import restriction on the destination store.
Not a Shopify-to-Shopify mover. For moving data between Shopify stores, use the standard export/import flow described in How to duplicate a Shopify store.
Limits and known issues
The source site must be reachable from the public internet. Sites behind a VPN, IP allowlist, or HTTP basic auth cannot be migrated until they're temporarily opened up.
Allowlisting by IP: All migration traffic originates from
34.182.181.120(the same IP used by Altera's FTP, SFTP, WebDAV, and remote URL connections). If your source site restricts access by IP, add this address to your allowlist.A WAF or bot-protection layer (Cloudflare, Sucuri, Wordfence) will typically need a rule that skips the WooCommerce REST API path. See the WOO006 error code for details.
Some WooCommerce hosting setups have a known pagination bug that returns the same page repeatedly. Altera detects and stops on this rather than emitting duplicate data - see WOO010.
Timestamps in the output file are converted to the destination Shopify shop's timezone so they read naturally in Shopify admin.
