SaaS · Liquid · hosted

Migrate from Shopify to DashCommerce

Difficulty
High risk · phased project
Timeline
6-12 weeks for a mid-size store
Data loss risk
Medium — subscriptions and app state need planning

Who this migration is for

This guide is for teams who have already decided to leave Shopify. If Shopify is working for you, you should probably stay. Shopify’s operational lift — managed infrastructure, mature admin UI, App Store ecosystem, polished merchant experience — is the correct answer for a large category of merchants, and an open-source zealot will try to talk you out of that for bad reasons. Do not listen.

This guide is not for you if any of the following apply. You depend on Shopify POS for brick-and-mortar retail. You run a subscription-heavy business where most revenue flows through Shop Pay Subscriptions or ReCharge and you cannot absorb a retention dip. You rely on ten or more Shopify apps for day-to-day operations, most of them Shopify-only. Your team is non-technical and the idea of deploying an Astro project to Cloudflare or Vercel sounds foreign. In any of those cases, the migration cost exceeds what you would recover in platform fees and control, and Shopify is still the right answer.

This guide is for you if you run a mostly-online store, your team writes TypeScript, you are already on or moving toward an EmDash CMS or Astro site, and the 0.5-2.0% Shopify platform fee on top of Stripe processing is starting to feel like rent. If that describes you, keep reading.

What you’re actually leaving behind

A Shopify migration is not a config change. You are leaving five distinct things, and it is worth being honest about each.

Managed infrastructure. Shopify runs the servers, the CDN, the database, the checkout, the backups, the uptime, the DDoS protection, the PCI compliance, the fraud detection. When you move to DashCommerce, you run all of that — on Cloudflare Workers or Vercel or Fly or a box, but you run it. This is a feature if you want control and a liability if you have no team to carry the pager.

The app ecosystem. Shopify has tens of thousands of apps. Any niche integration you might need — a specific 3PL, a vertical-specific loyalty program, a local payment method, a tax service for an unusual jurisdiction — probably already exists in the App Store. DashCommerce has no app store. You reconnect the tools that still work (Klaviyo, Gorgias, ShipStation) via their native APIs, and for anything Shopify-only, you rebuild on open tools or walk away from the feature.

The polished admin. Shopify’s admin is 18 years of iteration. Every inventory edit, every bulk update, every customer lookup is fast and obvious. DashCommerce ships a 12-page React admin that covers products, orders, customers, subscriptions, coupons, shipping, tax, reviews, vendors, and settings — feature-complete for operations, but not yet pixel-polished in the way Shopify’s is. Be honest with your operations team about this going in.

POS, if you use it. See above. DashCommerce has no POS, and there is no near-term roadmap for one. If you run physical retail on Shopify POS, this migration is not for you.

Shop Pay. Shop Pay is Shopify-proprietary — the one-click checkout, the network-wide card vault, the Shop Pay Subscriptions product. You cannot keep any of it. Stripe’s Payment Element covers most of what Shop Pay did for conversion (Apple Pay, Google Pay, Link, saved payment methods), but it is not identical and you will measure a conversion difference for the first month. Plan for it.

What you gain

Source code. Every line of DashCommerce is MIT-licensed on GitHub. Fork it. Audit it. Fix a bug without waiting for a platform team’s next release. Add a feature specific to your business without contorting it through a Liquid section or an app proxy.

Zero platform fee. Shopify Basic charges 2.0% on every transaction above Stripe processing unless you use Shopify Payments. Shopify Plus starts at ~$2,500/month plus fees. DashCommerce charges $0 and takes $0 per transaction. On a $2M/year store, that is $40,000/year back into the business. On a $200K/year store, it is $4,000/year — smaller, but the math only goes one direction as you grow.

Edge performance. DashCommerce is designed for edge deployment on Cloudflare Workers or Vercel. The storefront is Astro — zero JS shipped by default, fast static renders, assets on a CDN — not a Liquid template rendered server-side in Shopify’s stack. For content-heavy stores, the performance difference is visible in Lighthouse and in real-user metrics.

CMS-integrated commerce. If you are already on EmDash, commerce becomes part of the same content graph, not a separate Shopify surface talked to via a Storefront API shim. Product pages, collections, marketing pages, and blog posts share the same rendering pipeline, the same typed schemas, and the same deployment target.

Direct Stripe. You own the Stripe account. You control the fraud rules, the chargeback process, the payout schedule, the tax automation, the 1099 reporting. No intermediate platform sits between your business and the payment processor.

The app-replacement matrix

This is the most useful section of this guide. For each major Shopify app category, here is what DashCommerce provides in core and what you replace it with externally.

Email marketing (Klaviyo, Mailchimp, Omnisend). Keep them. Connect via DashCommerce webhooks and Stripe webhooks. DashCommerce does not ship a campaign builder — transactional email (receipts, renewals, dunning, abandoned-cart) is in core, but broadcast and segmentation are not. Klaviyo’s value is segmentation and drip campaigns; that value persists after you migrate.

Customer support (Gorgias, Zendesk, Intercom). Keep them. These are email-first and chat-first tools; they connect to your support channels, not to Shopify specifically. Reconnect with the new admin email and any custom data webhooks you want them to receive.

Subscriptions (ReCharge, Bold, Appstle, Shop Pay Subscriptions). Replace with DashCommerce core. Stripe Subscriptions with trials, proration, upgrades, cancellation flows, and dunning emails ship in @dashcommerce/core — no app, no monthly fee, no Stripe Connect intermediate. The migration cost is real (see subscription section below), but once done, you are off the subscription-app treadmill.

Reviews (Yotpo, Stamped, Judge.me, Loox). Replace with DashCommerce core, or keep external. DashCommerce ships a review system with moderation and display. If you already have thousands of reviews on Yotpo and the social-proof value matters, keep Yotpo and use their JS embed. If you are starting fresh or moving small volume, use DashCommerce core.

Tax (Shopify Tax, TaxJar, Avalara). Replace with Stripe Tax. Shopify Tax is Shopify-only. Stripe Tax is the lowest-effort direct replacement — US sales tax, VAT/GST in major jurisdictions, registration help, and it integrates cleanly with DashCommerce’s Stripe checkout. TaxJar and Avalara still work via webhook if you need specific reporting.

Shipping (ShipStation, Shippo, EasyPost). Keep them. These services have direct APIs and connect to DashCommerce via webhook for order events. Multi-carrier rate shopping, label printing, and fulfillment stay exactly as they were.

Loyalty and rewards (Smile.io, LoyaltyLion). Keep them, or rebuild on your own. DashCommerce ships coupons in core but no points ledger. If loyalty is important, Smile.io and LoyaltyLion have APIs; reconnect via webhook.

SMS (Postscript, Attentive). Keep them. Direct API, reconnect with your customer list.

Page builders (Shogun, PageFly). Replace. If you are on EmDash, content pages are already authored in EmDash’s CMS. Shogun and PageFly are Shopify-specific and do not migrate.

Shopify Flow automations. Rebuild on Make, n8n, or Zapier — general-purpose automation tools that connect to DashCommerce and Stripe via webhooks. Flow is Shopify-only and does not migrate.

Exporting Shopify data

Shopify gives you two clean export paths.

Built-in CSV. Admin → Products → Export, Customers → Export, Orders → Export. Works for small catalogs (under a few hundred products, a few thousand customers). Flattens variant structure, loses metafields, and does not include app-specific data. Adequate as a starting point; not adequate for a production migration.

Admin GraphQL API. Create a custom app in Shopify admin, assign it read permissions, use the generated access token to query products, productVariants, collections, customers, orders, metafields, and redirects. Paginate with cursors. Write every response to versioned JSON before transforming. This is the serious path for any store with variant complexity or metafield usage.

Also export the Online Store URL Redirects table (Navigation → URL Redirects), Shopify Flow workflows (manual export, rebuild on external tools), app-specific data (each app has its own export path in its own dashboard), and the current sitemap at /sitemap.xml for building the 301 redirect map.

Never transform during export. Dump raw Shopify JSON first, versioned in git or blob storage, and transform from those frozen snapshots. This lets you re-run the transform as many times as needed without re-hitting Shopify’s rate limits.

The subscription migration reality

If you do not sell subscriptions, skip this section.

If you do, this is the hardest part of your migration and the single most common reason Shopify migrations slip. Read it carefully.

Active subscriptions on Shopify are tokenized payment methods attached to customers, stored on someone’s Stripe account — either Shopify’s (for Shop Pay Subscriptions) or the subscription app vendor’s Stripe Connect account (for ReCharge, Bold, etc.). These tokens (cus_, pm_, sub_ IDs) exist on a Stripe account that is not yours. You cannot just copy them to your direct Stripe account. Stripe’s tokens are account-scoped by design.

Your options, from least to most painful for customers:

Option A: Stripe portability export. Stripe supports account-to-account tokenization transfers under its portability program, but it requires consent from both account holders (you, and whoever holds the existing tokens — Shopify or ReCharge) and is not always granted. If you have a large subscription base and executive relationships, this is worth pursuing. Budget 4-8 weeks just for the Stripe coordination, and do not count on approval.

Option B: Customer re-authorization. Accept that on first renewal after cutover, customers must re-enter their payment method. Communicate this via email 7-14 days before the first renewal cycle, show an in-checkout banner, and make the re-auth flow one click. Expect a 5-15% retention dip in that first cycle — some customers will forget, some will decide not to bother, some will take the prompt as an opportunity to cancel. Budget the revenue hit into your migration financial model.

Option C: Dual-run through one full billing cycle. Keep Shopify running for existing subscriptions while new subscriptions sign up on DashCommerce. At the end of one full billing cycle (30 days for monthly, 365 for annual), all active Shopify subs have renewed once and you can either let them run to next cycle on Shopify while migrating them via Option B, or run Option A in parallel. This is the most complex operationally but least painful for customers.

Most stores end up with a combination of B and C. If subscriptions are a majority of your revenue, do not migrate unless the long-term savings justify the short-term retention dip.

Rebuilding the theme

Shopify themes do not migrate. Liquid is a Shopify-specific template language with Shopify-specific helpers, hooks, and objects. None of it ports to Astro.

What you are doing instead: starting with @dashcommerce/starter, which gives you a working storefront with cart, product pages, product listings, checkout, account pages, order history, and abandoned-cart flows out of the box. You are restyling, not rebuilding from zero. The work is design-focused: apply your brand colors, typography, and imagery to the existing component structure, adjust layouts, and add any custom sections your brand requires (lookbook, brand story, ambassador program).

Budget 2-4 weeks for a mid-size store. Treat the rebuild as an opportunity to drop accumulated Shopify-era theme cruft — unused sections, dead app blocks, legacy Liquid snippets. Most Shopify themes carry years of this. Shed it deliberately.

SEO and URL preservation

Shopify uses predictable URL patterns, which makes redirect mapping straightforward:

  • /products/{slug}/shop/{slug} (or whatever you configure in your Astro project)
  • /collections/{slug}/category/{slug}
  • /collections/{collection}/products/{product}/shop/{product} (drop the collection prefix)
  • /pages/{slug}/{slug} (EmDash handles these as regular pages)
  • /blogs/{blog}/{post}/blog/{post} (or match your EmDash blog routing)

Export every indexed URL from Google Search Console’s Pages report and Shopify’s sitemap. Build the redirect map in a CSV or JSON file, validate with a script that checks every redirect resolves to a 200 response, and encode redirects at the edge — Cloudflare Workers, Vercel Edge Middleware, or Netlify’s _redirects file. Do not put redirects in Astro middleware; they run too late and cost a render on every redirect.

Keep redirects in place for at least 12 months. Google reconsolidates page authority slowly — weeks to months — and a URL that 404s during that window can lose most of its ranking equity permanently. After 12 months you can start pruning low-value redirects; do not prune anything still receiving organic traffic.

Resubmit your sitemap to Google Search Console the day of cutover. Monitor the Coverage report weekly for the first month, watching for 404 spikes and un-indexed pages.

The parallel-run strategy

Do not attempt a hard cutover. Run DashCommerce in parallel with Shopify for at least 30 days before flipping DNS, and keep Shopify running in read-only mode for 30 days after.

Before cutover: stand up DashCommerce on new.example.com or staging.example.com, run full purchase flows through Stripe test mode, then through a small slice of real traffic. Have at least two non-engineering teammates shop the staging site and report anything that feels different from Shopify. Walk through every critical path: product search, cart, coupon codes, checkout with Apple Pay, checkout with Link, subscription signup, subscription cancellation, password reset, abandoned cart, refund, return flow.

After cutover: keep Shopify in read-only mode as a rollback insurance policy. If a critical issue emerges on DashCommerce in the first week, you can temporarily point DNS back to Shopify while you fix the issue. This is expensive (two sets of infrastructure, two payment stacks, support staff trained on both) but cheap compared to a botched cutover that loses a weekend of revenue.

When to cut DNS

Cut DNS only when all of the following are true:

  • Staging has passed end-to-end testing, including real-traffic smoke tests
  • Redirects are encoded at the edge and validated against a list of indexed URLs
  • Stripe is live on your direct account with webhooks verified
  • The subscription migration plan is communicated to affected customers, with in-checkout banners and email sequences in place
  • Your operations team is trained on the DashCommerce admin and has written runbooks for the first week’s likely support cases
  • An on-call rotation is set for the first week after cutover

The cut itself is fast: update A/CNAME records, wait for propagation (TTL permitting — lower TTLs 24-48 hours before cutover), switch traffic. The first 24 hours are busiest for support — staff up. The first week is busiest for engineering — staff up. After 30 days, retire the parallel Shopify environment.

When NOT to do this migration

Do not migrate if:

  • You run Shopify POS and physical retail is a meaningful revenue source. DashCommerce has no POS.
  • Your subscription base is large, you cannot communicate a re-auth cleanly, and a 5-15% retention dip would be existential.
  • You depend on ten or more Shopify apps daily and more than three are Shopify-exclusive with no external equivalent.
  • Your team is non-technical and no one is comfortable running an Astro project on Cloudflare or Vercel. Hire first, migrate later.
  • You are launching this week. Migration is a 6-12 week project for a mid-size store; compressing it is how cutovers fail.
  • You are on Shopify Plus and the Plus-specific features (B2B wholesale, Launchpad, custom checkout) are core to your operation. DashCommerce does not have equivalents for most Plus-tier features, and the Plus platform fee — while real — is often worth it for large merchants.
  • You are chasing “zero platform fees” without a clear handle on what the migration will cost in engineering time and customer-facing risk. The math on a $500K/year store rarely justifies the migration cost. The math on a $5M/year store usually does. Do the math first.

If none of those apply and you have done your app audit, subscription plan, and redirect map — welcome. The migration is real work, but the result is a commerce stack you own, on infrastructure you control, paying Stripe and nobody else.

Migration plan

Order of operations

  1. 01

    Audit your Shopify app stack

    Before scoping a timeline, list every Shopify app you have installed and rely on. Klaviyo, Gorgias, Yotpo, Stamped, ShipStation, Recharge, Bold Subscriptions, Shopify Tax, Shopify Flow, Judge.me, Loox, Smile.io, Postscript, Attentive, Shogun, PageFly, every 3PL integration, every fraud prevention app. For each, write down what data or state it holds, whether that state lives in Shopify or in the app's own cloud, and whether the app has a non-Shopify API surface. Most Shopify Apps store state in their own databases and only sync to Shopify for product/customer context — they will not migrate with your catalog. This audit decides whether the migration is feasible at all. If you run more than ten apps daily and their state is deeply entangled, this is a rebuild with commerce attached, not a commerce migration.

  2. 02

    Decide what replaces each app

    Map your Shopify audit against DashCommerce's feature set and a shortlist of external services. DashCommerce core covers subscriptions, marketplace payouts, reviews, coupons, inventory, multi-currency, abandoned-cart recovery, and transactional email. Common external replacements: Klaviyo stays (connect via Stripe and DashCommerce webhooks); Gorgias stays (connect to email); ReCharge and Bold Subscriptions are replaced by Stripe Subscriptions in DashCommerce core; Yotpo and Stamped can be replaced by DashCommerce core reviews or kept external; Shopify Tax is replaced by Stripe Tax or manual rate tables; ShipStation stays (connect via webhook); Shopify Flow automations are rebuilt on Make, n8n, or Zapier. Every app either (a) stays and reconnects, (b) gets replaced by a DashCommerce native feature, or (c) is removed because you were not using it seriously. Write the decision for every app before you write any migration code.

  3. 03

    Export your Shopify catalog

    Shopify exposes two clean export paths. The built-in CSV export (Products, Customers, Orders) works for small catalogs but flattens variant structure and loses metafields. The Admin GraphQL API is the serious path — authenticate with a custom app or Shopify CLI, query `products`, `productVariants`, `collections`, `customers`, `orders`, and `metafields`, paginate carefully, and write every response to versioned JSON before transforming. Also export collections (both manual and smart, noting that smart collection rules do not translate directly to DashCommerce categories), redirects (Online Store → Navigation → URL Redirects), and every metafield namespace you rely on. Never transform during export; export first, transform second. If you have a million-row product catalog or hundreds of thousands of customers, plan for a full day just running exports.

  4. 04

    Transform to DashCommerce-compatible JSON

    Shopify's data model and DashCommerce's data model overlap but are not identical. Write a custom transform script — Node, Python, whatever your team writes fastest — that converts the Shopify export into the shape `dashcommerce-merge-seed` expects: product type, variants, price per currency, SKU, inventory, images, SEO slug, category references. Variant-heavy products with option combinations are the most common source of transform bugs — give them extra attention. Shopify's variant model uses up to three options (e.g. size, color, material) with a specific option/value structure; DashCommerce uses typed variant attributes. Shopify metafields rarely map cleanly; decide which ones you actually use and migrate just those. Version the transform script in git and run it against a 20-product dry run before trying the full catalog.

  5. 05

    Scaffold DashCommerce

    Stand up your EmDash project and run `npm create @dashcommerce@latest` in the project root. The scaffolder installs `@dashcommerce/core` (v0.1.3 at time of writing, MIT-licensed), the `@dashcommerce/starter` template, and `dashcommerce-merge-seed` — the CLI you use for data imports. Confirm the default storefront renders, the 12-page React admin is reachable, and Stripe test-mode keys are configured with your own direct Stripe account. Do not reuse any Shopify-related credentials: your new Stripe integration talks directly to Stripe, not through any Shopify Payments intermediary. Configure webhooks (`checkout.session.completed`, `invoice.*`, `customer.subscription.*`) in Stripe's dashboard and verify with `stripe listen` locally.

  6. 06

    Import catalog via dashcommerce-merge-seed

    With the transformed JSON and the scaffolded project, feed your catalog through `dashcommerce-merge-seed`. The CLI is idempotent — re-run it as often as you need during development without duplicating rows. Start with a small slice (20 products, 5 categories, 10 customers) to validate the transform, inspect the results in the admin, then scale up. Expect to iterate on the transform script several times before the full import looks right. Do not try to import subscriptions in this step; subscriptions are their own migration phase and require customer-facing communication.

  7. 07

    Set up Stripe directly

    This is where Shopify migrations most often get the architecture wrong. If you were on Shopify Payments, your Stripe activity routed through Shopify's platform infrastructure — you never had a direct Stripe account for that traffic. For DashCommerce, create (or use) your own Stripe account in your business's name, generate `sk_live_*` and `pk_live_*` keys, and configure them in DashCommerce. Test the full purchase flow in Stripe test mode end-to-end at least once: cart → checkout → Payment Element → 3DS challenge → webhook → order record → receipt email. Verify that Apple Pay, Google Pay, and Link show up in the Payment Element. Shop Pay is Shopify-proprietary and will not be available; customers get Stripe Link instead, which covers roughly the same conversion ground.

  8. 08

    Rebuild the theme as Astro

    Shopify themes are Liquid templates tightly coupled to Shopify's runtime. They do not migrate. DashCommerce runs inside an Astro project with `.astro` components and typed props; the storefront is a rebuild, not a port. `@dashcommerce/starter` gives you a working storefront — cart, product pages, checkout, account flows — out of the box, so you are restyling rather than rebuilding from zero. Budget 2-4 weeks of design and frontend work to port your visual identity into the starter. This is also a chance to drop theme cruft you accumulated over years of Shopify — most Shopify themes carry unused sections, dead app blocks, and legacy Liquid snippets that no one will miss.

  9. 09

    Plan subscription migration

    If you run Shop Pay Subscriptions, ReCharge, Bold, or any other Shopify subscription app, the payment methods on active subscriptions are tokenized against someone else's Stripe account — Shopify's, or the app vendor's Stripe Connect account. These tokens cannot be transferred verbatim to your direct Stripe account. Three real options: (a) request a Stripe portability export from the platform holder (not always granted, and the process varies by vendor); (b) accept that customers re-enter payment methods on first renewal after cutover, communicate via email and an in-checkout banner, and budget for a retention dip of 5-15%; (c) dual-run both platforms through the next billing cycle, letting existing subscriptions renew on Shopify while new ones sign up on DashCommerce. Most stores end up with some combination of (b) and (c).

  10. 10

    Set up 301 redirects from Shopify URLs

    Shopify uses predictable URL patterns: `/products/{slug}`, `/collections/{slug}`, `/collections/{collection}/products/{product}`, `/pages/{slug}`, `/blogs/{blog}/{post}`. DashCommerce and `@dashcommerce/starter` use `/shop/{slug}` for products and `/category/{slug}` for categories by default, though you can configure whatever routing you want in your Astro project. Before cutover, build a redirect map from every indexed Shopify URL to the new DashCommerce URL and encode redirects at the edge (Cloudflare Workers, Vercel, Netlify `_redirects`), not in Astro middleware, so they fire before rendering. Also export Shopify's existing `/a/` App Proxy paths and its Online Store URL Redirects table — those already existed on Shopify and need to keep working. Keep redirects in place for at least 12 months; Google reconsolidates authority slowly.

  11. 11

    Test in parallel on a staging domain

    Do not cut DNS until everything passes end-to-end testing on a staging domain. Stand up `new.example.com` or `staging.example.com`, point it at your DashCommerce deployment, and run full purchase flows through Stripe test mode and then through a small slice of real Stripe traffic. Walk through every critical path: product search, add to cart, apply coupon, checkout with Apple Pay, checkout with Link, subscription signup, subscription cancellation, password reset, abandoned-cart email, refund. Have at least two non-engineering teammates shop on the staging site and report anything that feels different from Shopify. Parallel-running for 30 days is normal; budget for the overlap cost of two sets of infrastructure.

  12. 12

    Cut DNS and monitor

    Only flip DNS once staging has passed testing, redirects are in place, and Stripe is live on your direct account. The cut itself is fast — update the A/CNAME records, wait for propagation, and switch incoming traffic. The work that follows takes longer. Keep Shopify running in read-only mode for 30 days as a rollback insurance policy and for support access to historical orders. Monitor Google Search Console's Coverage report weekly for the first month, watching for 404 spikes that would indicate missing redirects. Monitor Stripe for failed webhooks. Monitor customer support tickets for confusion. Budget for a dedicated on-call rotation for the first week after cutover.

FAQ

Migrating from Shopify — FAQ

Can I keep Shopify Payments after migrating?
No. Shopify Payments is a Shopify-only payment stack — it does not exist outside the Shopify platform. When you migrate to DashCommerce, you switch to direct Stripe, with your own Stripe account and your own keys. In practice this is an improvement: the processor fee is the same (roughly 2.9% + 30¢ in the US), you own the merchant relationship with Stripe directly, and you stop paying Shopify's 0.5-2.0% platform fee on every transaction. Apple Pay, Google Pay, and Stripe Link are available in the Stripe Payment Element and cover most of what Shop Pay did for conversion.
What about my Shop Pay Subscriptions?
This is the hardest part of a Shopify migration. Shop Pay Subscriptions, ReCharge, Bold, and similar apps tokenize payment methods against the platform holder's Stripe account, not yours. Those tokens cannot be moved verbatim to a direct Stripe account on DashCommerce. Your three options are (1) request a Stripe portability export from the platform — not always granted, varies by vendor; (2) accept that customers re-enter payment methods on first renewal after cutover and plan for a 5-15% retention dip, communicated via email and in-checkout banner; (3) dual-run both platforms through the next billing cycle, letting existing subs renew on Shopify while new ones sign up on DashCommerce. If subscriptions are the majority of your revenue, the migration cost is high; evaluate carefully.
Does DashCommerce have a Shopify theme converter?
No. Shopify themes are Liquid templates tightly coupled to Shopify's runtime; DashCommerce runs in an Astro project with `.astro` components and typed props. There is no automated converter, and anyone selling one is probably selling something shallow. The storefront is a rebuild. `@dashcommerce/starter` gives you working cart, product pages, checkout, and account flows out of the box so you are restyling rather than building from zero — budget 2-4 weeks of frontend and design work. Treat the rebuild as a chance to drop theme cruft instead of porting it.
What happens to my Shopify Apps?
They do not come with you. Shopify Apps run on Shopify's platform, store state in their own backends, and connect via Shopify-specific OAuth. When you uninstall Shopify, the Apps stop receiving events from Shopify — but they keep their own data until you disconnect them from their vendor dashboard. Most apps have a non-Shopify API surface you can reconnect from DashCommerce: Klaviyo accepts Stripe and custom webhooks, Gorgias connects to email and support channels, ShipStation has a direct API, and so on. Expect a week of reconnection work for each major app. Apps that are Shopify-only (Shopify Inbox, Shopify Flow, any Shopify-exclusive integration) need replacements — see the app-replacement matrix below.
Will I lose SEO rankings?
Only if you skip the redirects. Google reconsolidates page authority across 301 redirects over weeks to months — a well-executed migration with clean 301s on every indexed URL loses a small amount of traffic for 2-4 weeks and recovers fully. A botched migration with 404s on ranking product pages can cost 20-40% of organic traffic permanently. The work that matters: export every indexed URL from Shopify (use Google Search Console's Pages report, plus Shopify's sitemap at `/sitemap.xml`), build a redirect map to the new DashCommerce URL structure, encode redirects at the edge, resubmit your sitemap, and monitor Coverage in Search Console weekly. Keep redirects in place for at least 12 months.
Can I run Shopify and DashCommerce in parallel?
Yes, and it is the recommended approach. Keep `example.com` pointed at Shopify while you build out `staging.example.com` or `new.example.com` on DashCommerce. This lets you migrate content, transform the catalog, and test the full purchase flow without a hard cutover. Run both live for 30 days post-cutover as a rollback insurance policy: if something critical breaks on DashCommerce, you can temporarily redirect back to the Shopify store while you fix it. The cost is paying for two sets of infrastructure for a few weeks, which is usually small compared to the cost of a botched cutover.
What about my point-of-sale (POS)?
DashCommerce has no POS story. No iPad app, no retail hardware integration, no inventory sync across physical locations, no offline mode. If POS is core to your business — brick-and-mortar stores, pop-ups, markets, in-person retail of any kind — this migration is not for you. Stay on Shopify, or on Square, or on another platform with a mature POS surface. DashCommerce is for online-only commerce. We are not going to build a POS, because building one well takes years and a dedicated team.
What about international tax (Shopify Tax)?
Shopify Tax is a Shopify-only service. When you migrate off, you replace it with one of: (a) Stripe Tax, which handles US sales tax, VAT/GST for most major jurisdictions, and registration management — this is the lowest-effort path and integrates cleanly with DashCommerce's Stripe-native checkout; (b) a dedicated tax service like TaxJar or Avalara, connected via webhook; (c) manual rate tables in DashCommerce, which is acceptable for simple single-jurisdiction stores but becomes untenable fast if you sell internationally. Most DashCommerce stores use Stripe Tax.
What about Shopify Flow automations?
Shopify Flow is Shopify-only. Flows you built (order tagging, inventory alerts, customer segmentation, fulfillment triggers) do not migrate. Rebuild them on a general-purpose automation tool — Make (formerly Integromat), n8n (self-hosted, open-source), or Zapier — connected to DashCommerce via Stripe webhooks, DashCommerce's own webhook surface, and your email provider's API. For more complex workflows, write them directly in your Astro project as API routes or cron triggers. The rebuild takes time but yields more transparent, testable automations than Flow's visual editor produced.
Is there a one-click Shopify to DashCommerce importer?
No. The two systems have different data models (Shopify's internal variant structure vs DashCommerce's typed Zod collections), different URL patterns, different payment architectures (Shopify Payments platform tokens vs your direct Stripe account), and different theme runtimes (Liquid vs Astro). A migration is a real project — budget 6-12 weeks for a mid-size store, longer if you have many apps or heavy subscription state. The tools DashCommerce ships (`dashcommerce-merge-seed`, the typed import schema, the EmDash seed mechanism) make the data transformation tractable, but there is no drop-in button. Anyone claiming one exists is selling something shallow.
Try it

Start the migration today.

Scaffold a DashCommerce project, test the checkout in Stripe sandbox, then cut over shopify when you're confident.

on npm · npm create @dashcommerce@latest