Service /16

WooCommerce to Medusa Migration

Replace WooCommerce and its plugin stack with Medusa v2 and a Next.js storefront. Every URL kept, catalogue, customers and orders moved, and your UAE payment providers built in.

Why stores leave WooCommerce

Rarely because WooCommerce can't sell. Usually because the store has become a stack of plugins: one for BNPL, one for shipping, one for invoices, a page builder, two for SEO. Each updates on its own schedule, and each is another way into the site.

That's where the risk sits. Patchstack's 2026 report found 91% of vulnerabilities in the WordPress ecosystem were in plugins. Keeping a store safe means patching every one of them, checking checkout still works, and doing it again with the next release.

Medusa replaces that stack with a commerce core you own and a storefront built for your store.

What you move to

Medusa v2 is open-source commerce under the MIT licence. Products, pricing, carts, orders and payments are modules in a TypeScript service on PostgreSQL. The storefront is Next.js, built for your catalogue rather than themed. Content that isn't commerce, the blog and landing pages, moves to Sanity.

Every plugin gets a decision

Before any data moves, we list every active plugin and decide what replaces it:

  • A Medusa module or built-in feature, for promotions, regions, tax and inventory.
  • Custom code, for rules that were bent into a plugin: tiered pricing, bundles, delivery slots.
  • An external service with an API, where a specialist does the job better.
  • Nothing. Most stores carry plugins nobody would install today.

Custom fields and postmeta

WooCommerce keeps much of a product's detail in wp_postmeta, often through ACF: specifications, sizing notes, flags the theme reads. We work out what each field means and move it into Medusa as structured metadata, or into a custom data model where it deserves one. You end up with data you can query and validate, not a pile of meta keys.

Customers and passwords

WordPress 6.8 and later store passwords as bcrypt hashes. Medusa doesn't verify WordPress hashes out of the box, but its authentication is pluggable. We can build a custom auth provider that checks a customer's legacy hash on first sign-in and re-hashes the password in Medusa, so customers sign in as before. That's our build, not a Medusa feature. If you'd rather start clean, we run a reset campaign at launch instead.

UAE payments: we build the providers

Medusa's only official payment provider is Stripe, which is available to UAE businesses. Community plugins for the regional gateways were written for Medusa v1 or are no longer maintained, so we don't build on them.

Instead we build Tabby, Tamara, Checkout.com and N-Genius as custom Medusa payment providers, tested end to end before launch. If your WooCommerce store takes Tabby and Tamara today, the Medusa store will too. Medusa sets tax-inclusive pricing per region or currency, so AED prices can include the 5% VAT.

How the migration runs

  1. Audit: plugins, custom fields, the URLs that earn traffic and the content that isn't commerce.
  2. Plugin mapping and data model, agreed before the build starts.
  3. Import of products, variants, customers and orders, using Medusa's WooCommerce migration tooling (released August 2026) where it fits and our own scripts where your data needs more.
  4. Payment providers built and tested for every gateway you use.
  5. A Next.js storefront on your existing URLs, with Arabic and right-to-left layout built in.
  6. Blog and content pages moved to Sanity.
  7. Inventory freeze, final sync, reconciliation and cutover.

Your URLs, exactly

Paths like /product/<slug> and /product-category/<slug> don't have to change. The Next.js storefront owns routing, so we rebuild the same paths and nothing needs a redirect. That's the main SEO difference from moving to Shopify, where fixed /products/ and /collections/ prefixes mean every WooCommerce URL changes.

Stock and cutover

Stock is the number that has to be right on day one. We agree a short freeze on stock edits, import the final orders and stock levels, and reconcile counts SKU by SKU against WooCommerce before the domain moves. WooCommerce stays available until the numbers match.

Blog and content go to Sanity

A WordPress install usually holds more than a shop: a blog, guides, landing pages. Medusa isn't a CMS, so that content moves to Sanity, with the same care for formatting and URLs as our WordPress to Sanity migration. Editors get a proper content tool, and the store gets a commerce engine.

Hosting and data

Medusa Cloud runs in us-east-1, eu-central-1 and ap-southeast-1, and Medusa lists its Cloud plans at $29, $99 and $299 a month with no fee on sales. To keep data in the UAE, we self-host in AWS me-central-1. The storefront can deploy on Vercel or alongside the backend.

Under the UAE PDPL (Federal Decree-Law 45/2021), moving customer data to infrastructure outside the UAE is a cross-border transfer. We check the data-processing agreements with each provider and leave behind legacy data you no longer need, which on an older WooCommerce install is usually plenty.

What drives time and cost

Plugin count, custom fields, the number of payment gateways, catalogue and variant complexity, how much content moves to Sanity, and whether Arabic ships in the first release. We give you a fixed scope after the audit, not a range before it.

When this is the wrong choice

If your store is small, standard and runs without trouble, Medusa is more platform than you need. If the site is mostly content with a small shop attached, start with our WordPress migration options. If you're starting fresh, see ecommerce development.

The approach

We move UAE stores from WooCommerce to Medusa. Every plugin is mapped to a module or code, products, customers, orders and custom fields move into a typed commerce core, your URLs stay exactly as they are, and we build the payment providers your customers use. The blog moves to Sanity, so content and commerce each get a proper home.

/01

What we do

Plugin audit and mapping

Every plugin gets a decision: a Medusa module, custom code, a service or nothing.

Catalogue, customer and order import

Products, variants, customers and order history moved into Medusa v2.

Custom fields to structured data

ACF and wp_postmeta turned into metadata you can query and validate.

Customer sign-in that carries over

A custom auth provider for legacy WordPress hashes, or a clean reset campaign.

UAE payment providers

Tabby, Tamara, Checkout.com and N-Genius built as Medusa providers you own.

Same URLs, reconciled cutover

Your WooCommerce paths kept exactly; stock frozen and reconciled at switch-over.

/03

How it runs

The same transparent shape every engagement follows — you always know where you are and what it costs.

01

Discover

A short, fixed-price sprint: audit, stakeholder interviews and the questions that decide the shape of the work.

02

Define

Scope, architecture and a fixed estimate — you know what's being built, why, and what it costs before we start.

03

Deliver

Tight design-build loops with weekly preview releases. You watch it become real on a URL, not in a deck.

04

Grow

Launch is the midpoint. Measurement, iteration and support keep the work earning after day one.

/04

Fair questions

Will we lose our URLs or rankings?

No URL needs to change. The Next.js storefront owns routing, so your /product/ and /product-category/ paths are rebuilt exactly as they are, with no redirects.

Do customers need new passwords?

Not necessarily. WordPress 6.8 and later use bcrypt hashes, and we can build a custom Medusa auth provider that verifies the old hash on first sign-in and re-hashes it. That's our build, not a built-in Medusa feature. A reset campaign is the simpler alternative.

What happens to our plugins?

Each one gets a decision in the audit: a Medusa module, custom code, an external service, or nothing. Payment plugins are replaced by custom Medusa payment providers that we build.

Can we keep Tabby and Tamara?

Yes. Medusa's only official payment provider is Stripe, so we build Tabby, Tamara, Checkout.com and N-Genius as custom payment providers and test them end to end before launch.

What happens to our blog?

It moves to Sanity, with formatting and URLs kept. Medusa runs the store; Sanity runs the content.

How long does it take, and what does it cost?

It depends on plugin count, custom fields, payment gateways, catalogue complexity and how much content moves. We give you a fixed scope after the audit rather than a range before it.

Need woocommerce → medusa?
Let's scope it.

Let's Talk
Start a project