Skip to main content

Store migrations

Pull data from another platform into an Altera spreadsheet you can then import into Shopify.

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, BigCommerce, Etsy (API connector or file upload) - planned. Use the Contact us button on each tab in the migrations page to register interest.

For Etsy today, use the spreadsheet-based Etsy products and Etsy orders transformations.

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, refunds, and notes

  • 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

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

  1. Create the migration - 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.

  2. 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.

  3. Run - 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:

  1. 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 -> ...).

  2. 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.

  3. 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

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.

Past runs

Each migration keeps a history of every run 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.

See also

Did this answer your question?