Naar hoofdinhoud

Magento naar Shopify migratie: je catalogus veld voor veld

Een Magento 2-catalogus naar Shopify verhuizen: exports, metafield-types, configureerbare producten als varianten, store views, staffelprijzen en redirects.

Magento naar Shopify migratie: je catalogus veld voor veld

Een migratie van Magento naar Shopify verhuist je catalogus van een model met templates (attribuutsets, configureerbare hoofdproducten met simple children, store views) naar het plattere model van Shopify (producten met maximaal drie opties, metafields, talen en markten). Voor de catalogus komt het werk neer op zes taken: producten, prijzen en elke store view uit Magento exporteren; attribuutsets omzetten in metafield-definities; elk configureerbaar product herschrijven als één Shopify-product met variantregels; vertalingen per taal laden; staffelprijzen per klantgroep opnieuw opbouwen als B2B-catalogi; en elke oude URL met een redirect aan de nieuwe koppelen.

Deze gids behandelt dat catalogwerk veld voor veld, voor Magento 2 Open Source en Adobe Commerce. We gaan ervan uit dat de keuze voor het platform al gemaakt is. Is dat nog niet zo, lees dan eerst onze vergelijking Shopify vs Magento over kosten, B2B en het variantmodel. Klanten, orders, thema's en apps zijn aparte sporen en komen alleen aan bod waar ze productdata raken.

Zes fasen van een catalogusverhuizing van Magento 2 naar Shopify

  1. Bevriezen en inventariseren. Maak in Magento geen nieuwe attributen meer aan en noteer elke attribuutset, elk attribuut met invoertype en scope, elk configureerbaar attribuut en de store views met vertalingen.
  2. Exporteren. Haal de entiteiten Products en Advanced Pricing op, alle store views, en de volledige lijst URL's die verkeer krijgen.
  3. Opschonen en omvormen. Verwijder dode producten en ongebruikte attributen, splits de samengepakte attribuutkolom in velden en zet configureerbare hoofd- en subproducten om in variantregels.
  4. Eerst de Shopify-kant bouwen. Maak metafield-definities, publiceer talen en zet markten en B2B-catalogi op vóór de eerste productimport, zodat de import ergens kan landen.
  5. Importeren als concept en controleren. Laad producten met Status op draft, vergelijk aantallen en controleer steekproefsgewijs varianten, prijzen, afbeeldingen en vertalingen tegen Magento.
  6. Redirects en livegang. Importeer het redirectbestand, verhuis het domein, crawl daarna de oude URL-lijst en los elke 404 op.

Fase 2 tot en met 5 lopen via een van drie routes. Een migratieapp uit de Shopify App Store koppelt met beide winkels en laat je meestal eerst een testmigratie draaien; de meeste nemen ook klanten en orders mee. Bij de handmatige route exporteer je CSV-bestanden en vorm je ze om in een spreadsheet. Een PIM ertussen importeert uit Magento en exporteert naar Shopify. De koppelkeuzes in de rest van deze gids zijn op elke route hetzelfde; via CSV of een PIM heb je er de meeste controle over.

Products, Advanced Pricing en elke store view exporteren uit Magento

De standaardexport van Magento zit onder System > Data Transfer > Export. De exportdocumentatie van Adobe noemt de entiteiten, en voor de catalogus tellen er twee: Products en Advanced Pricing. Staffelprijzen staan niet in het productbestand maar komen uit de entiteit Advanced Pricing. De export loopt via de message queue, dus cron moet draaien, en het bestand komt in `var/export` (of in de map voor remote storage als die module aanstaat).

Het productbestand heeft één regel per product voor de standaardscope plus extra regels per store view waar waarden afwijken, gemarkeerd met `store_view_code`. Bewaar die regels. Ze bevatten je vertaalde namen, omschrijvingen, metavelden en URL-keys. Andere kolommen om op te letten:

  • `product_type` onderscheidt simple, configurable, bundle, grouped, virtual en downloadable. Elk type vraagt op Shopify een eigen aanpak.
  • `configurable_variations` op de regel van het hoofdproduct noemt elke sub-SKU met de optiewaarden, bijvoorbeeld `sku=MS-TEE-NAV-M,color=Navy,size=M|sku=MS-TEE-NAV-L,color=Navy,size=L`.
  • `additional_attributes` stopt alle eigen attributen als `code=waarde`-paren in één cel. Splits die eerst in kolommen.
  • `url_key` is het laatste deel van de product-URL. Met een achtervoegsel zoals `.html` en de instelling Use Categories Path for Product URLs aan, is één product volgens Adobe via meerdere URL's bereikbaar.
  • `base_image`, `small_image`, `thumbnail_image` en `additional_images` verwijzen naar bestanden onder `pub/media`. Shopify heeft publiek bereikbare afbeeldings-URL's nodig, dus controleer of de export ze vanaf een live domein laat zien.

Voor de URL-lijst combineer je drie bronnen: het URL Rewrites-overzicht onder Marketing > SEO & Search > URL Rewrites, het paginarapport in Search Console en een crawl van de live winkel. Rewrites laten zien wat Magento kan serveren; Search Console en analytics laten zien welke URL's echt verkeer en links krijgen.

Van attribuutsets naar metafield-definities: het Shopify-schema vóór de import

Shopify kent geen attribuutsets. Elk eigen veld wordt een metafield-definitie op het product (of de variant) met een namespace, key en type, en elk product toont dezelfde definities. Maak ze aan vóór de eerste import: de product-CSV van Shopify leest metafield-kolommen in het formaat `product.metafields.custom.material`, maar alleen voor definities die al bestaan, en ondersteunt variant-metafields helemaal niet. Onze gids over Shopify-metafields gaat dieper in op namespaces en types.

Het type dat je kiest bepaalt of waarden de import overleven. Koppel elk Magento-invoertype bewust:

Invoertypes van Magento-attributen en hun bestemming in Shopify

Text FieldmaterialMetafield: tekst op één regelDirect
Text Area of Page Buildercare_instructionsMetafield: tekst op meerdere regels, of het veld BeschrijvingEerst HTML opschonen
DropdownfitMetafield: tekst op één regel met een keuzelijst van maximaal 128 waardenDirect
Multiple SelectactivityMetafield: lijst met metaobject-verwijzingen, of tagsOmvormen
Yes/Nois_veganMetafield: waar of onwaarDirect
Datelaunch_dateMetafield: datumDirect
PricemsrpMetafield: geld, of de vergelijkingsprijsBetekenis bepalen
Visual of Text Swatch (configureerbaar)color, sizeProductoptie, eventueel gekoppeld aan een categorie-metafieldOmvormen
Gewicht (systeemattribuut)weightGewicht (gram) per variantEenheden omrekenen
Media Imagelabel_imageProductmedia of een bestandsmetafield buiten de CSVOpnieuw bouwen
Fixed Product TaxweeeGeen productveld; belastinginstellingen van ShopifyOpnieuw bouwen
11 van 11 rijen
De meeste invoertypes passen op een metafield-type dat de CSV-import ondersteunt; de regels met Opnieuw bouwen vragen instellingen of apps in plaats van een kolom.

Twee gewoontes houden het schema schoon. Geef definities een familievoorvoegsel als een attribuut maar bij één productfamilie past (`custom.bike_frame_size` in plaats van `custom.size`), want Shopify toont het op elk product. En laat attributen vallen die niemand invult: staat een veld in `additional_attributes` maar op een handvol producten, vraag je dan af of het in Shopify nog moet bestaan.

Een configureerbaar T-shirt herschrijven als variantregels voor Shopify

Neem een configureerbaar T-shirt `MS-TEE` met twee configureerbare attributen, kleur en maat, en vier simple children. In Magento zijn dat vijf producten: één hoofdproduct met omschrijving en afbeeldingen, en vier subproducten met eigen SKU, prijs, voorraad, gewicht en EAN. In Shopify wordt het één product met twee opties en vier varianten. Shopify staat drie opties en 2.048 varianten per product toe, dus dit shirt past ruim.

Eén configureerbaar Magento-product als CSV-regels voor Shopify

merino-teeMerino T-shirtKleurNavyMaatMMS-TEE-NAV-M49,00gtin:9506000134352
merino-teeKleurNavyMaatLMS-TEE-NAV-L49,00gtin:(EAN van subproduct)
merino-teeKleurZandMaatMMS-TEE-SND-M49,00gtin:(EAN van subproduct)
merino-teeKleurZandMaatLMS-TEE-SND-L49,00gtin:(EAN van subproduct)
Voorbeeldwaarden. Productkolommen vul je alleen op de eerste regel; elke regel draagt de eigen SKU, prijs en barcode van het Magento-subproduct.

Details die bepalen of dit werkt:

  • De handle komt uit de `url_key` van het hoofdproduct, niet uit de titel, zodat oude en nieuwe URL's herkenbaar gelijk blijven.
  • Gegevens van subproducten gaan naar variantkolommen. De EAN gaat in Barcodes met een typevoorvoegsel (`gtin:` of `upc:`; de kolom neemt tot 20 waarden), het gewicht in Weight value (grams) en de afbeelding van het subproduct in Variant image URL.
  • Attributen van subproducten die geen optie zijn (een binnenbeenlengte per maat, een patrooncode per kleur) hebben geen CSV-kolom, omdat variant-metafields niet in CSV worden ondersteund. Laad ze via de bulkeditor voor varianten, de Admin API of een app.
  • Vier of meer configureerbare attributen betekent twee samenvoegen tot één optie, het product splitsen of een app. De blog over de Shopify-variantenlimiet loopt elke route door.
  • Simple producten zonder hoofdproduct krijgen één regel met Option1 name `Title` en Option1 value `Default Title`, de Shopify-conventie voor producten zonder opties.
Vóór de export kies je welke attributen varianten onderscheiden; die worden de optienamen en -waarden op het Shopify-product.

Van store views naar talen en markten in Shopify

Een Magento-store view met Nederlandse of Franse content wordt in Shopify een gepubliceerde taal. Volgens de documentatie over talen krijgt elke gepubliceerde taal eigen URL's, en komen vertalingen uit Translate & Adapt, uit CSV-bestanden of uit een vertaalapp. Ook handles zijn te vertalen: de vereisten voor meerdere talen tonen `/en-ca/products/shoes` als `/es-mx/products/zapatos`, waarbij alleen het woord `products` vastligt. De `url_key` van elke store view kan dus mee als vertaalde handle. Kies je de CSV-route, dan exporteer je het vertaal-CSV via Instellingen > Talen pas als de producten bestaan, en dat bestand herkent producten aan hun resource-ID in Shopify, niet aan de SKU. Koppel de `store_view_code`-regels uit Magento dus via handle of SKU aan die ID's en vul daarna de kolom Vertaalde content met namen, omschrijvingen en SEO-velden.

Prijzen splitsen anders. Magento kan prijzen per website instellen; Shopify regelt landprijzen via markten, met procentuele aanpassingen of vaste prijzen per markt (de product-CSV heeft een kolom Price / International voor een markt met de naam International). Een Magento-opzet met een Nederlandse website in euro en een Belgische website met Franse store view wordt één Shopify-winkel met markten en talen. Onze blog over Shopify Markets instellen behandelt die opzet.

Staffelprijzen per klantgroep opnieuw opbouwen als B2B-catalogi

In Magento zijn staffelprijzen regels in de Advanced Pricing van elk product: een website, een klantgroep (of een shared catalog bij Adobe Commerce B2B), een aantal, en een vaste prijs of een kortingspercentage. Een groothandel heeft bijvoorbeeld "Winkelier" met 10% korting vanaf 12 stuks en "Distributeur" met een vaste EUR 31,50 vanaf 48 stuks.

In Shopify is de B2B-catalogus het equivalent. Volgens de documentatie over B2B-catalogi bepaalt een catalogus welke producten en prijzen een bedrijf ziet; Basic, Grow en Advanced staan tot drie actieve catalogi toe over alle B2B-markten, Plus staat onbeperkt catalogi toe en directe toewijzing aan bedrijven en locaties. Binnen een catalogus voeg je met staffelprijzen tot 10 prijsdrempels per product toe, en hoeveelheidsregels leggen per variant een minimum, maximum en veelvoud vast.

  • Eén klantgroep, één catalogus is de schone vertaling. Tel eerst je groepen: meer dan drie betekent Plus of samenvoegen.
  • Procentuele staffels worden een procentuele catalogusaanpassing plus prijsdrempels; vaste staffels worden vaste catalogusprijzen.
  • Staffelprijzen voor consumenten (de groep NOT LOGGED IN of General) hebben geen plek in een B2B-catalogus. Bouw ze opnieuw als korting of met een app.
  • Shared catalogs en onderhandelde offertes uit Adobe Commerce B2B vragen de meeste zorg; inventariseer ze per bedrijf voordat je kiest.

Een redirectplan van .html-URL-keys naar /products/-handles

Elke Magento-URL die rankt of backlinks heeft, heeft een 301 nodig naar de opvolger in Shopify. Shopify doet dat met URL-omleidingen onder Content > Menu's, en je kunt ze importeren als CSV met de kolommen Redirect from en Redirect to. De documentatie over URL-omleidingen geeft de regels die het plan bepalen:

  • Limieten: tot 100.000 omleidingen, of 20.000.000 op Plus.
  • Alleen kapotte URL's worden omgeleid. Een omleiding werkt alleen als het oude pad op Shopify een 404 geeft, wat voor Magento-paden na de domeinverhuizing de normale situatie is.
  • Gereserveerde paden zoals `/apps`, `/cart` en `/collections/all` kun je niet omleiden.
  • Taalsubmappen: één omleiding geldt standaard voor elke submap van een markt, maar vertaalde Magento-URL's hebben per taal een eigen regel nodig als het oude pad afweek.
  • De `.html`-eigenaardigheid: Shopify ziet een URL met en zonder `.html` als dezelfde, dus `/maattabel.html` omleiden naar `/maattabel` gaat niet. Verwijs naar `/pages/maattabel`.

Bouw het plan uit de eerder geëxporteerde URL-lijst: product-URL's (`/merino-tee.html`, `/heren/tops/merino-tee.html`) naar `/products/merino-tee`, categorie-URL's naar `/collections/<handle>`, CMS-pagina's naar `/pages/<handle>`. Samengevoegde of uitgefaseerde producten gaan naar de best passende collectie, niet naar de homepage. WISEPIM maakt of beheert geen redirects, dus dit bestand bouwt je eigen team, bureau of migratieapp. De gids over Magento SEO-instellingen behandelt de URL-instellingen in Magento die deze paden opleveren.

Catalogus opschonen vóór de laatste export

Elk probleem dat je in Magento laat staan, wordt geïmporteerd, vertaald en omgeleid. Deze controles leveren het meest op vóór de laatste export, niet na de livegang.

Magento-catalogus opschonen voor de overstap naar Shopify

0 van 9 klaar0%

Dezelfde discipline geldt voor andere platformwissels. Een winkel die van WooCommerce komt, krijgt dezelfde vragen over varianten en metafields met een eenvoudiger bronmodel, besproken in WooCommerce vs Shopify.

De catalogus via een PIM tussen Magento en Shopify laten lopen

Een migratie is een goed moment om productdata helemaal los te halen van de webshop. WISEPIM koppelt met beide platforms: de Magento 2-koppeling importeert producten, categorieën en configureerbare koppelingen, en de Shopify-koppeling exporteert producten op SKU met varianten als opties, metafields, en vertaalde titels en omschrijvingen per locale. Daartussen schoon je attributen op, groepeer je producten in families, vertaal je ontbrekende store views met AI en controleer je verplichte velden met Quality Guard voordat iets in Shopify belandt.

Eén Shopify-koppeling regelt import en export, met een instelling voor de primaire locale die bepaalt welke taal de standaardtaal van de winkel vult.

Twee grenzen om rekening mee te houden: WISEPIM verhuist geen klanten, orders of redirects, en zet Magento-attribuutsets niet automatisch om in productfamilies. Vervang je tijdens de overstap ook een oudere PIM, dan beschrijft de pagina over PIM-migratie hoe teams die data meenemen.

Diego Nijboer

CTO and Co-Founder at WISEPIM, building AI-powered solutions that transform product data management for e-commerce businesses. Over 10 years of experience solving complex technical challenges in e-commerce and PIM systems.

Veelgestelde vragen

Nog vragen?

Kan je het antwoord niet vinden? Neem contact op met ons team.

Contact opnemen

Dat hangt meer af van de complexiteit van de catalogus dan van het aantal producten. Een winkel met een paar honderd simple en configureerbare producten, één taal en geen B2B-prijzen kan de catalogus in enkele weken verhuizen. Meerdere store views, veel attribuutsets, bundels, klantgroepprijzen en duizenden URL's om te leiden rekken dat op tot maanden. Reserveer de meeste tijd voor opschonen en testen.

Nee. De formaten verschillen: Magento exporteert één regel per product per store view met eigen attributen samengepakt in één kolom, terwijl Shopify één regel per variant verwacht met optiekolommen en metafield-kolommen. Je moet de data eerst splitsen, omvormen en hernoemen, in een spreadsheet, met een migratieapp, of via een PIM die met beide platforms koppelt.

Volgens de documentatie van Shopify over het importeren van klanten kun je wachtwoorden die buiten Shopify zijn versleuteld niet met een CSV-bestand migreren. Klantgegevens zoals namen, e-mailadressen en adressen kun je wel importeren, maar elke klant heeft daarna een uitnodiging nodig om een nieuw wachtwoord aan te maken. Plan die uitnodiging voor de livegang en laat klanten het vooraf weten. Het valt buiten de catalogus, maar raakt de planning.

Een migratieapp is het snelst als de catalogus netjes past: hij koppelt met beide winkels, verhuist producten en vaak ook klanten en orders, en biedt meestal eerst een testrun. Met CSV-bestanden bepaal je zelf hoe attributen metafields worden en hoe configureerbare producten varianten worden, ten koste van spreadsheetwerk. Grote of meertalige catalogi combineren vaak beide, of laten de producten via een PIM lopen.

Shopify kent geen gegroepeerd producttype, en bundels vragen de bundelfunctie van Shopify of een app. Een gegroepeerd product bouw je meestal opnieuw als losse producten plus een collectie of een productverwijzing in een metafield. Beslis dit per product vóór de import, want deze artikelen passen niet in het CSV-model met één regel per variant en raken makkelijk zoek.

Verder ontdekken

Zorgvuldig gekozen vervolgstappen om dieper te gaan.

Betere productdata, betere resultaten.Verkoop meer producten.

4,7