Shopify to WooCommerce Migration: Netherlands Guide
I’m a WordPress developer and I’ve been building WooCommerce stores for clients across the Netherlands since 2009. Dutch store owners come to me with a recurring set of frustrations: app bills that keep climbing, AfterPay/Riverty integrations that don’t sit cleanly inside Shopify Payments, AVG questions about where customer data lives, and — for stores that chose a third-party gateway like Mollie for broader local-payment support — a 2% Shopify transaction fee on every order. Shopify Payments has been available in the Netherlands since 2019 and now supports iDEAL natively, so the headline “no Shopify Payments in NL” story is outdated. The financial and operational case for migration still holds for plenty of Dutch stores — it just shows up in different places. This guide covers where it actually applies, the technical migration, and the Dutch-specific requirements for running a WooCommerce store from the Netherlands.
If you use Mollie, Stripe, or PayPal on Shopify Basic instead of Shopify Payments — typically because you want Riverty (AfterPay) at checkout, broader bank coverage, or a Dutch payment partner — Shopify charges 2% on every order on top of the gateway fee. Combined with app costs, AVG data residency concerns, and Shopify’s checkout customization limits, that’s usually where the migration case becomes clear-cut.
Quick Summary: Shopify Payments is available in the Netherlands and supports iDEAL natively, but Dutch stores using Mollie, Stripe, or PayPal — often for Riverty (AfterPay) or broader local-payment coverage — pay an extra 2% per order to Shopify. Combined with €80–200/month in app costs, AVG data residency concerns, and limited checkout customization on Shopify Basic, migration to WooCommerce typically saves €150–300/month for stores in this position. Migration takes 2–4 weeks and costs €1,500–3,000 — €1,500 for a clean Elayne-themed migration, €3,000+ for a custom design rebuild.
In This Guide
- Cost Comparison: Shopify vs WooCommerce
- When Migration Makes Sense (and When It Doesn’t)
- Step-by-Step Migration Process
- Dutch Legal Requirements
- Protecting Your google.nl Rankings
- Timeline and Costs
- The Most Common Mistakes to Avoid
- Maintenance: The Part That Puts People Off
- Frequently Asked Questions
The Real Cost Comparison
Here is what a small Dutch store doing €5,000–€15,000 per month actually pays. The Shopify column splits into two: stores that use Shopify Payments natively, and stores that use a third-party gateway like Mollie (typically for Riverty / AfterPay, broader iDEAL bank coverage, or a Dutch payment partner).
| Cost Item | Shopify Basic + Shopify Payments | Shopify Basic + Mollie | WooCommerce on Trellis |
|---|---|---|---|
| Platform / hosting | $39 USD/month (~€36) | $39 USD/month (~€36) | €49–79/month (Hetzner DE) |
| Shopify transaction fee | 0% | 2% on every order | 0% |
| Payment gateway (iDEAL) | Shopify Payments rate | €0.32 per transaction via Mollie + 2% to Shopify | €0.32 per transaction via Mollie |
| Riverty (AfterPay) | Not native — needs third-party app | Included in Mollie + 2% to Shopify | Included in Mollie, no platform fee |
| Apps / Plugins | €80–200/month (6–8 apps typical) | €80–200/month (6–8 apps typical) | €0–40/month |
| Theme | €180–380 one-time or €14/month | €180–380 one-time or €14/month | €0–150 one-time (or custom) |
| SSL certificate | Included | Included | Included (Let’s Encrypt via Trellis) |
For stores using Shopify Payments NL natively, the 2% surcharge doesn’t apply — the case for migrating becomes about app stack costs, AVG data residency, checkout flexibility, and whether you need Riverty (which isn’t in Shopify Payments NL’s native list and has to be bolted on via a third-party app or PSP). For stores using Mollie, Stripe, or PayPal on Shopify, the 2% is the defining number: on €10,000/month that’s €200 going to Shopify every month on top of the platform fee and gateway fees. The second cost driver across both Shopify columns is the app stack — the average Shopify store I audit runs 6–8 paid apps for things WooCommerce handles natively: AVG-conform cookie banners, SEPA, DHL/PostNL shipping rules, multi-language, advanced B2B pricing. At €15–€30 per app per month, that adds another €100–€200. The combined saving for a Dutch store on Mollie doing €10,000/month is typically €250–€350 per month once the migration is complete.
When Migration Makes Sense (and When It Doesn’t)
Good reasons to migrate
- You’re using Mollie, Stripe, or PayPal on Shopify (typically for Riverty / AfterPay, broader iDEAL bank coverage, or a Dutch payment partner) and paying the 2% Shopify transaction fee on every order — this alone often justifies the migration cost within 3–6 months
- Your monthly app bill has crept past €100–€150 for features WooCommerce handles out of the box
- You want Riverty (AfterPay) properly integrated — Dutch consumers use Riverty heavily for fashion, electronics, and home goods, and it isn’t part of Shopify Payments NL’s native methods, so on Shopify you end up with a third-party app or PSP either way. Mollie’s WooCommerce plugin handles it cleanly without the platform markup.
- You want iDEAL, Klarna, AfterPay, SEPA, Apple Pay, and Google Pay in a single Mollie plugin without paying 2% on top — one Dutch payment partner, one flat gateway fee per method
- You want customer and order data on servers in the EU — Hetzner in Germany gives you clean AVG data residency with a straightforward verwerkersovereenkomst (data processing agreement)
- You need WPML or Polylang for a multi-language store covering NL, BE, DE, or other EU markets without paying for Shopify Plus
- You need a custom checkout that meets Dutch consumer law specifics — herroepingsrecht notice, algemene voorwaarden linking, exact shipping cost disclosure — without Shopify’s checkout restrictions
- You want to completely control and manage the code your shop is built on completely. With GPL Open Source based WordPress & WooCommerce you can. Your own private SaaS maintained by a global community.
Reasons to stay on Shopify
- You use Shopify Payments NL natively (not Mollie/Stripe/PayPal) and don’t need Riverty — there’s no 2% surcharge in that setup, so the financial case rests entirely on app costs and customization rather than a per-order saving
- Your store does under €3,000/month in revenue — at that volume, even the 2% fee (if it applies) is under €60/month and the migration cost takes longer to recover
- You manage the store entirely yourself with no technical help and have no intention of changing that — WooCommerce needs more hands-on maintenance than Shopify. If you have a developer handling updates and monitoring, this stops being a reason to stay.
- You rely on Shopify’s native POS for in-person sales at a winkel or markt
- Your store is under six months old with minimal SEO equity — the migration overhead is not worth it yet
- You’re on Shopify Advanced or Plus and use multi-location inventory or the wholesale channel for B2B
The Migration Process Step by Step
1. Audit your Shopify store before you touch anything
Export a full list of every URL on your Shopify store. Every product page, collection page, and blog post has a URL that may rank in Google.nl or have links pointing to it. You need this list before migration so you can build the redirect map afterward. Use Screaming Frog to crawl and export every URL that returns a 200 status — that becomes your definitive list, more reliable than any manual export.
2. Set up WordPress and WooCommerce on a European server
I set up WooCommerce stores on a Trellis and Bedrock stack — Nginx, PHP 8.3, Redis object cache, FastCGI page cache. For Dutch clients I use Hetzner Cloud in Falkenstein or Nürnberg (Germany). The data residency story is clean: the server is in the EU, Hetzner Online GmbH is a German company, and the verwerkersovereenkomst is straightforward to put in place. For most Dutch store owners, EU-based hosting satisfies their AVG obligations and their privacy policy — there’s no requirement for servers to be physically in the Netherlands.
This matters specifically for WooCommerce because cart and checkout pages must be excluded from the page cache. Get that wrong and you get ghost cart sessions: customers see items in their cart that have already been purchased, or sessions expire mid-checkout. A correctly configured Trellis server handles the cache exclusions automatically. Basic shared hosting typically does not.
For the store design, it doesn’t have to be rebuilt from scratch. Elayne is the FSE block theme I develop — it has full WooCommerce support built in with product page templates, shop archive layouts, cart and checkout styling, and a pattern library that covers the most common store page types. If your Shopify store’s design doesn’t need to be replicated exactly, Elayne significantly cuts the design phase of a migration.
3. Migrate your products
Export your products from Shopify under Products → Export. WooCommerce has a built-in CSV importer under Products → Import that handles most Shopify fields directly: title, description, price, SKU, inventory, variants. Two things need manual work: Shopify’s variant format is different and needs cleaning in the CSV before import, and product image URLs still point at Shopify’s CDN — those need to be re-uploaded to WordPress.
For stores under 200 products, manual image re-upload is the cleanest approach. For larger catalogs, WP All Import handles image URLs automatically during the import process.
4. Recreate your collections as categories
Shopify calls them collections, WooCommerce calls them product categories — they are functionally the same thing. Set up your category structure in WooCommerce before importing products so each product gets its category assigned correctly on import. Doing it the other way around means manual cleanup on every product.
5. Set up payment gateways for Dutch customers
This is where WooCommerce has a clear advantage for Dutch stores. Mollie is a Dutch company (Amsterdam) and their WooCommerce plugin is built specifically for the European market. One plugin, no transaction fee to Shopify, covers everything Dutch customers expect at checkout:
- Mollie —
mollie-payments-for-woocommerce(free). Covers iDEAL (now iDEAL | Wero), Klarna (Pay Now, Pay Later, Pay in 3), Riverty (formerly AfterPay), SEPA Direct Debit, credit cards, Apple Pay, Google Pay, PayPal, and Bancontact. Business verification with Mollie takes 1–3 business days and the verwerkersovereenkomst they provide is AVG-conform. iDEAL costs €0.32 per transaction — no percentage, no Shopify markup. - Stripe —
woocommerce-gateway-stripe(free, official). Strong backup for credit cards and Apple/Google Pay. Many Dutch stores run Mollie as the primary gateway and Stripe as a fallback for international card payments. - PayPal — the official PayPal plugin. Still widely used in the Netherlands; relevant for customers buying from international sellers who trust PayPal’s buyer protection.
Three payment specifics worth flagging:
- iDEAL is the dominant Dutch online payment method — around 70% of Dutch e-commerce transactions. Shopify Payments NL supports iDEAL (now iDEAL | Wero) natively, so if you’re already on it there’s no Shopify surcharge on iDEAL. The 2% comes in only if you route iDEAL through Mollie, Stripe, or PayPal on Shopify. On WooCommerce, Mollie costs €0.32 per iDEAL transaction with no platform layer above it. For a store doing 300 iDEAL orders per month at an average order value of €60 via Mollie on Shopify, the Shopify 2% costs €360/month on top. Mollie’s flat fee on WooCommerce costs €96. The difference for that setup is €264 per month, from one payment method alone.
- Riverty (formerly AfterPay) is the leading Dutch buy-now-pay-later product. A significant share of Dutch online orders — particularly for fashion, electronics, and home goods — go through Riverty. Mollie’s WooCommerce integration covers it cleanly at 2.99% + €0.35 per transaction. Riverty isn’t part of Shopify Payments NL’s native methods, so on Shopify you need a third-party app or PSP (Mollie, Buckaroo, MultiSafepay, Pay.) — and routing it through one of those triggers Shopify’s 2% transaction fee on top of the PSP rate.
- Bancontact is relevant if you sell into Belgium alongside the Netherlands. Mollie covers it in the same plugin. For stores serving the broader BENELUX market, this is a meaningful advantage over having separate integrations.
6. Handle order history
Order history migration is the most commonly skipped step — and in most cases that’s the right call. Shopify order data doesn’t map cleanly to WooCommerce’s database structure, and forcing it in creates risk for payment records, tax reports, and customer accounts. The practical approach: export Shopify order history as a CSV and archive it, start fresh in WooCommerce from the go-live date. Accounting records for the Shopify period stay in Shopify, which keeps your boekhouder happy and your records intact for the Belastingdienst.
Dutch Legal Requirements: Impressum, Herroepingsrecht, AVG, BTW
This is the part where Shopify’s “we handle everything” promise quietly stops being true. Dutch e-commerce operates under specific consumer protection law and platform requirements that apply regardless of which software you run.
- Bedrijfsgegevens en KvK-nummer — Every Dutch commercial website must display the company name, address, KvK (Kamer van Koophandel) number, BTW number, and contact details clearly. On WooCommerce this is a standard WordPress page linked in the footer.
- Herroepingsrecht (right of withdrawal) — Distance-selling law gives Dutch consumers 14 days to return a purchase with no reason required. You must include a herroepingsverklaring (withdrawal notice) and a modelformulier voor herroeping (standard withdrawal form). The WooCommerce Germanized plugin — despite the name, it covers Dutch requirements as well — handles the compliant text generation and the post-purchase email containing the withdrawal form. Alternatively, WooCommerce’s built-in order emails can be customized to include this content.
- AVG / GDPR — On WooCommerce you own the database. Personal data sits on your server (in the EU, if you choose Hetzner), under your control. The verwerkersovereenkomst with Hetzner is a one-time document. Cookie consent under the Dutch Telecommunicatiewet (which implements the EU ePrivacy directive) is handled by plugins like Complianz — a Dutch-built plugin specifically designed for BENELUX AVG compliance — or Real Cookie Banner.
- Algemene Voorwaarden — Your terms and conditions must be accessible before purchase and deliverable electronically. WooCommerce has a built-in “Terms and conditions” checkbox in checkout that links to your AV page — straightforward to configure and audit-proof.
- BTW / VAT — The Netherlands uses a 21% standard rate (hoog tarief) and a 9% reduced rate (laag tarief) for eligible products including food, medicines, books, and certain agricultural products. WooCommerce handles both natively. For B2B sales within the EU, the reverse charge mechanism applies — WooCommerce with the right tax configuration handles this without needing Shopify Plus.
- Thuiswinkel Waarborg / Webwinkelkeur — These Dutch quality marks for webshops are optional but common in the NL market. Neither Shopify nor WooCommerce helps you get them — they’re business certifications you apply for independently. Worth mentioning because Dutch store owners frequently ask, and the certification process has nothing to do with the platform.
The most useful WooCommerce plugin for Dutch legal compliance is Complianz Privacy Suite — a Dutch-built plugin handling cookie consent, privacy policy generation, and AVG documentation. Pair it with WooCommerce’s built-in checkout compliance fields and you cover most Dutch legal requirements without additional Shopify apps.
Protecting Your Google.nl Rankings During the Migration
This is where most DIY migrations go wrong. Shopify and WooCommerce use different URL structures by default. Launch WooCommerce without redirecting the old Shopify URLs and every product page that ranked in Google.nl becomes a 404 overnight. That’s recoverable, but it costs 2–4 months of ranking recovery time — and for a live store, that’s real lost revenue.
The URL structure difference
| Page type | Shopify URL | WooCommerce default URL |
|---|---|---|
| Product page | /products/product-name | /product/product-name |
| Collection / category | /collections/category-name | /product-category/category-name |
| Blog post | /blogs/news/post-name | /post-name (or custom) |
| Static pages | /pages/page-name | /page-name |
Every Shopify URL with rankings or backlinks pointing to it needs a 301 redirect to its WooCommerce equivalent. On a Trellis-hosted site, I put these redirects in an Nginx config file — they’re served at the webserver level, zero PHP execution overhead, no redirect plugin needed. That’s cleaner and faster than any WordPress redirect plugin.
The redirect checklist
- Map every
/products/URL to its new/product/equivalent - Map every
/collections/URL to its new/product-category/equivalent - Redirect
/blogs/news/blog posts to their new WordPress slugs - Redirect
/pages/static pages to their WordPress equivalents - Submit the updated sitemap to Google Search Console immediately after launch
- Monitor GSC for 404s in the first 4 weeks and add any missed redirects
If your Shopify store has strong rankings on google.nl, crawl it with Screaming Frog before you switch DNS and export every URL returning a 200. That list is your redirect map — don’t rely on memory or manual exports.
Realistic Timeline and What It Costs
A straightforward migration for a small Dutch store — under 200 products, no custom integrations — takes 2–4 weeks from start to go-live. Here is where that time goes:
| Phase | What it involves | Time |
|---|---|---|
| Setup and audit | WordPress + WooCommerce install on Hetzner, URL export, hosting config | 1–2 days |
| Product import | CSV clean-up, import, image re-upload, category assignment | 2–5 days |
| Theme / design | Rebuilding or adapting the store design in WordPress | 3–7 days |
| Payments + tax | Mollie setup (iDEAL, AfterPay, Klarna), BTW rules, verzendzones | 1–2 days |
| Redirects + SEO | Redirect map, Nginx config, Search Console update | 1–2 days |
| Testing + launch | End-to-end payment tests, mobile, email notifications, DNS switch | 1–2 days |
A professionally done migration for a small store typically runs €800–€1,500 depending on product count and whether the design needs rebuilding from scratch. For Dutch stores paying the 2% Shopify transaction fee (i.e. using Mollie, Stripe, or PayPal on Shopify rather than Shopify Payments natively), that cost is usually recovered in 3–6 months from the fee elimination alone — before counting app cost savings.
What You Gain and What You Give Up
What you gain
- If you were using Mollie, Stripe, or PayPal on Shopify: elimination of the 2% Shopify transaction fee — for a store doing €10,000/month, that’s €200/month back immediately
- iDEAL, Riverty, Klarna, and SEPA all in one Mollie plugin — no per-method app costs, no platform markup, and Riverty included natively rather than bolted on via a third-party app
- Customer data and order data on an EU server, under your control, with a clean verwerkersovereenkomst from Hetzner
- Lower app costs — Complianz alone replaces what would be 2–3 Shopify apps doing AVG compliance work
- WPML or Polylang for multi-language stores serving NL, BE, DE, or broader EU audiences — without paying for Shopify Plus
- Full control over the checkout — exact wording, exact field order, exact herroepingsverklaring display — to meet Dutch consumer law requirements
- Flexibility to customize anything in code without hitting platform API limits
What you give up
- Shopify’s built-in fraud analysis (replaceable with Stripe Radar, which is excellent)
- The simplicity of Shopify’s admin for non-technical users — WooCommerce is more powerful but also more involved to manage
- Native Shopify POS if you sell at a fysieke winkel or markt (Square or Stripe Terminal integrate with WooCommerce but need separate configuration)
- Shopify’s hosted checkout — WooCommerce checkout is self-hosted and requires proper SSL and caching setup to be reliable
The Most Common Mistakes to Avoid
- Skipping the redirect map — every unredirected Shopify URL becomes a 404 in google.nl the moment you switch DNS. Build the redirect map before switching, not after.
- Caching the cart and checkout pages — WooCommerce cart sessions break under full-page caching. Cart, checkout, account, and order-received pages must be excluded from caching rules. This is the most common technical mistake on migrations from hosts that configure caching aggressively.
- Not testing iDEAL end to end before launch — iDEAL has a bank redirect flow that needs to be verified with a real test account. Run at least one real iDEAL transaction in Mollie’s test mode and confirm the order status updates correctly in WooCommerce before switching DNS.
- Launching without testing every payment method end to end — run a real test transaction on every gateway before switching DNS. AfterPay in particular has an approval flow that needs to be verified before going live.
- Forgetting transactional emails — WooCommerce sends order confirmations via WordPress’s mail function, which most hosting servers block by default. Set up SMTP — Postmark or Mailgun — before launch, not when customers start complaining they didn’t get their order confirmation.
- Forgetting the cookie banner under the Telecommunicatiewet — Dutch cookie consent rules require explicit opt-in for non-essential cookies. Use Complianz; it’s Dutch-built, updated for Dutch DPA guidance, and AVG-conform out of the box.
Maintenance: The Part That Puts People Off — And Shouldn’t
The number one reason store owners hesitate to leave Shopify is maintenance. Shopify handles its own updates. On WooCommerce, someone has to keep WordPress, WooCommerce, and plugins updated, make sure backups are running, and respond if something breaks.
That concern is legitimate — but it’s based on the assumption that you’re doing it yourself. You don’t have to be. The Trellis hosting setup I use handles server-level security patching, PHP version management, and automated backups automatically. On top of that, I offer WordPress maintenance plans that cover plugin updates, monitoring, and a developer on call when something needs fixing. The monthly cost is comparable to two or three of the Shopify apps you’re already paying for — and you’re still ahead on the transaction-fee saving alone.
I’ve had clients move to Shopify specifically to avoid maintenance overhead — and then come back to WooCommerce once they saw what managed WordPress maintenance actually looks like in practice. The difference between “I have to figure this out myself” and “Jasper handles it” is significant. Maintenance doesn’t have to be your problem.
Frequently Asked Questions
Will my google.nl rankings survive the migration?
Yes, if the redirect map is complete and implemented before you switch DNS. A 301 redirect tells Google “this page moved permanently” — PageRank transfers, rankings hold. The risk is missed redirects, not the migration itself. I crawl the Shopify store before any DNS change, build the redirect file from actual 200-status URLs, and monitor Google Search Console for 404s in the weeks after launch. Stores with established google.nl rankings don’t lose them when this is done correctly.
If Shopify Payments works in the Netherlands now, why migrate?
Shopify Payments has supported the Netherlands since 2019, including iDEAL (now iDEAL | Wero), Bancontact, Apple Pay, Google Pay, and Klarna. If you’re using Shopify Payments natively and don’t need Riverty, the 2% third-party transaction fee doesn’t apply — and the migration case rests on app costs, AVG data residency, checkout customization, and platform flexibility rather than a per-order fee saving. The 2% fee still applies if you use Mollie, Stripe, or PayPal on Shopify, which many Dutch stores do — typically to get Riverty (which isn’t in Shopify Payments NL’s native methods), broader iDEAL bank coverage, or a Dutch payment partner. On WooCommerce there’s no platform layer above the gateway in any setup — you pay Mollie directly, with no Shopify surcharge.
Will customer data stay in the EU?
If we host on Hetzner Cloud in Falkenstein or Nürnberg — yes, all customer data, order data, and database backups stay on servers physically located in Germany. The verwerkersovereenkomst with Hetzner is straightforward. This is one of the clearest improvements over Shopify, which hosts customer data on its own global infrastructure regardless of where your store or your customers are.
Does my Shopify store stay live during the migration?
Yes. The WooCommerce store is built and tested on a temporary URL. Your Shopify store keeps taking orders throughout. The DNS switch only happens once the new store has been fully tested — including end-to-end payment tests on every gateway including iDEAL and AfterPay. The actual cutover is typically a few minutes of DNS propagation.
Do I need to re-enter all my products manually?
No. Shopify’s product CSV export maps to WooCommerce’s importer for most fields — title, description, price, SKU, inventory, variants. What needs manual work is images (re-upload for small catalogs, automated via WP All Import for larger ones) and any custom metafields that don’t have a direct WooCommerce equivalent.
Do you speak Dutch? How do we communicate?
I work in English with my Dutch clients — most Dutch developers and business owners are fluent enough that this hasn’t been an issue, and writing technical specs is faster in a shared language. I work remotely, so communication happens via email and async messaging. For customer-facing content on your store — checkout text, emails, legal pages — that’s all in Dutch, handled by WooCommerce’s built-in Dutch translations and your own copy.
How do I keep my domain?
If your domain was registered through Shopify, transfer it to a registrar like SIDN-accredited registrars (TransIP, Antagonist, Yourhosting) or Cloudflare before the migration — Shopify charges a premium for domain registration and you’re better off managing it independently. If the domain is already at an external registrar, it’s a simple DNS update pointing to the new server. Either way, the domain stays yours throughout.
Selling from Germany instead? See our Germany migration guide.
If your Shopify store is routing payments through Mollie, Stripe, or PayPal and paying the 2% transaction fee on every order — or if your app bill has crept past €100 a month, your AVG officer keeps asking awkward questions about where customer data sits, or you want Riverty integrated cleanly without a third-party app on top — send me the details and I’ll give you an honest estimate of what migration would cost versus what you’d save. If it doesn’t make financial sense for your store, I’ll tell you that too.
Need a WooCommerce Developer for Your Store?
We build and optimize WooCommerce stores for SMEs — from custom checkout flows and payment integrations to performance tuning and ongoing maintenance. Fixed-price quotes available.
- Custom checkout and cart optimization
- Payment gateway integration (Mollie, Stripe, PayPal)
- WooCommerce performance and speed optimization
- Ongoing store maintenance and support