Shopify vs a custom storefront: how to actually choose
Most of this decision is settled by three questions about your catalogue, your checkout and your team — not by comparing feature lists. Here is the honest version, including when Shopify is obviously right.
Almost every version of this article is written by someone selling one of the two answers. This one is written by a studio that builds both, which does not make it neutral, but does mean there is no answer here we need you to reach.
The short version: Shopify is the right default, and the burden of proof is on the custom build. Most businesses that think they need a custom storefront need a custom something — an app, an integration, a piece of middleware — bolted onto Shopify, not a replacement for it.
What follows is how to tell which one you are.
The question that is not the question
"Can Shopify do X?" is almost never the deciding factor, because the answer is almost always yes with enough work. Shopify has an app platform, a theme layer you can write real code against, a GraphQL admin API, and functions that let you replace its own checkout and discount logic.
The better question is: what does the workaround cost, every month, forever?
A platform limitation you route around once with fifty lines of Liquid is free. A limitation you route around with a nightly export, a spreadsheet and a person is not free — it is a salary, and it compounds as you grow.
Three questions that settle it
1. Does your catalogue fit Shopify's data model?
This is the big one, and it is the one people discover eighteen months in.
Shopify models a product as a thing with up to three option dimensions and a finite list of variants. That covers an enormous amount of retail. It covers t-shirts in size and colour. It covers coffee in weight and grind.
It starts creaking when:
- Configuration is combinatorial rather than enumerable. Made-to-measure, build-your-own, anything where the number of valid combinations is in the thousands and most will never be ordered.
- Price is computed, not stored. Priced by area, by weight, by distance, by a customer-specific contract rate, by a live commodity index.
- Stock is not a number. Serialised items, rentals with a calendar, anything where "in stock" is a question about a time range rather than a count.
- The buying unit is not the selling unit. Sold in metres, stocked in rolls; sold per person, stocked per session.
Metafields and Shopify Functions stretch a long way into the first two. They do not do much for the last two. If your catalogue is in the last two, you are already paying the tax, and you probably know it as "the part of the process where someone checks the order manually."
2. Is the checkout the product, or the way you get paid?
For most stores, checkout is a solved problem you should never think about again. Shopify's checkout converts well, handles tax and fraud, and is maintained by people whose entire job it is. Rebuilding it is one of the most expensive ways to lose money that exists in e-commerce.
But for some businesses the transaction is the product: quote-then-approve, deposit-then-balance, subscription with mid-cycle changes, split payment across purchase orders, approval chains inside a customer's organisation.
Shopify Plus can be pushed a long way here. If you are not on Plus and your transaction genuinely looks like that, this is the strongest single argument for custom that exists.
3. Who maintains it in three years?
This is the question people skip, and it decides more outcomes than the other two combined.
A Shopify store can be handed to a competent freelancer, a small agency, or an in-house hire in an afternoon. The platform is documented, the labour market is deep, and the parts you did not build keep working whether or not anyone is looking at them.
A custom storefront is a software product. It needs dependency updates, security patches, a deployment path, someone who understands its data model, and a plan for what happens when that someone leaves. If your business does not have — and does not want — engineering capacity, a custom storefront is a liability you have bought with a capital budget and will pay for out of operating budget.
The honest framing: a custom storefront is not a purchase, it is a hire.
The middle answer nobody sells you
The framing is usually presented as binary, and it is not. The most common correct answer for a growing business is:
Shopify for the storefront, checkout, payments and admin — plus custom code for the one or two things that are genuinely yours.
In practice that means some combination of:
- A custom Shopify app holding your pricing logic, configurator or approval flow, talking to the Admin GraphQL API.
- A hand-written theme rather than a bought one, so the storefront loads fast and the sections match your catalogue instead of a demo store's.
- An integration layer between Shopify and the ERP, 3PL or accounting system, with retries and reconciliation rather than a nightly CSV and hope.
- Headless for the storefront only, keeping Shopify's checkout. You get full control of the front end and keep the part that is genuinely hard to replace.
This is dramatically cheaper than a custom build, keeps the maintenance surface small, and — importantly — is reversible. If the custom app turns out to be wrong, you delete it and you still have a store.
Costs, honestly
Rough, and every project moves these:
- Store setup on a bought theme — days. The right answer for a first store, and it is not embarrassing. Sell something before you optimise selling it.
- Hand-written theme — weeks. Worth it once the storefront is a meaningful share of how customers judge you.
- Custom app or integration — weeks to a couple of months, depending on how strange the logic is.
- Custom storefront with custom checkout — months, plus permanent engineering. Real, and occasionally correct, but the bar is high.
The trap is the middle of that list being sold as the bottom of it. "We'll build you a custom platform" is a much bigger commitment than "we'll build the piece Shopify can't express", and the second is usually what solves the actual problem.
How to decide this week
Write down the thing your current setup cannot do. Not the category — the specific thing, in one sentence, the way you would explain it to a colleague.
Then ask which of these it is:
- A modelling problem — your catalogue does not fit. Custom app or, in the extreme, custom platform.
- A transaction problem — your checkout is not a checkout. Shopify Plus, or custom.
- A presentation problem — it looks and loads like a template. Hand-written theme. This is most stores.
- A plumbing problem — the data does not move between systems. Integration work, and it has nothing to do with your storefront platform at all.
Four is the most commonly misdiagnosed as one. If the pain is that someone spends Tuesday copying orders into another system, replatforming your storefront will not fix it, and will cost you six figures of attention finding that out.