Migrating a shop from PrestaShop or Shopify to WooCommerce is a 4-8 week project, a cost of 6,000-30,000 PLN, with SEO regression risk from 5% to 40% depending on redirect plan quality. Done well, it delivers full code ownership plus a 15-40% lower 3-year TCO. Done poorly, it costs 6-18 months of ranking rebuild. This article is a step-by-step checklist from the Hanse Studio portfolio: when migration makes sense, what to do BEFORE you start, a 6-phase plan, how not to kill SEO, GDPR/RODO during migration, common pitfalls, cost calculation.
When migration makes sense: 3 scenarios
Migration is not a light decision. Three concrete scenarios where it makes sense, based on 8 migrations Hanse Studio has run since 2019.
Scenario one: business scale crossed the TCO threshold. The shop on Shopify reached 100,000 PLN revenue/mo, the monthly subscription plus apps plus 2% Stripe transaction fee = 2,200 PLN/mo, i.e. 26,400 PLN/year. WooCommerce custom build 18,000 PLN one-time plus 1,000 PLN/mo retainer and hosting = 30,000 PLN for the first year, 12,000 PLN/year from year two. The crossover point in favor of WooCommerce arrives in month 22 (Shopify starts costing more in cumulative TCO). If the shop plans to exist 3+ years, migration has mathematical justification.
Scenario two: customizations outgrew the platform. The client needs a custom payment flow (B2B 30-day terms with credit limits), a custom shipping calculator (pallet plus weight-based plus VIP rate), ERP integration (Comarch Optima sync every 15 minutes), an own analytics dashboard. Shopify Plus at 2,000 USD/mo covers part of it, but customizations still require Shopify Apps or custom code in Liquid (closed language, hard development). WooCommerce delivers this natively or through plugins plus custom code in the child theme. This time it is not about price but about workflow feasibility.
Scenario three: DACH multilingual expansion. A PL shop wants to enter the German market with full Germanized compliance (14 legal elements) plus FR/EN/CS for CEE. Shopify Markets covers 4-5 of 14 Germanized requirements, hreflang structure is fixed (/de-DE/, /fr-FR/), no flexibility. WooCommerce with Polylang Pro plus Germanized for WooCommerce delivers full DACH compliance in the stack described in our article on Germanized for WooCommerce.
Anti-scenarios: do not migrate if (a) the shop is below 30k PLN revenue/mo and runs stably, (b) you plan to sell the business within 12 months (the buyer may prefer Shopify), (c) you lack the budget for a full migration plus 3-6 months of SEO monitoring, (d) the shop has 12+ Shopify apps whose functions cannot be recreated in WooCommerce without major customizations.
What you MUST do BEFORE starting the migration
First Hanse Studio rule: you do not start a migration without complete source data. Five mandatory exports plus an inventory of custom features.
First: full product export to CSV. Shopify Admin → Products → Export → CSV with all products. PrestaShop Admin → Catalogue → Products → Export. The CSV must include: SKU, name, short description, full description, net price, VAT class, categories, tags, attributes (color, size, material), variants with separate prices and stock, weight, dimensions, image URLs (download as a separate step), SEO meta (title, description), URL slug.
Second: customer export with password hash (Shopify) or an unhashed database with a request for a post-migration password reset (PrestaShop). Plus GDPR consent flags (who agreed to marketing, who did not). Custom fields like NIP, company data, customer notes.
Third: full order history as CSV. Shopify export: Orders → Export → All orders. Mandatory fields: order_number, date, customer_email, status, line items (products plus quantities plus per-item prices), shipping address, billing address, tax, shipping cost, total, payment method, fulfillment status. Order history is an accounting record: it must be kept for 5+ years per PL and DE tax law.
Fourth: a list of 3rd-party integrations active on the current shop. ERP/CRM (Comarch Optima, Pipedrive, Hubspot), email marketing (MailerLite, Klaviyo), analytics (GA4, Hotjar, Mixpanel), shipping (DHL, DPD, InPost), accounting (iFirma, Wfirma). Per integration: API key, documentation of how it was connected, whether it will be recreated in WooCommerce (if so, with which plugin).
Fifth: SEO baseline. Google Search Console export of top 100 URLs with impressions plus clicks plus average position. List of top 50 keywords the shop ranks for in Google. Current sitemap.xml. List of backlinks from Ahrefs/SEMrush if the client has it. This data is the basis for measuring SEO regression versus improvement after migration.
Plus an inventory of vendor dependencies. Shopify apps in use: 50-200 USD/mo each. Do they all need to be recreated? An audit often shows 3-5 unused or redundant apps to drop from the new shop’s scope.
The 6-phase migration plan
Standard Hanse Studio migration framework, 4-8 weeks depending on shop scale.
Phase 1 (1 week): staging environment fresh install. Hetzner VPS, CyberPanel, fresh WordPress, fresh WooCommerce, fresh Astra child theme. Temporary domain staging.yourdomain.pl with basic auth (admin/password) so Google does not index it. LiteSpeed Cache configuration, Cloudflare proxy, security baseline (Wordfence Premium, fail2ban). Plus initial plugin setup: Polylang Pro if multilingual, Germanized if DACH, B2BKing if B2B, Stripe and Przelewy24 in sandbox mode.
Phase 2 (1 week): product import. WP All Import Pro plus CSV plus images. Mapping Shopify CSV fields to WooCommerce schema: handle → slug, body_html → description, vendor → brand attribute, type → category, tags → tags, variant_option_X → product attributes, variant_sku → variant SKU, variant_price → variant price, image_src → featured_image. Complex variants (Shopify 100 options/product max) sometimes have to be split into separate products in WooCommerce. After the import: verify source vs target product counts, sample 20 products with manual verification of every field.
Phase 3 (3-5 days): historic customer plus orders migration. Cart2Cart Service (69 USD for 1-5,000 orders, 199 USD up to 50,000) automates the transfer. Alternative: WP All Import Pro plus a custom CSV mapping plus child theme code for hashed passwords. Post-migration verification: source vs target customer accounts, source vs target orders, sample 50 orders with manual verification of line items plus addresses plus totals.
Phase 4 (2-4 weeks): design plus theme rebuild in Astra child. The largest chunk of scope. Brand colors, typography, layout pages (home, category, product, cart, checkout, account), custom blocks (testimonials, USPs, FAQ). Hanse Studio builds the child theme from scratch (it does not copy the Shopify theme, because Liquid is not portable). 2-3 iterations of client feedback.
Phase 5 (2-3 days): 301 redirects mapping. Critical for SEO. Map every URL old → new. Shopify URL format: /products/handle, /collections/handle. WooCommerce default: /product/slug, /product-category/slug. Try to keep slug 1:1 (saves a redirect and Google prefers no-redirect over 301). If impossible, a list of 301 redirects in .htaccess or the Redirection plugin. All 200+ shop URLs must be mapped. Hanse Studio uses a script that reads Shopify sitemap.xml, generates a CSV mapping, imports into the Redirection plugin.
Phase 6 (1 week): launch plus monitoring plus rollback plan. DNS switch from Shopify to the new server. SSL certificate (Let’s Encrypt free or Cloudflare). Google Search Console resubmit sitemap.xml. Monitor rankings weekly for 8 weeks. Rollback plan: keep the Shopify storefront in a “frozen state” for 30 days post-migration; you can flip DNS back in 5 minutes if a critical issue surfaces.
SEO: do not kill your ranking during migration
A poorly done migration costs 30-60% of organic traffic in the first 2-4 weeks plus 3-6 months of recovery. A well-done migration costs <10% with recovery in 6-12 weeks.
First rule: 301 redirects per product, NOT 302. 301 is a permanent redirect; Google passes 80-100% of link authority to the new URL. 302 is temporary; link authority does not transfer and rankings drop. Check with a tool like Screaming Frog or curl -I that every redirect returns a 301 status code.
Second rule: keep the URL structure if it is semantic and not legacy. Shopify URL /products/red-shirt-cotton-m → WooCommerce /product/red-shirt-cotton-m (1:1 preservation) > /produkt/koszulka-czerwona-bawelna-m (change, requires redirect). Keeping the structure saves 200+ redirects plus Google does not have to recompute rankings.
Third: sitemap.xml regeneration plus resubmit in Google Search Console. WooCommerce with Yoast SEO or Rank Math generates a sitemap automatically. After launch, resubmit in GSC plus “Request indexing” for the top 20 URLs. Indexation accelerates from 4-6 weeks to 1-2 weeks.
Fourth: monitor rankings weekly for 8 weeks. SEMrush or Ahrefs Position Tracker for top 100 keywords. Drops in week 1-2 after launch are normal (Google recomputes), beyond week 4 without recovery is a problem signal (check redirects, content parity, Core Web Vitals).
Fifth: Core Web Vitals as an SEO bonus. WooCommerce with Astra child plus LSCache plus Cloudflare delivers 90-99 Lighthouse Mobile vs 55-75 typical for Shopify. After migration rankings often improve in week 6-12 specifically thanks to better Core Web Vitals. Hanse Studio benchmark from a 2024 migration: a 18-SKU FMCG retail client, rankings +12% on average across top 50 keywords by week 10 post-launch.
Customer data: GDPR/RODO in migration
Migration of personal data must respect GDPR rules. Three concrete risk paths and how to handle them.
First: legal basis for consent. The customer registered on Shopify accepting privacy policy A. Moving data to a new shop with policy B requires either (a) preserving an equivalent policy in the new shop, (b) renewed consent through double opt-in. Hanse Studio recommends (a) if the policy is substantially the same, plus a notification email “Our shop has been migrated, data is safe, the privacy policy has not changed” to all customers.
Second: password hashes. Shopify exports hashed passwords (bcrypt) but in a format incompatible with WordPress (also bcrypt but a different salt scheme). Two options: (a) keep the Shopify hash in a meta field, with custom child theme code rehashing on first login (the customer never sees the change), (b) force a password reset email to all customers. Hanse Studio recommends (a) for UX continuity.
Third: withdrawn consents. Some customers withdrew marketing consent after registration. Do NOT migrate them to the newsletter list in the new shop. Check the “marketing_opt_in” flag in the export and filter only those who agreed. Without that, the risk: a GDPR fine up to 4% of annual turnover or 20 mln EUR, plus a customer complaint to UODO.
Common pitfalls and how to avoid them
Six pitfalls that most often cost time in Hanse Studio migrations. Each has a concrete solution from practice.
Pitfall one: variants/options mapping. Shopify allows 100 options/product max; WooCommerce is unlimited but has a different options system (taxonomy-based, not linear options). A Shopify product with 3 axes (color × size × material) and 60 variants has to become a WooCommerce variable product with 3 attributes plus 60 variations. The CSV mapping script must handle this; manually check a sample of 10 products.
Pitfall two: tax and shipping rules re-config from scratch. The Shopify export is rarely clean (different rates per region, free shipping rules do not export), you rebuild in WooCommerce from scratch. This step always pushes the project 2-3 days if not planned.
Pitfall three: payment gateway tokens are NOT portable. A customer saved a card “for next purchase” in the Shopify Stripe Customer object. That cannot be moved to a new Stripe Customer in WooCommerce (PCI regulations). The customer must re-add the card in the new shop at the first order. Low friction, but proactive communication helps.
Pitfall four: wishlist plus loyalty plus reviews rebuild. This data often lives in Shopify Apps (Smile.io loyalty, Yotpo reviews, Wishlist Plus). API exports exist but every app has a different format. Hanse Studio policy: if the budget allows, recreate in the matching WooCommerce plugins (Yotpo has a WP plugin); if not, start from zero plus a migration email to customers “Your account has been migrated, some data like wishlist must be recreated”.
Pitfall five: meta description plus title tags collide with Yoast/Rank Math. By default Yoast generates meta from a default “title plus site name” template overriding imported custom meta. After the import check a sample of 20 products; if meta has been overridden, custom code in the child theme using a Yoast meta-description filter.
Pitfall six: search and filters after launch return zero results. WooCommerce native search is sometimes slow and inaccurate for 1,000+ SKUs. Hanse Studio recommends FacetWP plus ElasticPress (free open source) for filtered search. Without it the category page conversion drops 15-25% in the first month post-migration.
Hanse Studio migration cost tiers
Three cost tiers per shop scale, based on 8 migrations completed since 2019.
Tier 1: small shop <500 SKU plus <2,000 historic orders. Price: 6,000 PLN setup. Timeline: 4 weeks. Scope: standard 6-phase framework, basic customizations, 1 language. Portfolio client: a handicraft shop with 220 SKU, Shopify Basic → WooCommerce migration, 28 days, saved 1,100 PLN/mo on Shopify subscription plus apps.
Tier 2: medium shop 500-5,000 SKU plus 5,000-20,000 historic orders. Price: 12,000 PLN setup. Timeline: 6 weeks. Scope: full framework plus DACH Germanized plus Polylang multilingual plus B2B logic plus 1 ERP integration. Client: an electronics components wholesale with 2,400 SKU, PrestaShop → WooCommerce migration, 7 weeks, regained 95% of ranking by week 6 plus gained automatic Subiekt GT ERP integration.
Tier 3: large shop 5,000+ SKU plus 20,000+ orders plus custom logic plus multi-channel. Price: 18,000-30,000 PLN setup depending on scope. Timeline: 8-12 weeks. Scope: full framework plus headless commerce (optional) plus custom checkout flow plus multi-warehouse plus advanced ERP sync plus a dedicated migration manager. Client: a construction-chemistry distributor with 8,400 SKU, Shopify Plus → WooCommerce headless plus Next.js, 11 weeks, reduced 3-year TCO by 240,000 PLN.
Plus a retainer of 800-1,500 PLN/mo post-launch for maintenance plus SEO monitoring plus minor customizations (up to 2-4 hours/mo).
FAQ
Can I keep the same URL structure after migration?
Yes, if Shopify URLs are semantic (for example /products/red-shirt-cotton-m). Set WooCommerce permalinks to /product/%postname%, slug = Shopify handle. No redirects for the bulk of products. Only special pages (Shopify /pages/about → WooCommerce /about-us) need 301 mapping.
The full WooCommerce vs Shopify analysis is in our article on WooCommerce for SMBs in 2026 plus payment gateway selection in our article on WooCommerce payments.
What happens to SEO authority after migration?
With a correct 301 redirect plan the loss is <10%, recovery 6-12 weeks. Hanse Studio benchmark from a 2024 migration: average loss 7% in weeks 1-2, recovery to 100% baseline by week 8, plus a 12% rankings lift by week 10-12 thanks to better Core Web Vitals.
Do customers have to re-register in the new shop?
No. Custom child theme code rehashes the Shopify password hash on first login; the customer never sees the change. Alternative (when the budget is tight): a reset password email to all customers after launch, with a click-through rate of 35-50%.
What if the migration fails after launch and we need to roll back quickly?
Rollback plan: keep the Shopify storefront in a “frozen” state for 30 days post-migration (the client still pays the subscription but no one buys, because DNS points to the new server). DNS switch back to Shopify takes 5-15 minutes. Hanse Studio has never needed a full rollback, but the plan is a standard safety procedure.
Conclusions and next step
Migration from PrestaShop/Shopify to WooCommerce is a 4-12 week project, a cost of 6,000-30,000 PLN, with measurable value (15-40% lower 3-year TCO plus full control). It makes sense at 100k+ PLN/mo revenue, or with customizations beyond Shopify Plus, or with DACH multilingual expansion.
Hanse Studio runs migration end-to-end in three tiers: 6k PLN for a small shop, 12k PLN for medium, 18-30k PLN for large. Each includes the 6-phase framework, a 301 redirect plan, GDPR/RODO compliance, plus 30 days of post-launch monitoring. See our e-commerce services or contact us for a quote.
