← Blog

E-commerce

Shopify naar BigCommerce: 19 valkuilen die Matrixify verbergt

Op dag drie zag de Matrixify-export er schoon uit. Op dag zeven hadden we negentien gebroken aannames en een Rotterdamse groothandel die vroeg waar zijn B2B-prijsstaffels waren gebleven.

Jacob Molkenboer· Oprichter · A Brand New Company· 8 okt 2024· 9 min
Twee pakjes met linnen touw op ivoorpapier, koperen weegschaal uit balans, groen verzendlabel, gescheurde bon met rode lakzegel.

Het is 23:14 in Rotterdam. Het Shopify Plus-contract loopt over veertien dagen af. De Matrixify-export is een uur geleden klaar. Alle 12.847 SKU's groen, elke CSV onder de 200MB, nul waarschuwingen in de log. We openen de BigCommerce staging store en het eerste product ziet er prima uit. Dan klikken we op een variant. Dan checken we een B2B-prijsstaffel. Dan tellen we klanten en vinden er 38.114, waar Shopify er 41.200 had.

Deze checklist is wat we op dag één hadden willen hebben. Negentien dingen die de Matrixify-export stilletjes liet vallen, verminkte of omgooide tussen Shopify Plus en BigCommerce, bij de migratie van een groothandel met 12.000 SKU's. Op volgorde van hoe luid de fout was: stil bovenaan, schema-verschillen onderaan.

De zeven dingen die Matrixify zonder waarschuwing laat vallen

Deze doen pijn. De export liep schoon, de CSV opende in de importer van BigCommerce zonder fouten, en de data was er gewoonweg niet.

  1. B2B-catalogi en prijslijsten. De nieuwere B2B-catalogus van Shopify (die gekoppeld is aan company profiles, niet het oude wholesale-kanaal) staat compleet buiten de product-CSV. Matrixify haalt cost en compare-at price op, maar de prijslijsten per bedrijf komen er nooit in. Wij ontdekten dit toen een inkoper inlogde en retailprijzen zag. Reken erop dat je B2B-prijzen opnieuw moet opbouwen via BigCommerce customer groups op basis van een aparte Shopify Admin API-pull.
  2. Klantwachtwoord-hashes. Shopify geeft password hashes via geen enkele export vrij, dat is beleid. Elke klant is voor altijd uitgelogd. Wij stuurden password-reset-mails in batches over vier dagen om de spamfolder te ontwijken. Verwacht een reset-rate van 30 tot 50 procent in week één.
  3. Metaobjects. Shopify 2.0 metaobjects exporteren als ondoorzichtige JSON-referenties. BigCommerce heeft geen native equivalent (het dichtstbij komt metafields op entiteiten), dus elke productspec, ingrediëntenlijst of onderhoudsinstructie die als metaobject is gebouwd moet opnieuw worden gemodelleerd en geïmporteerd.
  4. Translate & Adapt-content. Locale-specifieke producttitels, beschrijvingen en SEO-velden die je beheert via de translation app van Shopify staan op de Translatable Resources GraphQL endpoint, niet op het product zelf. De standaard Matrixify-exports slaan ze over. De groothandel had Nederlandse en Duitse varianten. Wij haalden die via GraphQL op en mapten ze opnieuw naar de meertalige velden van BC.
  5. Klanttags via Flow. Tags die door Shopify Flow-automatiseringen worden gezet (loyalty tier, VIP, no-ship-list) exporteren als platte string. De logica die ze bijhield, niet. De automatiseringen van BigCommerce werken anders. Documenteer elke Flow voordat je migreert, anders ben je een maand bezig met het reverse-engineeren van je segmentatie.
  6. Theme sections en app embeds. Alles wat is gebouwd met Shopify 2.0 sections, app blocks of theme-app extensions is een complete herbouw. Strikt genomen is dit geen Matrixify-fout (thema's migreren niet), maar teams vergeten standaard dat custom producttemplates, in apps geëmbedde reviews en dynamische aanbevelingsblokken geen pad vooruit hebben.
  7. Cart attributes en live carts. Als je apps cart attributes schrijven (gravure op maat, B2B PO-nummers), bestaan die alleen op live carts en draft orders. Matrixify kan draft orders exporteren, maar de actieve cart sessions niet. Migreer in een rustig moment en accepteer dat verlaten winkelwagens verloren gaan.

De acht conversies met dataverlies

Deze kwamen er wel doorheen, maar verkeerd. Erger dan ontbrekende data, omdat niemand er bij QA op slaat.

  1. Varianten-afbeeldingen gemapt als productafbeeldingen. Shopify laat één afbeelding aan meerdere varianten hangen. BigCommerce wil expliciete variant-image-rijen. De standaard Matrixify-export gooit de variantkoppeling weg, dus alle afbeeldingen stapelen zich op als gallerij-foto's. Bij 12.000 SKU's met gemiddeld drie varianten betekende dat 36.000 verkeerd toegewezen plaatjes. Gebruik de variant-image join columns in de export, of schrijf een post-import script.
  2. Voorraadlocaties platgeslagen. Shopify Plus slaat multi-location voorraad native op. BigCommerce ondersteunt multi-location ook, maar alleen op de nieuwe Inventory API. De CSV van Matrixify mapt standaard naar één magazijn. Zet locaties eerst op in BigCommerce, exporteer dan met location columns, importeer dan.
  3. Smart collections werden statisch. De automated collections van Shopify (rule-based) exporteren als de lijst producten die ze op dat moment bevatten. De category-tegenhanger van BigCommerce heeft een eigen rule engine, maar de predicaten matchen niet. Wij bouwden 84 smart collections met de hand opnieuw op vanuit de regeldefinities in Shopify Admin.
  4. Automatische kortingen vielen terug naar codes. De automatische kortingen van Shopify (BOGO, staffel, gratis verzending boven X) worden in de BigCommerce-import couponcodes en verliezen het auto-apply-gedrag. De Promotions-module van BigCommerce kan het meeste opnieuw bouwen, maar de conditionele logica vraagt om handmatige vertaling.
  5. Btw-overrides platgeslagen. De per-regio btw-overrides van Shopify (nultarief kinderkleding in het VK, verlaagde btw op voeding in NL) komen binnen als één tax class. EU-groothandels zetten dit standaard verkeerd neer. Configureer BigCommerce tax zones en product tax classes vóór de import.
  6. Cadeaubon-saldi zonder vervaldatum. Cadeaubon-codes en saldi exporteren wel, vervaldatums en namen van ontvangers niet. Klanten kregen bonnen die werkten, maar zonder naam erop. Communiceer dit vóór de livegang.
  7. Fulfillment service routing weg. Producten die door een 3PL worden afgehandeld via Shopify's Fulfillment Service API verschijnen in BigCommerce als merchant-fulfilled. Koppel de 3PL-integratie opnieuw en label de betreffende SKU's voor de eerste besteldag.
  8. Abonnementsproducten werden dom. Producten met een abonnement van Recharge, Bold of Appstle exporteren als eenmalige aankopen. De abonnementsstatus (volgende factuurdatum, frequentie, klantmachtiging) leeft in de eigen database van de app. Stem de migratie af met de leverancier van de abonnements-app, anders krijg je boze klanten met recurring revenue.
Waarschuwing

Het all-green log van Matrixify bevestigt alleen dat de CSV is weggeschreven. Het bevestigt niet dat de brondata compleet is. Exporteer altijd, tel rijen, en vergelijk ze met de aantallen in Shopify Admin voor je gaat importeren.

De vier schema-verschillen die handwerk vragen

Deze zijn niet echt Matrixify's schuld. Het zijn structurele verschillen tussen de twee platforms.

  1. Product options versus option sets. Shopify laat je optiewaarden vrij combineren (Maat: S, M, L; Kleur: Rood, Blauw) zonder de structuur te declareren. BigCommerce option sets zijn herbruikbare templates die je aan producten toewijst. De Matrixify-import maakt één option set per product aan. Op een catalogus van 12.000 met gedeelde maatvoering leverde dat 12.000 bijna identieke option sets op. Consolideer na de import, of bouw de option sets eerst en refereer eraan op naam.
  2. SKU-veldnaam-botsing. BigCommerce heeft zowel een Product Code/SKU op productniveau als een SKU op variantniveau. De product-level SKU van Shopify mapt meestal naar de variant-SKU van BigCommerce. Doe de mapping verkeerd en je bent de eerste week bezig met voorraadverschillen najagen die er niet zijn.
  3. URL-redirects moet je herschrijven. Shopify-URL's zijn /products/handle en /collections/handle. BigCommerce gebruikt standaard /product-url-key/ en /category-url/. Exporteer de bestaande 301-map van Shopify, schrijf 'm om naar de BigCommerce-structuur en laad 'm via de Redirect Manager voor de DNS-cutover. SEO-verkeer vergeeft een gemiste redirect niet.
  4. Webhooks en app subscriptions. Elke webhook, elke app subscription, elke API-integratie die op de Shopify-store staat geregistreerd, is weg op het moment dat je het domein omzet. Inventariseer ze eerst. Wij vonden 47 actieve webhooks op de store van de groothandel, waarvan elf bij oude apps hoorden die niemand zich nog herinnerde te hebben geïnstalleerd.

Onze migratievolgorde, op volgorde

De checklist ziet eruit als werk. Dat is het ook. Maar de volgorde telt meer dan de items zelf. Wij draaiden de groothandel in deze volgorde en gingen op dag elf live:

  1. Zet BigCommerce locations, customer groups, tax zones en option sets op voor de eerste productimport.
  2. Exporteer Shopify-producten, varianten en variant images via Matrixify, plus een aparte GraphQL-pull voor metaobjects, vertalingen en B2B-prijslijsten.
  3. Vergelijk klant- en productaantallen met Shopify Admin voordat je iets importeert.
  4. Importeer producten in een dry-run BigCommerce-store, QA de top 50 best-sellers en een gestratificeerde steekproef van varianten, fix het importscript, draai dan op de live target.
  5. Bouw customer groups en prijslijsten vanuit de B2B-export.
  6. Koppel 3PL, payment provider en e-mail- of SMS-apps opnieuw. Registreer webhooks opnieuw.
  7. Bouw de 301-redirect-map. Test op staging met curl. Zet DNS om.
  8. Stuur password-reset-mails in batches over vier dagen.

Dag één na de cutover hadden we nog steeds losse eindjes. Twee collections leeg omdat de smart-collection-regels niet vertaalden. Een houder van een cadeaubon die niet kon inwisselen door een leading whitespace in de geïmporteerde code. Eén klantsegment dat door Flow was getagd en nu opnieuw als BigCommerce-marketinglijst moest worden opgebouwd. Elk van die items stond op de checklist en werd binnen een uur opgelost. Geen ervan was een verrassing op de productie-store.

Toen we dit vorig kwartaal deden voor de Rotterdamse groothandel, zat het lastige niet in de data. Het zat in het op volgorde zetten van het herbouwwerk, zodat we na livegang nooit een CSV opnieuw hoefden te importeren. Het migratie-playbook dat we nu gebruiken is grotendeels deze lijst, in deze volgorde, met vinkjes. Niet glamoureus, maar het is het verschil tussen een project van veertien dagen en een van veertien weken.

Sta je vanmiddag voor dezelfde migratie? Het kleinste dat je vandaag kunt doen: open Matrixify, draai een export van alleen je B2B-catalogi en metaobjects en vergelijk de rij-aantallen met je Shopify Admin. Als het verschil je verrast, heb je je startpunt.

Kern

Het all-green log van Matrixify betekent dat de CSV is weggeschreven, niet dat de data compleet is. Tel rijen tegen Shopify Admin voor je importeert.

FAQ

Exporteert Matrixify de B2B-catalogi van Shopify Plus?

Nee. De nieuwere B2B-catalogi die aan company profiles hangen lopen niet door de product-CSV van Matrixify. Je hebt een aparte Shopify Admin API-pull nodig en een handmatige herbouw naar BigCommerce customer groups.

Kun je klantwachtwoorden migreren van Shopify naar BigCommerce?

Nee. Shopify geeft password hashes via geen enkele export vrij. Elke klant moet bij de eerste login resetten. Spreid de reset-mails over meerdere dagen om spamfilters voor te zijn.

Hoe lang duurt een migratie van 12.000 SKU's van Shopify naar BigCommerce?

Met het voorwerk vooraf gedaan (locations, tax zones, option sets, customer groups) en een schone Matrixify dry run is elf tot veertien dagen reëel. Zonder voorwerk reken op zes tot tien weken.

Wat sloopt je SEO tijdens een Shopify-naar-BigCommerce-migratie?

Missende 301-redirects. Shopify gebruikt /products/handle en /collections/handle, BigCommerce gebruikt andere slugs. Exporteer de bestaande redirect-map, schrijf 'm om en laad 'm voor de DNS-cutover.

Migreren abonnementsproducten schoon?

Nee. Abonnementen van Recharge, Bold en Appstle exporteren als eenmalige aankopen. De abonnementsstatus leeft in de eigen database van de app, dus stem de migratie af met de leverancier van de abonnements-app.

e-commercemigrationcase studyintegrationsarchitecture

Iets bouwen?

Start een project