What maps to what
Pick your Modules
Enable the ones matching what you want to test. A broad rehearsal looks like this:86d generate afterward.
Export from Shopify
Shopify Admin exports CSV for the three big ones:- Products: Admin → Products → Export → All products → CSV
- Customers: Admin → Customers → Export → CSV
- Orders: Admin → Orders → Export → CSV
- Discounts and gift cards: only through the Shopify Admin GraphQL API
Transform and import
@86d-store/import-export takes CSV and JSON for the entities it covers. Write a small script in whatever language you like to map the fields. The ones that bite:
- Shopify
Variant Priceis dollars. 86dpriceis cents. Multiply by 100, and do it with integers. - Shopify
Compare At Pricemaps tocompareAtPrice, also cents. - Shopify
Tagsis one comma-separated string. 86dtagsis an array. - Shopify product
Handlemaps toslug. - Shopify
Statusvalues (active,draft,archived) map straight across.
POST /admin/products/import, POST /admin/collections/create, and the rest, or wrap them in your own script.
Keep your URLs working
Shopify uses/products/<handle>, /collections/<handle>, and /pages/<handle>. 86d uses the same shapes, so most links survive untouched. For the ones that changed:
POST /admin/redirects.
Rebuild the theme
Liquid does not convert to MDX. There is no tool for this and there is not going to be one. Pick the closest Module component for each section of your old theme, drop it into the matching MDX page, and carry over your custom HTML and CSS:
Anything without an equivalent becomes a block of React and Tailwind in the MDX file. That is a normal outcome, not a failure of the mapping.
Payments, shipping, and tax
Pick one sandbox provider and follow Set up a payment provider. Do not copy live payment credentials into a rehearsal. For Shipping, compare your imported zones and rates against what the Shipping Module produces for the same basket. For tax, enter test registrations and then deliberately create a case the Store cannot resolve. Confirm it returns a review status rather than quietly charging zero. Silent zero tax is the failure mode that costs money nine months later.Prove the import
- Write down the exact timestamp of your Shopify export.
- Import a second delta into a fresh test database.
- Compare counts, money totals, Inventory, Customer attribution, and anything that did not come across at all.
- Force failures in sandbox Checkout, refunds, tax, Shipping, and notifications.
- Export your 86d test data and restore it somewhere else, so you know you can leave.
What does not come across
- Shopify Functions: no translator exists. Rewrite them as Modules.
- Shop Pay: no documented equivalent.
- Shopify Markets rounding rules: enable
@86d-store/multi-currencyand set rounding per currency yourself. - Theme app extensions: rewrite them as Module Storefront components and place them in MDX.