Migrating away from Shopify to a custom store you own

I build custom shops on Solidus, so I will be fair about Shopify: it is the best hosted platform in the world, and for a new or conventional shop it is usually the right call. This article is for the shop that has outgrown it, where the transaction fee on its own payment provider, a checkout it cannot change below Plus, and a drawer full of paid apps have become the thing holding it back. I work from Shopify's own documentation, checked in November 2026: what it exports cleanly, what it keeps, how the CSV and the Admin API behave, and the Shopify specific traps around checkout, payments and subscriptions. Then I set out the honest shape of a move onto a custom store you own, with the hard parts, saved cards and subscriptions, flagged first.

Shopify is a very good product, and most shops should stay on it

I build custom shops on Solidus, so you know where I stand before I say a word about Shopify. That is exactly why I want to be fair about it. Shopify is the best hosted shop platform in the world at what it does. The admin is a pleasure to use, hosting and platform security are handled for you, Shopify Payments works in the United Kingdom, Ireland, Germany, Austria and more,1 and a founder can be taking real orders by the weekend. If you are launching, if your catalogue and checkout are conventional, or if the shop is one sales channel rather than the whole business, Shopify is very often the right answer, and this article is not for you.

It is for the shop that has outgrown it. You know the signs. The app bill has crept past the plan fee. The transaction fee on your own payment provider is now a real number every month. A change to the checkout that should take an afternoon is quoted as a platform upgrade. You have a trade side, or a subscription, or a configurator, and each one fits Shopify the way a size ten foot fits a size nine shoe. This is the honest, specific guide to leaving Shopify for a shop you own, written from Shopify's own documentation, checked in November 2026.

The deep question of how each kind of data moves lives in a set of companion articles, and I link them as I go rather than repeat them. Start with the one that frames the whole move, what moves and what does not. This one stays on Shopify specifically: how its export and its API actually behave, what it hands over cleanly, what it keeps, and the shape of an honest move onto a custom store.

What you take with you, and what stays behind

Shopify lets you export your content and your data. Products, customers and orders all come out as CSV files, and that is genuinely to Shopify's credit, because not every platform is so willing. What does not come with you is everything Shopify built around that data.

The theme is written in Liquid, Shopify's own templating language, and it does not run anywhere else, so the storefront is rebuilt rather than moved. The apps stay behind, and with them whatever logic and data each one held. The checkout is Shopify's, not yours, on every plan below Plus. And Shopify Payments, the thing that makes going live so easy, is a Shopify product that exists only on Shopify, so leaving means standing up your own payment arrangement somewhere else. None of this is a scandal. It is simply what renting means, and the job of a good migration is to price it in rather than discover it on the day.

The exports, and where the CSV stops

The CSV exports are the easy part, with two gaps worth knowing before you plan around them.

The first gap is passwords. Shopify states plainly that you cannot migrate customer passwords from another online store using a CSV, because passwords are encrypted and never leave in readable form.2 This is true of every serious platform and it is not a flaw. It does mean your customers will set a new password, or sign in with a one time code, on their first visit to the new shop, and that this has to be handled as a planned, friendly moment rather than a surprise. How to run that well, and how addresses and accounts carry across, is the subject of migrating customer accounts and addresses.

The second gap is in the product CSV. Product metafields, the custom fields many shops lean on for specifications, care instructions or anything the standard fields do not cover, are supported in the product CSV.3 Variant metafields are not: Shopify says variant metafields are not supported for product CSV import and export, and you edit them through the variant bulk editor instead.3 If your shop keeps important data on variants rather than products, a plain CSV export quietly leaves it behind, and you need the API to get it out. The deeper mapping of a catalogue, with its options, variants and images, is in migrating products and catalogue data.

The Admin API, and the leaky bucket

For anything the CSV cannot carry, and for a clean, repeatable migration, you use the Admin API. Shopify's current API is GraphQL, and its REST Admin API is the legacy one. Two things about the GraphQL API shape every migration script.

The first is pagination. The API hands back large collections in pages joined by cursors, so pulling a catalogue of thousands of products, or years of orders, is a loop that follows the cursor to the end rather than a single download. That is ordinary work, but it is work.

The second is the rate limit, and it is the detail people underestimate. The GraphQL Admin API uses a leaky bucket: every query has a calculated cost in points, your store has a bucket that refills at a fixed number of points per second, and when the bucket is empty the next query is throttled.4 The refill rate depends on your plan: 100 points a second on standard plans, 200 on Advanced, 1000 on Plus and 2000 on the enterprise tier.4 A single query may not cost more than 1,000 points whatever your plan, a connection costs more the more records you ask for at once, a mutation costs 10, and an input array is capped at 250 items.4 For moving a large shop, the right tool is the bulk operation, which runs a big query in the background and writes the result to a file without the per query rate limits.4 None of this is a wall. It is a speed limit, and a migration that respects it from the first line runs smoothly, while one that does not spends its afternoon being throttled.

The honest summary of the export reality is this: Shopify gives you your data, the CSV covers the common cases, and the API covers the rest as long as you plan for pagination and the bucket. That is a decent position to leave from. The harder parts are not the data you can read. They are the things Shopify holds on your behalf.

The checkout and Shopify Payments, which is the real reason to leave

Here is the economics that turns a growing Shopify shop into a migration enquiry.

If you process payments through any provider other than Shopify Payments, Shopify charges a third party transaction fee on every order: 2% on Basic, 1% on Grow, 0.6% on Advanced and 0.2% on Plus.5 That is on top of whatever your actual payment provider charges you per transaction. The fee is Shopify's way of pricing the freedom to choose your own gateway, and it scales with success. On a shop turning over two million pounds a year through an external gateway on Advanced, the 0.6% fee alone is twelve thousand pounds a year, every year, for the privilege of using the payment provider you negotiated. Move to Shopify Payments and the fee goes away, but then your payments are tied to the platform you are trying to leave, and the card rate is Shopify's: for reference, Shopify Payments is 1.5% plus 25p per online United Kingdom card payment on Advanced.5 Either way the platform takes its cut of the decision.

The checkout itself is the other half of the lock in. On every plan below Plus, apps cannot customise the information, shipping and payment steps of the checkout; those steps are reserved for Shopify Plus, and below Plus an app can only extend the thank you and order status pages.6 The old escape hatch, a customised checkout.liquid, is gone: it is no longer supported for the information, shipping and payment steps, and it was switched off for the thank you and order status pages on 28 August 2025.7 So a custom field at the payment step, an extra step to pick a delivery slot, a different flow for trade customers who order on account, all of it sits behind Plus, and Plus starts at 1,800 pounds a month.5 For many shops that single line, the checkout you cannot change, is the real reason the migration email gets written. I put numbers on the whole picture in the five year total cost of ownership, and the comparison across platforms is in Solidus versus Shopify, Shopware, Magento and WooCommerce.

Every app is a dependency, and a processor

A real Shopify shop at scale runs a string of apps: reviews, bundles, a subscription tool, back in stock alerts, a returns portal, search and filters that cope with a large catalogue, consent, invoices your accountant will accept, translations. Each is a monthly fee, which owners notice. Each is also another company holding a slice of your customer data and a slice of your shop's logic, which owners notice only when they try to leave. When an app goes, so does the data it kept, unless you exported it first, and so does the feature it provided, which now has to be rebuilt. Every such app is also a separate data processor you are responsible for under data protection law, a point I cover in who actually owns your business data. Twenty apps are twenty dependencies and twenty processors. A shop you own with one payment provider and one email provider has two.

Subscriptions and saved cards, which you confirm before you commit to anything

This is the hardest part of leaving Shopify, and the part to settle first, because the answer can change whether the move is worth doing at all.

Subscriptions on Shopify run through a subscription app, either Shopify's own free Shopify Subscriptions app or a third party one from the App Store, layered on top of the platform's payment method vaulting.8 The recurring charges depend on a payment gateway that supports subscriptions, and the vaulted payment method that lets you charge a customer next month sits with that gateway, not in a field you can export. Shopify is explicit that subscriptions in its point of sale require Shopify Payments, and that a point of sale store without Shopify Payments cannot sell subscriptions at all.9 If your subscriptions run on Shopify Payments, the stored payment credentials live inside Shopify's payments stack, and there is no tidy export of them to carry to a new home. The deep mechanics of why saved cards and recurring mandates are so sticky, and what your options really are, are in migrating payment tokens and saved cards and migrating subscriptions and recurring payments. Before any of that, read the hidden dangers of switching payment gateways, because this is where a careless migration breaks.

The one happy case is worth stating, because it changes the plan. If your shop already takes payment through its own Stripe account rather than through Shopify Payments, the new shop can connect to that same Stripe account, and the saved cards and the recurring schedules stay exactly where they are. So the very first question of a Shopify migration is not about products or themes. It is: whose payment stack are the saved cards in, and can the new shop reach it? Answer that before you promise anyone a date.

The URL structure, and the redirect map that protects your rankings

Shopify gives everything a URL in its own shape: products sit under /products/, collections under /collections/, and those paths have carried your search rankings and your inbound links for years. When the shop moves, every one of those URLs changes unless you plan otherwise, and a URL that returns a 404 after cutover is a page that has lost its rankings.

The deliverable that prevents this is a redirect map: a spreadsheet with every old URL that earned a visit or a link in the last year, the new URL it should point to, and a permanent redirect joining them. Google's own guidance for a move with URL changes is to map every old address to its new one, use permanent server side redirects, point each one straight at its final destination, and keep the redirects in place for as long as possible, at least a year.10 On the shops I build, these redirects live in a database table with an admin screen, so your own staff can add one when they spot a stray in Search Console, and so they survive every future deploy. The SEO and redirect detail sits alongside the catalogue in migrating products and catalogue data.

What moves, what moves partly, and what is locked

What you are movingHow it moves off ShopifyWhere the detail lives
Products, variants, prices, images, collectionsCSV for products, the Admin API for variant metafields the CSV omitsProducts and catalogue
Customers and addressesCSV, but never passwords, so a planned reset or one time codeCustomer accounts
Order and purchase historyCSV or the API, as read only records to look upOrder history
Analytics for forecastingExported before you lose access, because the old admin goesAnalytics and historical data
Saved cards and subscriptionsOnly with the gateway's cooperation, or kept in place on your own Stripe accountPayment tokens, subscriptions
Theme, apps, checkout, Shopify PaymentsThey do not move, they are rebuilt or replacedThis article

The pattern is clear. Your content and records come out. The experience Shopify wrapped around them does not, and the sticky part is always payments. A move plan that does not have a column for each of those rows is not a plan yet.

The honest shape of a move onto a custom store

With all that on the table, the move itself is methodical rather than dramatic, and it follows the companion articles above step by step.

I build the new shop on Solidus, an open source ecommerce framework on Ruby on Rails under a permissive licence, which means no licence fee, no revenue share, no plan tier that unlocks your own checkout, and a shop that runs on servers you control.11 The client owns the result, and the bespoke code becomes yours once it is paid for. The build takes the four exports above and maps each into the new shop, rebuilds the storefront and the integrations that used to be apps, and finally gives you the checkout you could never change on Shopify.

Then comes the overlap, which is where migrations are won or lost. For the last few weeks both shops exist. The old Shopify shop stays live and keeps taking orders, while the new shop is complete on a staging address and is tested with real products and test payments. During those weeks the catalogue is frozen, so the two do not drift apart. On a quiet weekday morning in your calmest month, a final import brings across everything that changed since the last one, the domain points at the new shop, you place and refund a real order for each payment method, you check the top URLs from the redirect map, and you send the friendly service message to account holders. The old Shopify shop stays untouched for thirty days as your way back, and only then do you cancel the plan, after one last export. Two things must be confirmed before you commit to any of this: the saved cards and subscriptions question above, and a named person on your side who understands the data.

A worked example, with the hard part first

Consider an invented business, Pennine Larder (penninelarder.example), a Manchester shop selling preserves, cookware and gift hampers. It turns over 2.1 million pounds a year online, has about 2,500 products with variants, and two things it cannot do on Shopify. Its trade customers, farm shops and delis, want to order on account with their own price list, which needs a checkout step Shopify reserves for Plus. And it runs a monthly hamper subscription through a subscription app on Shopify Payments, paying the 0.6% third party fee on the card payments it routes through its own acquirer, about thirteen thousand pounds last year.

The first thing I would settle, before quoting a day, is the subscription. Those monthly hampers are the business's best revenue, and the saved cards behind them sit inside Shopify Payments. So the honest first step is a plain question to Shopify support, in writing, about what can be done with the stored payment methods, and a parallel plan in case the answer is nothing: moving the subscription customers onto a new payment schedule with a clear, early, well written message asking them to confirm their card once. If that cannot be made to work cleanly, I would say so, and the move might wait. The checkout freedom and the fee saving are real, but they do not outweigh breaking a working subscription book.

Everything else is the ordinary, careful work the companion articles describe. The 2,500 products come out by CSV, with the variant metafields pulled through the Admin API because the CSV leaves them behind. Customers come across with their addresses and order history, and set a password on their first visit to the new shop. Three years of orders arrive as read only history, with the full archive kept for the accountant. The trade price list, which was impossible below Plus, becomes an ordinary feature of the Solidus build, written with tests. Around 3,000 old URLs are mapped to permanent redirects and checked by hand. After cutover, Pennine Larder pays no platform percentage on its own payments, owns its checkout, and its hosting bill is smaller than one of its old app subscriptions. Year one costs more than a Shopify theme. From year two it costs much less, and it can finally do the things it was quoted a platform upgrade for.

When to stay, and when to call me

Stay on Shopify if you are early, if your catalogue and checkout are conventional, or if the shop is a channel rather than the business. Stay if the only complaint is the bill and the bill is bearable, because a migration carries real risk and is not worth running for a grievance. And never move in the months before your peak season.

Leave when the checkout you cannot change, the fee on your own payments, or the app sprawl have become the thing holding the business back, and you would rather spend that money on a shop you own than on rent you cannot alter. The honest comparison, because platforms are not the only hosted option, is that another route off Shopify is a different hosted or self hosted platform such as WooCommerce, and part of my job in a workshop is to tell you when one of those fits you better than a custom build.

If you are weighing it up, bring your numbers to a free workshop, and the first two weeks of work are on me. We go through your plan, your app list and your payment setup together, and I will tell you honestly whether a custom store pays off for you. Sometimes the answer is to stay on Shopify, and I will say so.

Footnotes

  1. Shopify Help Center, Shopify Payments supported countries, accessed 14 November 2026, https://help.shopify.com/en/manual/payments/shopify-payments/supported-countries ↩

  2. Shopify Help Center, Importing and exporting customers, statement that customer passwords cannot be migrated using a CSV, accessed 14 November 2026, https://help.shopify.com/en/manual/customers/import-export-customers ↩

  3. Shopify Help Center, Using CSV files to import and export products, product metafields supported and variant metafields not supported for product CSV import and export, accessed 14 November 2026, https://help.shopify.com/en/manual/products/import-export/using-csv ↩ ↩2

  4. Shopify developer documentation, GraphQL Admin API rate limits: leaky bucket, points per second by plan (Standard 100, Advanced 200, Plus 1000, enterprise 2000), the 1,000 point cap on a single query, connection and mutation costs, the 250 item input cap and bulk operations, accessed 14 November 2026, https://shopify.dev/docs/apps/build/apis/graphql-admin/rate-limits ↩ ↩2 ↩3 ↩4

  5. Shopify, Pricing (United Kingdom): plan prices billed monthly and yearly, third party transaction fees per plan (2% Basic, 1% Grow, 0.6% Advanced, 0.2% Plus), Shopify Payments online card rates, and the Plus starting price of 1,800 pounds a month, accessed 14 November 2026, https://www.shopify.com/uk/pricing ↩ ↩2 ↩3

  6. Shopify Help Center, Checkout extensibility, availability of the information, shipping and payment customisations by plan (Shopify Plus only), accessed 14 November 2026, https://help.shopify.com/en/manual/checkout-settings/checkout-extensibility ↩

  7. Shopify developer documentation, checkout.liquid, unsupported for the information, shipping and payment steps, and sunset of checkout.liquid for the thank you and order status pages on 28 August 2025, accessed 14 November 2026, https://shopify.dev/docs/storefronts/themes/architecture/layouts/checkout-liquid ↩

  8. Shopify Help Center, Set up subscriptions, requirement to use a subscription app such as the first party Shopify Subscriptions app, accessed 14 November 2026, https://help.shopify.com/en/manual/products/subscriptions/setup ↩

  9. Shopify developer documentation, Subscriptions overview: subscriptions in Shopify point of sale require Shopify Payments, and stored payment methods are held through the Customer payment method APIs, accessed 14 November 2026, https://shopify.dev/docs/apps/build/purchase-options/subscriptions ↩

  10. Google Search Central, Site moves with URL changes: map every URL, use permanent redirects to the final destination, and keep them for at least a year, accessed 14 November 2026, https://developers.google.com/search/docs/crawling-indexing/site-move-with-url-changes ↩

  11. Solidus, README and licence (BSD 3 clause), GitHub, accessed 14 November 2026, https://github.com/solidusio/solidus ↩

If you are weighing up a move off Shopify, bring your numbers to a free workshop, and the first two weeks of work are on me. We go through your plan, your app list and your payment setup together, and I will tell you honestly whether a custom store pays off for you, or whether staying on Shopify is the better call.

1%of every invoice goes to a UK charity you pick.

A donation, never sponsorship. You choose the cause at onboarding.

The story behind the pledge →

Stay ahead of your competition.

The latest innovative products and services, straight to your inbox before your competitors hear about them.

Get up to 5% off your first six months: 1% per topic you pick, the full 5% when you take everything. Limited offer · ends 31 December 2026.

New clients only. Terms apply.

* Up to 5% off your first six monthly invoices, new clients only. Full terms.

Questions about pricing, contracts or how we work together?

Read the FAQ