Migrating from Shopify to Commercefull — A Complete Guide
Step-by-step Shopify to Commercefull migration — what moves, what doesn't, how the built-in migration module works, and the pitfalls to plan for.
October 6, 2026
Shopify is where most merchants start — and where many eventually feel the squeeze: app bills stacking up, checkout locked behind Plus, and a growing sense that the store you built isn’t really yours.
Commercefull ships with a built-in migration module designed for exactly this move. Here’s how a real Shopify→Commercefull migration works.
What actually moves
The migration module tracks each import as a job, maintains a mapping table between Shopify IDs and Commercefull IDs, and logs every error for triage. Coverage:
| Shopify entity | Commercefull destination |
|---|---|
| Products & variants | product module |
| Collections | content module |
| Customers | customer module |
| Orders | order module |
| Inventory levels | inventory module |
| Discounts / price rules | coupon module |
| Gift cards | coupon (gift card subsystem) |
| Tax settings | tax module |
| Shipping zones | shipping module |
| CMS pages | content module |
| Product reviews | product reviews subsystem |
The workflow
1. Export from Shopify. Pull your data via the Admin API (or CSV exports from the admin panel — Products → Export, Customers → Export).
2. Create an import job. The Business API registers the import and returns a job ID. Always start with a dry run:
curl -X POST http://localhost:3000/business/migration/jobs \
-H "Content-Type: application/json" \
-d '{
"organizationId": "your-org-id",
"jobType": "full",
"source": "shopify",
"sourceStoreUrl": "https://your-store.myshopify.com",
"dryRun": true
}'
3. Stream records. For each exported record, create it via the Business API and record the ID mapping back to the job — that’s what makes rollback, re-runs, and audit trails possible.
4. Review errors, fix, re-run. The job’s error log tells you exactly which records failed and why. Fix the data, re-run only what failed.
What doesn’t move (plan for these)
Be honest with yourself about the gaps — every platform migration has them:
- Customer passwords. No platform exports password hashes — customers reset on first login. Plan a “reset your password” email campaign for launch week.
- App data. Your Shopify apps’ data (reviews apps, loyalty apps, subscription apps) lives in those apps’ databases, not Shopify’s. Export from each separately.
- Theme. Liquid templates don’t port — you’ll rebuild the storefront in Commercefull’s theme system or go headless on the Customer API.
- Subscriptions in progress. Active subscription contracts need re-establishment — migrate subscribers and re-create their schedules.
The wins on the other side
- No more app tax. Loyalty, subscriptions, reviews, gift cards, B2B — the things you were renting — are native modules now.
- Your checkout. Every template and flow is editable code, not a sandboxed script slot.
- Your database. Plain PostgreSQL. Query it, export it, keep it forever.
The full technical guide — entity mapping tables, API calls, dry-run workflow — is in the docs: Migrating from Shopify.
Not on Shopify? The migration module also supports WooCommerce, Magento, BigCommerce, PrestaShop, Shopware, Wix, Squarespace, and CSV.
Ready to own your store?
Commercefull is free, open-source, and Apache-2.0 licensed. Every module, every line, every row of data — yours.