Skip to main content
Migration guide · international

Migrating a multilingual WooCommerce store to Shopify.

On WooCommerce, every language is a separate copy of each product, linked by WPML or Polylang. On Shopify there is one product with translations attached to it. That difference changes the URL of every translated page, removes duplicated inventory, and means the translations you already paid for must be imported as translations, not as products.

20languages a Shopify store can publish; 30 on Shopify PlusShopify Help Center1
autohreflang tags and sitemap entries for every published languageShopify Help Center1
3URL formats WPML offers: directories, domains, ?lang= parameterWPML documentation3
tagscannot be translated on Shopify by any methodShopify Help Center1

In brief

  • Shopify stores can publish up to 20 languages on the Basic, Grow and Advanced plans and up to 30 on Shopify Plus, using subfolders such as example.com/fr or separate domains and subdomains such as de.example.com.1
  • Shopify adds hreflang tags automatically and includes every published language in the sitemap, so the SEO plugin configuration that handled this on WordPress is not rebuilt.1
  • Translated URL handles are supported: /en-ca/products/shoes can become /es-mx/productos/zapatos, but the path word products itself cannot be translated.2
  • Product, article and blog tags cannot be translated on Shopify.1
  • Existing translations can be imported by CSV through Shopify's Translate & Adapt app or the language settings; the import does not generate translations, it loads the ones you supply.2
  • WPML stores that use the ?lang= URL parameter need special care, because Shopify documents that redirects for URLs with query strings may not work as expected.34

Two different models

WPML and Polylang make WordPress multilingual by duplicating content. A product that exists in English, German and French is three posts with three IDs, linked together as translations of each other. WooCommerce Multilingual then keeps stock, prices and attributes in sync between the copies.

Shopify works the other way round. There is one product, with one inventory record and one set of variants, and translated text is attached to its fields. Nothing has to be synchronised because nothing is duplicated.

TopicWooCommerce with WPML or PolylangShopify
A translated productA separate post per languageOne product with translations
StockSynchronised between copies by the pluginOne inventory record
hreflangGenerated by the multilingual or SEO pluginAutomatic1
Language limitNone in practice20, or 30 on Plus1
Checkout languageTranslated by plugin string translationPre-translated in 33 languages1
Different catalog per languagePossible: a product can simply lack a translationHandled through Markets and publishing, not through missing translations

The migration trap

A naive export of a WPML store contains every product once per language. Imported as is, a 500-product store in three languages becomes 1,500 Shopify products with split inventory. The export has to be grouped by WPML's translation group first: the default-language post becomes the product, the others become its translations.

Language URLs

WPML offers three URL formats: languages in directories (example.com/es/), a different domain or subdomain per language (example.de, de.example.com), and the language as a parameter (example.com/?lang=fr). It can also place the default language in a directory.3 Shopify supports the first two: subfolders and language-specific domains or subdomains.1

WPML formatExampleShopify equivalent
Directoriesexample.com/fr/produit/chemise-en-lin/example.com/fr/products/chemise-en-lin
Domain per languageexample.fr/produit/chemise-en-lin/example.fr/products/chemise-en-lin, domain assigned to the language or market
Subdomain per languagefr.example.com/…fr.example.com/products/…
Parameterexample.com/product/linen-shirt/?lang=frNo equivalent; move to subfolders
Default language in a directoryexample.com/en/…The primary language normally sits at the root; redirect /en/… to the root paths

Note that WooCommerce usually translates the permalink base too, for example /produit/ or /produkt/. On Shopify the handle can be translated but the word products cannot.2

Redirects per language

Every language multiplies the redirect map. A store with 500 products, 30 categories and 40 pages in three languages has roughly 1,700 old URLs, and each translated URL should land on the same language on Shopify. Sending /fr/produit/chemise-en-lin/ to the English product page throws away the French ranking.

  • Keep translated slugs as translated handles. If the French slug stays chemise-en-lin, the redirect is a prefix change, exactly as in the redirects guide.
  • Count against the limit. Shopify allows 100,000 URL redirects per store, 20 million on Plus; multilingual catalogs reach that sooner.4
  • Parameter URLs. Shopify documents that redirects for URLs containing query strings may not work as expected.4 For ?lang= sites, check in Search Console how many parameter URLs actually receive traffic; for a large set, handle the redirect at the DNS or CDN layer in front of Shopify.
  • Separate domains need the old domain pointed at Shopify and assigned to the language, so its paths resolve and redirect there.

Importing the translations you already have

Shopify's free Translate & Adapt app, or the language settings in the admin, export a CSV of every translatable field and import it back with the translated values filled in. Shopify is explicit that the import loads your content and does not generate translations.2 The app's automatic translation covers up to two languages,5 which is one more reason to bring your own. That is what you want: the human translations from WPML are an asset, and machine-translating the catalog again would replace them with something worse.

  1. Export from WordPress with the language relationship. For each translation group: the default-language ID, and per language the title, description, short description, slug, SEO title and meta description, and attribute and variation labels.
  2. Import products once, in the primary language.
  3. Export Shopify's translation CSV for each language. It lists every field with an identifier and the default content.
  4. Fill it by joining on the product handle and field, then import.
  5. Do the same for collections, pages, blog posts, navigation and theme strings. Theme and checkout text usually arrives pre-translated; the checkout has pre-translated content for 33 languages.1

What cannot be translated

  • Tags. Product tags, article tags and blog tags cannot be translated by any method.1 If the WooCommerce store shows translated tags to shoppers as filters, move that information to metafields or product options, which can be translated.
  • The path words. products, collections, pages and blogs stay in English in every language.2
  • More than 20 languages on standard plans; 30 on Plus.1
  • A theme that is not multilingual-ready. The active theme must be compatible with selling in multiple languages and needs a language selector.1

Currency and Markets

WPML stores usually pair languages with a multi-currency plugin, and the two are configured separately. On Shopify both belong to Markets: a market groups countries and sets their language, currency, domain or subfolder, and optionally its own prices and catalog. Before migrating, write down the actual combinations you sell in, for example Germany in German and euros, Switzerland in German and francs, and build markets from that list rather than from the list of WPML languages.

Step by step

  1. Inventory the languages: which are complete, which are partial, which get traffic. Partial languages with no traffic are candidates to drop.
  2. Record the URL format and the translated permalink bases.
  3. Group the export by translation group so each product is created once.
  4. Import the primary language, then translations by CSV.
  5. Set up markets, domains or subfolders to mirror the old structure as closely as Shopify allows.
  6. Build the redirect map per language and import it before launch.
  7. Verify hreflang and the sitemap on the live store, and submit the sitemap in Search Console for each domain property.

Multilingual stores are migrated as one catalog with translations, not as copies.

  • Products grouped by WPML or Polylang translation group
  • Existing human translations imported, not re-translated
  • Translated handles kept for clean redirects
  • Redirect map built per language
  • Markets set up from how you actually sell
  • Preview before you pay
Scan my store freeThe scan detects WPML and Polylang automatically.

Frequently asked questions

How many languages does Shopify support?

A store can publish up to 20 languages on the Basic, Grow and Advanced plans and up to 30 on Shopify Plus, according to Shopify's help centre.

Can I keep my WPML translations when moving to Shopify?

Yes. Shopify imports translations from a CSV file through the Translate & Adapt app or the language settings. The import loads the translations you supply, so the existing WPML or Polylang translations can be reused instead of translating the catalog again.

Does Shopify add hreflang tags automatically?

Yes. Shopify adds hreflang tags for language-specific URLs and includes all published languages in the sitemap, so no plugin or manual markup is needed.

Can product URLs be translated on Shopify?

The handle can: /en-ca/products/shoes can become /es-mx/productos/zapatos according to Shopify's documentation. The path word products itself cannot be translated.

Why does my WPML export contain every product several times?

Because WPML stores each language as a separate post. The export has to be grouped by translation group so that the default-language post becomes the Shopify product and the other posts become its translations. Importing them all as products splits inventory and triples the catalog.

What happens to ?lang= URLs?

Shopify has no language parameter format and documents that redirects for URLs with query strings may not work as expected. Move to subfolders, check which parameter URLs receive traffic, and handle large sets with redirects at the DNS or CDN layer.

Sources

  1. Shopify. Selling in multiple languages, Shopify Help Center: language limits, URL structure, hreflang, untranslatable content, checkout languages, theme requirements.
  2. Shopify. Translate & Adapt, Shopify Help Center: CSV import of translations and translated URL handles.
  3. WPML. Language URL options.
  4. Shopify. Creating and managing URL redirects, Shopify Help Center: limits and query strings.
  5. Shopify. Translate & Adapt, Shopify App Store listing: free, automatic translation for up to 2 languages.

Mufatech Studio migrates stores to Shopify. Figures are quoted from the linked documentation as of September 2026 and can change; check the source before acting on a limit or a price.