Which fits your store: Shopify Plus or Medusa
Shopify Plus fits teams that want hosting, checkout and apps managed for them, while Medusa fits teams that want code ownership and a headless build with their own engineers. The choice is less about features on a checklist and more about who will carry the operating work for the next several years. Shopify Plus is a fully hosted platform, and Shopify states 99.99% uptime on average on its Shopify Plus page. With Medusa, uptime, patching, scaling and checkout behavior become your responsibility, along with the storefront you build on top of it.
Four factors should drive the decision. First, engineering capacity: a Medusa build needs developers who can maintain Node.js and TypeScript services, the storefront, and integrations with your payment and fulfillment providers. Second, data residency: a self-hosted Medusa database on PostgreSQL can sit in the region and cloud account you choose, which matters if your regulator or contracts restrict where customer records live. Third, checkout customization: Medusa lets you change cart, order and pricing logic in code, but every change is also a change you test and release. Fourth, tolerance for running infrastructure: a self-hosted deployment is more than one application, and you should confirm you can operate all of it before committing.
The licensing question deserves an early answer. The Medusa core commerce framework is MIT licensed, so you can run and modify it without a license fee for that core. Enterprise Edition features based on role-based access control require a commercial agreement with MedusaJS, Inc., so if your staff permissions model depends on those roles, get that agreement scoped and priced before you design the admin workflow. Confirm the current terms directly with the vendor, since they can change.
Which platform fits which scenario
This table matches common buyer situations for Shopify Plus versus self-hosted Medusa with the platform that usually fits better and the reason. Read each row as a set of conditions, since your own catalog, team and compliance position decide the outcome. The main takeaway is that Medusa suits teams that can own a headless build, while Shopify Plus suits teams that want hosted operations and an app ecosystem.
| Scenario | Better fit | Why it depends on conditions |
|---|---|---|
| Renewal driven mainly by subscription and app fees | Medusa, if you can staff the build | Savings depend on replacing app fees with custom modules, hosting, and your own engineering time. Model these over several years before deciding. |
| Data residency requires hosting in a specific region or facility | Medusa | You choose where PostgreSQL, Redis and file storage run. Confirm that your payment and third-party providers also meet the residency rule. |
| In-house team already works in TypeScript and Node.js | Medusa | Modules, workflows and the storefront are written in the same language your engineers already use, which lowers the learning cost. |
| Business depends heavily on Shopify apps and Shopify Functions | Shopify Plus | Most apps and Functions have no direct equivalent in Medusa, so each one needs a module, workflow or integration rebuilt and tested. |
| B2B or marketplace build with custom pricing and approval logic | Medusa, with a scoped build | Medusa supports B2B stores and marketplaces through its modules, but the rules you need must be designed, built and verified by your team or a partner. |
| No in-house developers and no plan to hire | Shopify Plus | Medusa needs a storefront, server and worker deployments, upgrades and patching. Without developers, the ongoing work falls to a partner or stays unowned. |
| Need a 24/7 hosted platform with vendor-managed uptime | Shopify Plus | Shopify states 99.99% uptime on average on its Plus page. A self-hosted Medusa stack uptime depends on your infrastructure and operating model. |
| Headless storefront with custom checkout experience planned | Medusa, if the storefront budget is approved | You build and host the storefront yourself, so design, performance and checkout integration become your responsibility from the start. |
How checkout and apps differ when you move to Medusa
On Shopify Plus, checkout and most of the app store run as a managed service, so the platform owns the checkout pages, payment gateway connections, tax calculation hooks and much of the fulfillment plumbing. Medusa does not ship that layer as a finished product. Its commerce logic is split into modules for carts, orders, product catalogs, pricing and inventory, and the checkout flow is assembled from those modules and workflows by your team or an implementation partner. Payment provider, tax and fulfillment integrations become your responsibility to select, configure, test and maintain. Confirm with each provider whether an official Medusa integration exists or whether a custom module is required, and check the current payment and tax provider documentation before you commit to a design.
Shopify Functions and the logic inside installed apps have to be rebuilt, not exported. Discount rules, shipping rate logic, B2B price lists and custom validation need a clear home in Medusa, either as a module that owns its own data or as a workflow that coordinates steps across modules. Start with an inventory of every app and every Function your store depends on, then mark each item as one of three things: available as a maintained integration, replaceable with standard Medusa configuration, or custom code you must own. Ask whether the business needs that logic at all. Where an app store listing already covers the need, the rebuild cost is rarely justified. Where the business needs rules that no app can express, such as contract-specific pricing or a custom fulfillment routing decision, the move to Medusa is worth the effort, and that custom code becomes a long-term maintenance line item.
What the storefront build involves
Medusa is a commerce backend with no storefront included, so the frontend is a separate build you own from the first day. The cards below cover the decisions and checks that shape that work, from design and hosting to performance, testing and the release cycle that follows launch. Confirm your frontend approach before you estimate effort, because it drives most of the work.
Storefront you build or adapt
Medusa does not ship a storefront or theme. You either build a headless frontend from scratch or adapt a starter that consumes the Medusa Store API. Decide which pages, checkout steps, account areas and merchandising features you need on day one, and which can follow. Your Shopify Plus theme logic, Liquid templates and section settings do not transfer, so every template is rebuilt against Medusa's data model. Confirm the frontend approach with your team before estimating effort.
Theme and design work
Shopify Plus merchants often rely on a purchased theme and its settings screens for layout changes. In a headless build, design tokens, components and page layouts are code you own, and marketing teams lose the visual editor unless you add a content layer. Ask who will change banners, landing pages and product templates after launch, and whether that person needs a no-code editor or a developer request queue.
Frontend hosting and deployment
A headless storefront runs separately from the Medusa API, admin and worker instances. Choose where the frontend is hosted, how preview environments are created for content and design review, and how the storefront reaches the Medusa server without exposing admin routes. Your hosting bill, CDN configuration and certificate management are added to the backend infrastructure costs, so include them in any multi-year estimate.
Performance and caching
Shopify Plus serves storefront pages through its hosted infrastructure, which Shopify describes at 99.99% uptime on average. Your headless frontend must reach comparable page speed through a CDN, image optimization, server-side rendering or static generation choices, and caching of product and pricing responses. Load-test the storefront with realistic catalog sizes and promotional traffic spikes before launch, since you carry that capacity planning yourself.
Accessibility and testing
Every checkout, product and account template becomes your responsibility to test for accessibility, browser compatibility and payment flows. Shopify themes come with a baseline that you may not have in a custom build. Plan end-to-end tests for cart, checkout, discounts, tax and failed payment paths, and an accessibility review against the standards your customers or regulators expect. Ask your agency or internal team how they will automate these checks in the release pipeline.
Ongoing frontend releases
After launch, the storefront needs its own dependency updates, framework upgrades, security patches and feature releases, separate from Medusa server upgrades. Agree on a release cadence, a staging environment that mirrors production data shapes, and a rollback plan for each deploy. Ask who owns on-call response for storefront errors, since a broken checkout is usually a frontend problem even when the cause sits in the backend.
Where your data lives and who runs the platform
With Shopify Plus, merchant and customer data sits in Shopify's hosted environment, and you choose neither the cloud provider nor the physical region for the platform itself. With self-hosted Medusa, you select the cloud account, region or data center, and you decide where the PostgreSQL database, Redis instances and S3 file storage live. That choice matters most when a data residency rule applies to customer records, payment-related data or order history.
- Shopify Plus: Data is held in Shopify's infrastructure, so ask Shopify for its current data processing terms and hosting locations before you sign.
- Self-hosted Medusa: Residency follows your deployment, which means you control every region that stores orders, customers and files.
- Backups and replicas: Copies made for disaster recovery can sit in other regions, so list them in your data map.
- Third-party services: Email, payment gateways, search and analytics you connect hold their own copies of data under their terms.
- Support access: Confirm where any vendor or partner staff can view production data.
Check that your data map lists every location, including backups, logs and staging copies, before you choose a model.
Shopify states 99.99% uptime on average for Shopify Plus, according to the Shopify Plus page. That figure is a vendor statement about the hosted service, and it does not replace your own contractual terms. A self-hosted Medusa deployment has no vendor uptime commitment behind it. Your team, or the partner you hire, becomes responsible for availability of the API and admin server, the background worker, the database, the cache and the storage layer.
- Shopify Plus: The platform, hosting and scaling for storefront and checkout are run by Shopify under its service terms.
- Self-hosted Medusa: You operate two Medusa instances (server mode and worker mode), plus PostgreSQL and Redis, so failure of any one component can stop orders.
- Monitoring and paging: You need health checks through the
/healthendpoint, alerting and an on-call rota. - Capacity planning: Traffic peaks, such as sales events, require load testing and scaling plans you own.
- Incident process: Define recovery targets and runbooks in writing rather than assuming a vendor will handle them.
Ask any implementation partner for a written availability design and the staffing model behind it before comparing uptime figures across the two options.
Shopify runs backup and restore for the hosted platform, and your own exports are a separate safeguard. With self-hosted Medusa, backups are your responsibility end to end. The PostgreSQL database holds carts, orders and customers, and the S3 bucket holds product files. Each needs its own backup schedule, retention rule and restore test.
- Shopify exports: Product CSVs omit images, and customer exports are capped at 15 MB according to the Shopify Help Center, so exports alone are not a complete backup.
- Database backups: Schedule point-in-time or regular snapshots of PostgreSQL and test restores into a separate environment.
- File storage: Enable versioning or replication for the S3 bucket so product images and documents can be recovered.
- Redis data: Decide which cache and queue data must survive a restart and which can be rebuilt.
- Restore drills: Record how long a restore takes and who performs it, then repeat the drill after each major change.
Ask Shopify which backup and restore guarantees apply to your plan, and ask your team or partner for a tested restore procedure with named owners.
On Shopify Plus, staff accounts, roles and store permissions are managed inside the Shopify admin. On self-hosted Medusa, you manage the admin user model, the secrets that sign sessions and tokens, and the access paths to the database and cloud account. Medusa's role-based access control features in its Enterprise Edition require a commercial agreement with MedusaJS, Inc., according to the Medusa repository, so confirm whether that agreement is in your plan before you design staff roles.
- Admin roles: Shopify Plus includes staff permissions in the admin, while Medusa role controls depend on which edition and features you license.
- Secrets: A self-hosted Medusa server and worker each need
COOKIE_SECRETandJWT_SECRETvalues, which must be generated, stored and rotated under your key management policy. - Database access: Restrict PostgreSQL and Redis to the application network, and use separate credentials for each instance.
- Cloud access: Control who can deploy, read secrets and change infrastructure through your cloud IAM and change approval process.
- Audit logs: Confirm that admin actions, deployments and configuration changes are logged and kept for the period your policies require.
Before go-live, document each role, each secret owner and each administrative path, and confirm the Medusa edition covers the access model you need.
Compliance evidence is the set of records that shows how controls operate. Shopify Plus provides its own vendor documentation about its service, while a self-hosted Medusa deployment creates evidence in your environment that you must collect, retain and show to auditors. DeployOpen prepares systems, controls and evidence for compliance assessments, but it does not issue audit reports, attestations or certifications. Independent auditors and certification bodies do that work.
- Vendor documentation: Request Shopify's current security and compliance documentation for the plan you buy, and check which reports it covers.
- Your evidence: For Medusa, collect configuration baselines, deployment records, access reviews, backup test results and patch logs.
- Scope: Self-hosting places the hosting environment, database and any card-related components inside your assessment boundary, so confirm the scope with your assessor.
- Change records: Keep migration plans, sign-off records and test results for the cutover.
- Assessor engagement: Agree with your auditor early which evidence they expect and in what format.
Ask your assessor which controls and reports they will accept from each platform before you decide who owns the evidence.
What you pay for each option over several years
Shopify Plus bundles hosting, platform fees and most operations into a subscription, while a self-hosted Medusa build moves those costs onto your own infrastructure and team. The cards below separate one-time build work from recurring running costs, so you can ask each vendor and partner for the same line items.
Shopify Plus subscription and app fees
On the hosted side, the platform subscription is the recurring base, and installed apps add their own monthly or usage charges that often grow as catalog, traffic and feature needs grow. Ask for your current plan, every installed app with its billing model, and any usage tiers tied to order volume or API calls. Check which apps have no equivalent in Medusa, since those become custom modules on the other side.
Payment and transaction fees
Payment processing charges apply to every order on either side, and the rates depend on your gateway contract, card mix and region, not only on the platform. On Shopify Plus, check whether third-party gateway usage carries an additional platform fee. On Medusa, the payment provider is a module you integrate and contract for directly. Request effective rates for your top markets from each provider in writing.
Hosting, database, cache and storage
Self-hosted Medusa recurs for the API and admin server, the worker instance, PostgreSQL, Redis and S3-compatible file storage, plus the storefront host and CDN. Costs rise with traffic peaks, image volume and the number of environments you keep, such as staging. Ask any hosting partner for a line-item estimate per environment, the scaling assumptions behind it, and who pays for backups and restore testing.
Build, migration and storefront engineering
Most of the Medusa cost is one-time: importing products, customers and orders, rebuilding Shopify Functions and apps as modules and workflows, and building the headless storefront. Effort depends on catalog size, custom checkout logic and how many apps need replacing. Fixed-scope work is agreed in writing before it starts, so ask for deliverables, acceptance criteria and a change process that covers scope that moves.
Security patching, monitoring and support
On Medusa, you carry the recurring duties Shopify runs for you: applying Node.js, dependency and framework updates, reviewing migrations, watching uptime and handling incidents. Budget for an on-call rota or a support retainer, and confirm who responds to a failed predeploy migration at 2 a.m. Retainers for upgrades, continuous testing and monitoring are available from DeployOpen, and the scope and response expectations should be written into the agreement.
Medusa licensing and quote requests
The Medusa core is MIT licensed, but role-based access control features in the Enterprise Edition need a commercial agreement with MedusaJS, Inc. If your team needs those permissions, request the license terms and price from the vendor before you commit to a design. Ask every bidder for a quote that lists one-time and recurring items separately, the drivers for each, assumptions about traffic and catalog size, and what is excluded.
How a move from Shopify Plus to Medusa runs
The sequence moves your catalog, customers and orders out of a hosted Shopify Plus store and into a self-hosted Medusa stack, with the storefront and checkout rebuilt and tested before the original store is switched off.
Audit apps, Shopify Functions and customizations
Your team and your implementation partner list every installed Shopify app, each Shopify Function, theme customization, checkout extension and scheduled automation. For each item you record what it does, whether it is still used, and what Medusa component should replace it, such as a module, a workflow, a subscriber or a third-party service. The output is a written replacement inventory that the business signs off on before any data moves. Ask the partner to confirm which items need custom code and which are covered by existing Medusa modules.
Export products, customers and orders
Export products as CSV from the Shopify admin. Shopify's export does not include product images, so the original store stays live until the images have been imported into the new system from their public URLs. Export customers as CSV, noting the 15 MB file limit, and split the file if needed. Export orders and note that full order history and metafields may require the Admin API rather than the standard CSV. The check for this step is a set of files with row counts reconciled against the admin, plus a list of gaps that need API extraction.
Map data to Medusa modules
Map Shopify products, variants, prices, inventory locations, customer records and order fields to Medusa's product catalog, pricing, inventory, customer and order modules. Decide how metafields and custom attributes become Medusa data model extensions, and how Shopify markets, currencies and tax settings translate into regions and tax configuration. Document each mapping in a shared sheet. The output is an approved field map and a list of data that will be transformed, not copied, so the team knows what to test.
Provision PostgreSQL, Redis, S3 and two Medusa instances
Your infrastructure team provisions PostgreSQL for the database, Redis for caching, the event bus, the workflow engine and locking, and S3-compatible storage for files, all inside your own cloud account or data center. Two Medusa instances are deployed: one in server mode for the API and admin dashboard, and one in worker mode for background tasks. Each instance receives database credentials, COOKIE_SECRET and JWT_SECRET values from your secret store. Database migrations run through the predeploy script before startup. The check is a successful /health response from both instances.
Import data and rebuild the storefront
Load products and images, customers and historical orders into the Medusa environment using the field map, then import images from the public URLs recorded in the Shopify export. Build the storefront against the Medusa Store API, covering product pages, cart, checkout, payment provider integration, and customer account pages. Rebuild the checkout logic that Shopify Functions and apps handled before. The output is a staging storefront that completes test orders end to end with imported catalog data.
Set redirects and test
Build a redirect map from every indexed Shopify product, collection and page URL to its new Medusa storefront URL, and load it into the new site before launch. Test catalog accuracy, pricing by region, tax, inventory, order emails, refunds, customer login, password resets, and the back-office workflows your staff use. Run load and failure tests on the server and worker instances. The check is a signed test log with every failed case either fixed or accepted in writing by the business owner.
Cut over and keep the original store live until verified
Freeze catalog changes on Shopify, run a final delta export of products, customers and orders, import the delta, and point DNS to the Medusa storefront. Keep the Shopify store available for a verification window agreed in advance, so orders and customer questions can be checked against both systems. Confirm backups, monitoring and on-call ownership before the switch. Cutover is complete when orders are flowing through Medusa, the redirect map resolves, and the team has documented who runs patching, backups and upgrades from that point.
Questions buyers ask before choosing Medusa over Shopify Plus
What does it cost to run Medusa compared with Shopify Plus?
Medusa's software is free under the MIT license for the core framework, but running it is not free. Shopify Plus bundles hosting, checkout and platform upkeep into a subscription, plus app and payment fees. A self-hosted Medusa setup moves those costs to you: cloud infrastructure for the API and admin server, a separate worker instance, PostgreSQL, Redis and S3 file storage, plus a storefront you build and host. Recurring costs include infrastructure, patching, monitoring and developer time. One-time costs include the build, migration and integrations. Ask any partner for a written quote that separates build, hosting, support and retainer work, and compare it with your current Shopify invoices over the same period.
How long does a Shopify Plus to Medusa migration take, and what drives it?
The duration depends on the number of apps you replace, the complexity of your Shopify Functions and checkout logic, catalog size, and how much custom storefront work you need. Simple catalogs with few integrations move faster than stores with B2B pricing, subscriptions, or many third-party systems. No researched timeline applies to every store, so treat any number as a planning assumption until it is written into a scope. Ask for a phased plan covering data mapping, module design, storefront build, payment and tax testing, cutover and a period where the old store stays live.
What does our team need to contribute to a Medusa build?
Expect to supply product owners who can decide catalog rules, pricing, tax and fulfillment logic, plus engineers who know Node.js, TypeScript and PostgreSQL. You will also need someone who owns cloud accounts, DNS, secrets and deployment pipelines. Medusa separates the API and admin server from a worker instance, so operations staff must understand both. Storefront work requires frontend developers because Shopify themes do not carry over. Put these responsibilities in the written scope so that each side knows who signs off on each deliverable.
Can our engineers run a Medusa migration without a partner?
Some in-house teams can, especially if they already run Node.js services and PostgreSQL in production. The harder parts are rebuilding Shopify app behavior as Medusa modules and workflows, rewriting checkout and payment integrations, and setting up the production stack correctly. Medusa's deployment documentation lists the required components: a PostgreSQL database, a Redis database, and two Medusa instances, one in server mode and one in worker mode. Each needs database credentials plus COOKIE_SECRET and JWT_SECRET values, and deployments are checked through the /health endpoint. Assess your team against that list honestly before deciding. DeployOpen plans, implements, integrates, hardens and documents self-hosted platforms in your own infrastructure under a fixed scope agreed in writing, and can also support you on a retainer basis.
Does Medusa support B2B stores and multiple markets?
Medusa's documentation and repository describe modules for carts, orders, product catalogs, pricing and inventory, and state that the platform supports B2B stores, marketplaces and point of sale. Multi-market selling depends on how you model regions, currencies, tax, pricing and fulfillment in those modules, and on your storefront. Confirm each requirement with the Medusa version you plan to use, including company accounts, negotiated pricing, approval workflows and market-specific domains. Shopify Plus customers often rely on Shopify Markets and B2B features, so list those features and check each one against a working prototype before committing.
What does the MIT core license allow, and what needs a Medusa agreement?
The Medusa core commerce framework is MIT licensed, which permits you to use, modify and deploy it in your own infrastructure without paying a license fee for that code. Enterprise Edition features based on role-based access control require a commercial agreement with MedusaJS, Inc. If your team needs granular staff permissions, confirm early whether those features are part of the agreement you would need. Also verify the license terms of every module, plugin and storefront library you add, since they may differ from the core. Have your legal team review the current license files in the repository before you commit.
How does moving to Medusa change checkout and PCI scope?
With Shopify Plus, much of checkout and the card data environment is hosted by Shopify. With self-hosted Medusa, your team takes on more of that responsibility, including the storefront, the server that handles payment flows, and the network around it. The exact PCI DSS scope depends on how you integrate your payment provider, for example whether card data ever touches your servers or whether it stays inside the provider's hosted fields. Ask your payment provider and your assessor to confirm the integration pattern before design begins. DeployOpen prepares systems, controls and evidence for compliance assessments, but it does not issue audit reports, attestations or certifications; independent auditors and certification bodies do that work.
When a self-hosted Medusa build is worth the effort
Choose Medusa over staying on Shopify Plus when the store needs logic that a hosted platform cannot express without workarounds. Typical cases are custom checkout steps, pricing rules tied to customer contracts, or B2B approval flows that the Medusa modules for carts, orders, pricing and inventory can be extended to handle. A second case is data residency: if your rules require customer and order records to stay in a specific region or on your own servers, a self-hosted Medusa deployment on PostgreSQL gives you that control, though you must confirm with your legal and security teams which data categories need it. A third case is a team that already ships production TypeScript and Node.js services, because the framework, its modules and its workflows will be maintained as code your engineers own.
Medusa is also the stronger choice when you want to stop paying recurring platform fees over a long horizon. The core framework is MIT licensed, but Enterprise Edition features based on role-based access control need a commercial agreement with MedusaJS, Inc., so ask for that price in writing before you assume the total is free. Budget for the costs that replace the subscription: hosting, a managed or self-run PostgreSQL and Redis, two Medusa instances (server and worker), S3 storage, and the storefront you must build. Those costs recur and grow with traffic, and they need an owner.
Stay on Shopify Plus if your differentiation lives in merchandising, checkout conversion and a broad app ecosystem that your team does not want to rebuild. Hosted infrastructure with a stated 99.99% average uptime, as described on the Shopify Plus page, removes a set of operational duties you would otherwise carry. If your engineering capacity is thin, a headless build will move effort from configuration to code and create work that must be maintained after launch. Run a short proof of concept on your three most unusual business rules before deciding: if they map to Shopify Functions or an existing app, the case for Medusa weakens.
How DeployOpen helps you evaluate, implement or migrate
DeployOpen plans, implements, hardens and supports self-hosted open-source platforms inside your own cloud accounts, data centers or air-gapped networks. For Shopify Plus against Medusa, we start with a written scope that separates what Medusa replaces from what you must rebuild, then deliver the work in stages you can review.
How we scope
- Inventory your Shopify apps, Functions, themes and checkout customizations, and mark which ones map to Medusa modules or custom code.
- Agree in writing which data moves, including product CSVs, customer exports and any Admin API pulls for metafields and order history.
- Define the storefront, payment and PCI responsibilities that move to your team, so the scope names who owns each one.
- Engagements are fixed-scope, with deliverables and timelines agreed before work starts. Ask for the written scope before comparing quotes.
How we build
- Deploy Medusa in your infrastructure with PostgreSQL, Redis and S3, and separate server and worker instances as the deployment docs describe.
- Build the data import path for products, images, customers and orders, and test it against a copy of your live catalog.
- Rebuild checkout logic and promotions as Medusa modules and workflows, and test them with your payment providers before cutover.
- Run security testing on the storefront, APIs and admin access before any production traffic reaches the new platform.
How we hand over
- Document the deployment, environment variables, secret rotation, migration steps and rollback plan in a form your engineers can run.
- Provide runbooks for the predeploy migration step, health checks and background job monitoring so your team can operate the stack.
- Prepare the compliance evidence and control records your assessors will ask for, while noting that independent auditors issue any attestation.
- Walk your engineering and operations staff through the system, and confirm ownership of each component before the engagement closes.
How we support
- Ongoing support, upgrades and continuous testing are available as retainers, covering Medusa version upgrades and security patches.
- Back up the database, object storage and configuration, and test restores on a schedule agreed in the written scope.
- Retest the storefront and APIs after changes, including when you add a new market, channel or payment method.
- Confirm with us during scoping which Enterprise Edition features you need, since role-based access control requires a MedusaJS agreement.

