Help center
Everything you need to move your WooCommerce store to Shopify with GSP WooCommerce Migration: from creating API keys to switching your domain.
Getting started
- Install GSP WooCommerce Migration from the Shopify App Store and open it in your Shopify admin.
- Create read-only API keys in WooCommerce (how).
- Click New migration, enter your store URL and keys, and click Test connection. You'll see how many products, customers, orders, coupons, posts and pages your store has.
- Choose what to migrate. Everything is selected by default.
- Run a free preview, or buy a plan and start the full migration.
- Review the result and the report, keep Shopify up to date with Migrate changes, then follow the go-live checklist.
Before you start
- Store currency. Prices are copied as numbers, not converted. Set your Shopify store currency (Settings → Store details) to the same currency as WooCommerce before migrating. Shopify only allows changing it before your first sale. The app warns you if the two differ.
- Shipping location. Stock is placed at your main (primary) Shopify location. Make sure that location is in a shipping profile (Settings → Shipping and delivery), otherwise products show as sold out.
- WooCommerce 3.5 or newer with the REST API enabled (it is by default).
- Images must be publicly reachable. Shopify downloads product and post images from your current site. If your site blocks bots or hotlinking (some firewalls do), allow Shopify or pause the protection during the migration.
- Keep your Shopify store password-protected (Online Store → Preferences) until you go live, so customers don't see it half-finished.
Create WooCommerce API keys
- In WordPress, go to WooCommerce → Settings → Advanced → REST API.
- Click Add key. Enter a description (e.g. “Shopify migration”), choose an administrator as the user, and set Permissions to Read.
- Click Generate API key and copy the Consumer key (starts with
ck_) and Consumer secret (starts withcs_). The secret is only shown once. - After going live, you can revoke the key on the same screen. The app also deletes it from our servers 48 hours after you uninstall.
Connect your store
In the app, click New migration, enter your store URL (e.g. https://your-store.com, including the folder if WordPress is installed in one) and your keys, then click Test connection. You'll see a summary of your store and can choose what to migrate: products, categories, customers, coupons, blog posts, pages and orders. Categories are always included with products, so products land in the right collections.
Free preview
Before buying, run a free preview: 10 products (plus all categories, and up to 10 customers, orders, coupons, posts and pages) are imported so you can check how your data looks in Shopify. Preview products, posts and pages are hidden drafts and no redirects are created. When you run the full migration, the preview records are updated and published, never duplicated. Previews can be deleted from your migration history.
Plans and pricing
One-time payments, billed through Shopify on your Shopify invoice. No subscription.
Basic
- Unlimited products, customers and orders
- 1 WooCommerce store, migrated once
- Everything listed below: all products, customers, orders, content and SEO
- Free preview before you buy
- Detailed migration report
- Email support
Advanced
- Unlimited products, customers and orders
- Unlimited WooCommerce stores, each migrated once
- Everything listed below, for every store
- Merge several stores into one Shopify store
- Free preview before you buy
- Priority support
Migration Update add-on
- 30 days of unlimited Migrate changes runs for one store
- Available on both plans
- Each store is fully migrated once. To bring over later changes from the same store, use the Migration Update add-on.
- Basic covers one WooCommerce store. Need more? Upgrade to Advanced for the difference ( $100) from the Pricing page in the app.
- If a migration is interrupted or you cancel it, Resume continues it at no extra cost.
What's migrated
Products
- Title, description, short description, status, tags, vendor (brand) and product type
- Variants and options (size, colour…), including “Any” variations
- Regular and sale prices (compare-at price), SKUs and barcodes (GTIN/EAN/UPC)
- Stock levels at your main location, backorders, weight and tax status
- Product images and variant images
- Product attributes (e.g. Material: Cotton) as metafields
- Custom fields (product meta, ACF) as metafields with editable definitions
- Published to your Online Store sales channel
Categories
- Categories become collections, with description and image
- Products are added to their collections
Customers
- Name, email and phone number
- Billing and shipping addresses
- Customer custom fields
- Tagged “woocommerce-migration”; existing Shopify customers are updated, not duplicated
Orders
- Original order numbers and dates
- Line items linked to the migrated products and variants
- Taxes, shipping, discounts (coupons), fees and refunds
- Payment status, fulfillment status and payment method
- Linked to the customer (guest orders included)
- Order notes and order custom fields
- No emails to customers, stock levels untouched
Coupons
- Percentage, fixed and free-shipping coupons become discount codes
- Expiry date, minimum spend, usage limits, once per customer
- Product, category and customer restrictions
Blog posts and pages
- Blog posts become articles: content, excerpt, author, date, featured image, categories and tags
- Pages (About, Contact, policies…)
- Images inside posts and pages copied to Shopify
SEO
- SEO titles and meta descriptions (Yoast, Rank Math, All in One SEO)
- URL handles kept from WooCommerce
- 301 redirects from old product, post and page URLs, so you keep your Google rankings
Safety and control
- Choose exactly what to migrate
- Read-only access: your WooCommerce store is never changed
- Currency check before migrating
- Safe to re-run: records are updated, never duplicated
- Resumes automatically after interruptions
- Detailed report of every warning and error
How your data is mapped
| WooCommerce | Shopify | Notes |
|---|---|---|
| Simple product | Product with one variant | Published to the Online Store if it was published in WooCommerce; otherwise a draft. |
| Variable product + variations | Product with options and variants | Shopify allows up to 3 options and 2,048 variants per product; extra options are dropped and reported. “Any size”-style variations become one variant per value. |
| Grouped / external product | Draft product / product | Grouped products have no price of their own; external buy-button URLs aren't migrated. |
| Sale price | Price + compare-at price | The regular price becomes the struck-through compare-at price. |
| Stock (managed) | Tracked inventory at your primary location | Out-of-stock products that didn't track stock are imported as tracked at 0. |
| Short description | Metafield woocommerce.short_description | Shopify has no short-description field; show it in your theme with a dynamic source. |
| Attributes (non-variant) | Metafields attributes.<name> | e.g. Material = Cotton, as a list field. |
| Custom fields / ACF | Metafields woocommerce.<field> | With definitions, so they're editable in Shopify admin. Plugin bookkeeping (SEO, page-builder, view counters) is skipped. |
| Category | Collection | Shopify collections are flat; sub-categories become their own collections. |
| Customer | Customer with addresses | Phone numbers are converted to international format. Marketing consent isn't invented: customers aren't subscribed to email unless the source records an opt-in. |
| Order status | Payment / fulfillment status | Completed → paid + fulfilled · Processing → paid · Pending / On hold → payment pending · Cancelled / Failed → voided · Refunded → refunded. A woo-<status> tag keeps the original status. |
| Coupon | Discount code | Excluded products, maximum spend and “exclude sale items” have no Shopify equivalent and are reported. Existing Shopify codes with the same name are never overwritten. |
| Blog post | Article in the “Blog” blog | Categories and tags become article tags. |
| Page | Page | WooCommerce's shop, cart, checkout and account pages are skipped (Shopify has its own). Page-builder layouts (Elementor, Divi…) are converted to clean content styled by your theme. |
What isn't migrated
- Customer passwords (Shopify doesn't accept them; customers set a new one through an account invite)
- Saved payment methods and card details
- Product reviews
- Your WordPress theme, design and plugin features
To let customers log in, invite them from Shopify (Customers → select → Send account invite), or turn on Shopify's passwordless customer accounts.
During the migration
- The migration runs on our servers: you can close the page and come back any time.
- The progress page shows each data type with processed, created, updated, already-migrated and failed counts.
- Cancel stops after the current batch; Resume continues where it stopped. Interrupted migrations resume automatically.
- The report lists every warning (data that couldn't map 1:1) and error (record not migrated) with its WooCommerce ID.
- Orders on Shopify development and trial stores are limited by Shopify to 5 per minute, so they migrate slowly there. Paid stores aren't limited.
Migrate changes (updates)
Your WooCommerce store keeps taking orders while you set up Shopify. With the Migration Update add-on, click Migrate changes on a completed migration to bring over what changed since the last run. Only changes are read, so it's fast even for large stores.
- New orders, plus the current status of existing orders: marked paid, fulfilled, cancelled or refunded.
- New and edited products, and products whose stock changed through sales.
- Newly registered customers.
- New and edited blog posts and pages; all coupons and categories.
Nothing is duplicated, customers are never emailed, and inventory isn't restocked when an order is cancelled. Records you deleted in Shopify are not brought back for orders.
Go-live checklist
- Review products (variants, prices, images, stock), collections, customers and a few orders.
- Set up shipping rates, taxes and payment providers in Shopify Settings.
- Choose and customise your theme; add menus (Online Store → Navigation).
- Place a test order.
- Shortly before switching, run Migrate changes to bring over the latest orders and customers.
- Point your domain to Shopify (Settings → Domains). The 301 redirects created by the migration (Online Store → Navigation → URL redirects) start working once your domain points to Shopify.
- Remove the store password, then invite customers to activate their accounts.
- Revoke the WooCommerce API key once you no longer need updates.
Troubleshooting
“WooCommerce rejected these API keys”
Copy the keys again (no spaces), make sure they belong to an administrator, and that the key wasn't revoked.
“These API keys don't have Read access”
Edit the key in WooCommerce → Settings → Advanced → REST API and set Permissions to Read (or Read/Write).
“We couldn't reach your store”
Check the URL (with https://, and the folder if WordPress isn't at the root). Security plugins or firewalls (e.g. Cloudflare bot protection) can block our requests: allow-list the app or pause the protection while migrating.
“Couldn't find the WooCommerce REST API”
Make sure WooCommerce is active and that a plugin isn't disabling the WordPress REST API.
Products show “Sold out”
The stock is at a location that isn't in a shipping profile. Add your primary location in Settings → Shipping and delivery.
Prices are in the wrong currency
Prices are copied as numbers. Set your Shopify store currency to match WooCommerce, then run the migration again.
Images are missing
Shopify couldn't download them from your site: check they open in a private browser window, and that hotlink or bot protection isn't blocking them. Then run Migrate changes or Resume.
A page looks different
Pages built with page builders are converted to clean content styled by your Shopify theme. Edit them in Online Store → Pages, or rebuild key pages with theme sections.
“Phone … not accepted by Shopify”
The phone number isn't valid for Shopify. The customer is still migrated; the number is kept on the address.
FAQ
Will my WooCommerce store be changed or go offline?
No. The app only reads from WooCommerce, and your store keeps working normally.
Can I run the migration more than once?
Each store is fully migrated once. Use Migrate changes to bring over later updates; existing records are updated, never duplicated.
How long does it take?
It depends on store size and how fast your host responds: small stores take minutes, stores with tens of thousands of orders can take a few hours. You can close the page while it runs.
Will I lose my Google rankings?
No: SEO titles and descriptions are migrated, URL handles are kept, and 301 redirects send old product, post and page URLs to the new ones.
Are customers emailed during the migration?
No. No order confirmations, shipping notifications or account invites are sent by the migration.
What happens to my data if I uninstall?
Everything migrated stays in your Shopify store. The app deletes its own copy of your keys and migration history 48 hours after uninstall.
Privacy and security
Read-only access to WooCommerce, encrypted API keys, and customer and order details transferred straight to Shopify without being stored by us. Read the full privacy policy and terms of service.
Contact support
Email contact@gsptechnologies.com with your Shopify store address and, if possible, a screenshot of the migration report. We reply within 2 business days.