E-commerce is one of those areas where the honest answer is usually “use Shopify.” The platform is good, it is maintained by someone else, and it handles the boring, critical parts (payments, taxes, fraud, hosting, security patches) so you do not have to. We build custom storefronts, and we still steer most retailers onto Shopify, because for the large majority of small stores it is the better call.
But “most” is not “all.” There is a real line where an off-the-shelf platform starts costing you more than it saves: in per-transaction fees at volume, in catalog or checkout logic it cannot bend to, or in integrations it has never heard of. This is the same build-vs-buy logic we apply to online booking systems, pointed at your cart instead of your calendar. The goal is to help you tell which side of the line you are on before you spend anything.
Use Shopify, most of the time
For a store selling normal products to normal customers, Shopify is hard to beat: a checkout that converts, payments and tax handling out of the box, an app for everything, and a system you run yourself. The pricing is straightforward (all in CAD from Shopify’s Canadian pricing page, regular monthly with the annual rate in brackets):
- Starter, $7/month. For selling through social and a link in bio, not a full storefront. Fine if you mostly sell over Instagram or WhatsApp.
- Basic, $49/month ($37 annually). The real starting point for a small store with its own site.
- Grow, $132/month ($99 annually). The middle tier, formerly just called “Shopify.” More staff accounts and better reporting.
- Advanced, $517/month ($389 annually). For higher-volume stores that want the lowest fees and advanced reports.
- POS Pro, $119/month per location, if you also sell in person and want one system for both.
The default rule is the one we give for booking tools: if Shopify fits as-is, use it. A platform you do not build, host, secure, or patch beats a custom storefront on every axis that matters, until you genuinely outgrow it.
The number that actually matters: transaction fees
The monthly plan is the small number. The fees on every sale decide whether you outgrow Shopify, so understand how they work.
If you use Shopify Payments (their built-in processor), you pay a card-processing rate per online order: 2.8% + 30 cents on Basic, 2.6% + 30 cents on Grow, and 2.4% + 30 cents on Advanced. That is roughly in line with any processor; someone has to move the money.
The fee people miss is the extra cut Shopify takes if you do not use Shopify Payments, on top of whatever your outside gateway charges: a third-party transaction fee of 2% on Basic, 1% on Grow, and 0.6% on Advanced. The higher your plan, the smaller the penalty. For most stores the move is to use Shopify Payments and skip it entirely.
Here is why it matters for the build question. At $10,000 a month in sales, a 2% gap is around $2,400 a year: annoying, not decisive. At $200,000 a month, that same gap is $4,000 a month, real money every month, forever, for software you do not own. That is when the platform’s cost at your volume stops being a footnote.
When off-the-shelf starts to hurt
These are the signals that you have crossed the line. You do not need all of them; one or two is usually enough.
- Your catalog or checkout logic is genuinely unusual. Made-to-order configurations, complex bundles, rentals priced by duration, B2B pricing that changes per customer, quote-then-buy flows. When the buying flow itself is the product, bending Shopify around it gets fragile fast.
- You need deep integration with systems Shopify has never heard of. Your own ERP, a legacy inventory system, custom fulfillment, internal pricing rules. Shopify integrates with popular apps, not your in-house software.
- The per-transaction fees are real money at your volume. Once monthly fees run into the thousands, owning the checkout and routing payments yourself can pay back a build in a year or two.
- You want to own the platform, not rent it. If your store is the core of the business and you cannot tolerate platform rules, app deprecations, or pricing changes deciding your roadmap, owning the code is a strategic choice.
- One thing that is not a reason on its own: “Shopify looks too templated.” Theming gets you far, and a custom build is the wrong fix for a design preference.
What a custom storefront costs
A custom build is a one-time cost you own, versus a subscription you rent forever. In our pricing terms, a clean storefront with a normal catalog and checkout sits in the application range that starts around $15,000 and scales with scope. Unusual catalog logic, B2B pricing, or deep ERP integrations push you well above that. We break the brackets down in what a custom small business website costs in Toronto.
Worth saying plainly: a custom storefront is not just the build. You take on hosting, security, PCI scope, payment integration, and maintenance that Shopify handles for its monthly fee. That ongoing weight is why the off-the-shelf platform wins for most stores. You come out ahead only when the fees you escape, or the capability you gain, clearly outweigh both the build and the upkeep.
The payment integration line in that list is the one people underestimate, because it does not look like ongoing work. On a custom build, your processor’s live secret key is your responsibility to store, scope and rotate, and the August 2026 leak of live Stripe merchant keys was made up almost entirely of businesses in exactly this position. We wrote that up separately: nobody breached Stripe, somebody just asked 12 million web servers for their .env file. If you go custom, budget for the key hygiene along with the hosting.
Update, September 7, 2026: what “you take on security” actually looks like. The clearest illustration we have seen of that ongoing weight landed this week, and it is worth reading before you choose a side of this line.
On September 5, Sansec disclosed an unauthenticated remote code execution chain in Magento and Adobe Commerce, exploited in the wild since September 4, affecting every current version. When this was written Adobe had published no CVE and no patch. Adobe released APSB26-146 that evening, StyleSmuggler became CVE-2026-75650 (CVSS 10.0), and CISA added it to the KEV catalogue on September 8; our write-up has the details. The first confirmed victim had every available security update applied. Merchants have to make an operational decision, tonight, with incomplete information and no vendor fix, about whether to disable an API that takes modern storefronts offline.
That is the self-hosted deal, stated honestly. Not “Magento is insecure,” because every platform this size has had a bug like this. The difference is who is holding the pager at 11pm on a Saturday. On Shopify, this class of problem is Shopify’s emergency and it is usually resolved before you read about it. On a self-hosted store, the vendor writes the patch and you are the operations team, which is why Sansec measured only 38 percent of Magento stores patched six weeks after the emergency fix for the previous chain in this family.
Nothing above changes. The build-versus-buy line is still about fees, catalog logic and integrations. But when you price the “ongoing weight” of a custom build, price it including someone who can answer a call about an unpatched zero-day, because that cost is real and it is the one nobody quotes. Full write-up of the incident: a fully patched Magento store got backdoored on September 4.
A short way to decide
- Use Shopify if: you sell standard products, your checkout is conventional, your volume keeps the fees modest, and you would rather run the store than maintain the software. This is most retailers.
- Build custom if: your catalog or checkout logic is unusual, you need deep integration with systems Shopify cannot reach, fees at your volume are large enough to fund a build, or owning the platform outright is a real strategic need.
Most businesses are in the first bucket, and that is fine. The point is to know which bucket you are in before you commit, instead of overpaying for a build you did not need. Restaurants are their own version of this question, where the painful number is the delivery-app cut on every order: what the delivery apps cost a Toronto restaurant.
Update, September 11, 2026: the same question is now arriving on the messaging side
The Starter plan note above says social selling is fine if you mostly sell over Instagram or WhatsApp. That channel has just acquired a rate card, so it is worth a sentence.
Meta’s Business Agent, which recommends products from your catalogue, books appointments, qualifies leads and closes sales inside Instagram, Messenger and WhatsApp threads, moved to metered pricing on August 1 for anyone running it on the WhatsApp Business Platform: $2.00 per million tokens, which Meta’s own documentation puts at four to five cents per reply, or roughly 40 to 50 cents for a ten-message conversation. On October 1, replies typed by a human or generated by a third-party AI inside the 24 hour service window stop being free too, at $0.0034 per message in the North America band after a reported 1,000 free per number each month. The free WhatsApp Business app is not part of that metering, and Meta currently publishes no charge for the agent inside it, which is where most small retailers will meet this.
It is the same shape as the Shopify question and the delivery-app question, arriving on a third surface. A platform that owns the interface between you and your customer eventually prices it, and the decision is not whether that is fair but whether the convenience is worth the rate at your volume. Frequently it is. Meta’s agent at 45 cents a conversation is cheap against a person answering the same eleven questions every evening, and far cheaper than the enterprise alternatives. What has changed is only that it is now a line item you can compare, which it was not in June. The full arithmetic, including the seven industries barred from using it at all, is in the post on Business Agent billing.
Update, September 12, 2026: a point in Shopify’s favour that just got demonstrated
Most of this post is about the costs of staying on a platform. Here is the other side of that ledger, made concrete in the last month.
Google sunset the Content API for Shopping on August 18, the interface a great deal of ecommerce tooling has used since 2017 to push product data into Merchant Center, and began returning progressive errors on September 1. Every store on the old API had to be rewritten against Merchant API v1, which is not a version bump: different endpoint shape, different resource identifiers, a different delimiter inside product IDs, prices moved from strings to amountMicros, and no customBatch at all, so batching becomes a concurrency rewrite.
Shopify merchants on the Google & YouTube channel got this handled for them in a phased rollout. Google for WooCommerce shipped it inside an ordinary plugin update. Anyone on a custom or agency-built integration had to schedule real developer time in July and August, or file a Google extension request and buy six more weeks.
That is exactly the trade this post is about, running in the direction people underweight. The custom storefront costs more than the licence fee suggests, and a good part of the difference is work like this: forced migrations you did not choose, on someone else’s timetable, with a hard date. Budget a few of them a year. The full breakdown of what broke, with the four-minute check for whether your own feed is affected, applies to Shopify stores too, because a migration that happened to your account without your involvement leaves its own mess behind in feed rules and campaign labels.
Update, September 13, 2026: the first line in this table that points the other way
Everything above says the same thing in different words: a platform absorbs work you would otherwise pay for, and charges you in control. Here is a case where the platform absorbed the work and the custom build got nothing, which is the direction this post has never had an example of.
On August 5, Shopify turned on WebMCP tools across every Liquid storefront. That means an AI agent running in the shopper’s own browser can call ten named functions on the store: search the catalog, pull full product details with variants and stock, add and remove cart items, empty the cart, jump to checkout, open order history, and answer questions from the store’s policy pages. No app, no theme edit, no setting.
We checked sixteen live storefronts ourselves on September 13 to see how literal “every” is. Nine had it. Five did not, and all five were headless builds rendering through Next.js or a similar front end rather than a Liquid theme. Two blocked our request and are inconclusive.
So the asymmetry, at least this quarter, is the reverse of the usual one. The merchant on a stock theme woke up with an agent interface. The merchant who paid for a custom headless front end, usually for exactly the performance and control reasons this post endorses, did not, and would have to build and maintain the equivalent by hand against an API that moved once already this summer.
Two honest caveats before anyone reads this as an argument for staying put. Almost nobody can call these tools yet: it is ChatGPT’s desktop browser plus a Chrome origin trial that expires in seven weeks, and Chrome has not committed to shipping the standard. And a custom build can add its own tools, more selectively and with better annotations than a generic adapter, if and when there is traffic to justify it. But the pattern is the thing to note. When a new agent-facing surface appears, the platform ships it to a million merchants in an afternoon, and everyone else schedules it. That is the same dynamic as the Content API migration above, running in the opposite direction, and it belongs in the same column. The full breakdown of what is exposed, who can call it, and the November 3 date that decides whether any of it becomes permanent is in the post on Shopify’s WebMCP tools.
Where we fit
We build custom storefronts when a business has truly outgrown Shopify, and we set businesses up on Shopify (and tell them to stay there) when they have not. If you are not sure which side of the line you are on, tell us how you sell today: your platform, your rough monthly volume, and where it is hurting. You will get an honest read, including “stay on Shopify, you do not need a build,” if that is the right call.