When a business asks for a website quote, it's really asking one question: what does this cost?

That's a perfectly reasonable question, and it's also the wrong one. Not because price doesn't matter — it matters a great deal — but because the number on the quote is only the part that's easy to count. The rest gets paid in a drip: small recurring charges, hours nobody logged, and decisions that only reveal their price in year three.

We build in both worlds and we hold no grudge against WordPress. It runs an enormous share of the web for good reason. But the conversation about which one "costs more" is almost always held around the wrong variable, so let's break it into five real costs.

The cost that comes back every year

A typical WordPress site isn't one product. It's one product carrying between ten and thirty plugins, some of which bill annually.

A forms plugin. A caching plugin. An SEO plugin. A gallery plugin. Backups. Security. Translation. A page builder. Each one is an independent product from an independent company with an independent pricing model, and each has a day in the year when it asks to be renewed.

None of them is expensive on its own. That's exactly the point — individually each is too small to argue about, and collectively they become a fixed number leaving the business every year, without anyone ever having sat down and totalled it once.

With custom code that number is usually zero. There's hosting, and there's a domain. That's it.

The maintenance cost nobody prices

WordPress requires updates. Core updates, plugins update, the theme updates, and the PHP version underneath updates too.

Most of the time this passes smoothly. Then comes the day when one plugin's update breaks something in another, the site looks strange on mobile, and nobody knows which of the two updates is at fault. You find out because a customer called, not because a system alerted you.

The real question isn't what the fix costs. It's who owns it. If the answer is "the business owner, in the evenings," that's a cost that appears nowhere and is the most expensive of the lot, because it's billed against the time of the most expensive person in the business.

Custom code has its own maintenance, and we won't pretend otherwise. But there's a structural difference: with custom code you update when you decide to, and only what you need. With WordPress you update when an external vendor decided, and the timing isn't yours to choose.

The security cost

WordPress is the most popular target for website attacks in the world, simply because it's the most widespread. But WordPress core itself is well maintained. Most of the compromises we see don't come from there — they come from a plugin.

A plugin is third-party code running with full privileges inside your site. When its developer stops maintaining it — which happens constantly, especially with free plugins — a disclosed vulnerability stays open. You won't know. The plugin will keep working fine.

There's a dimension here that isn't only money. If your site has a contact form, it holds people's personal data. A leaked lead list isn't just embarrassing — it can be a regulatory exposure.

On a custom-built site, most of the code running is code written for you. The attack surface is an order of magnitude smaller, simply because there are far fewer doors.

The performance cost — the one you pay in conversions

A typical WordPress page is assembled in real time: PHP runs, the database is queried, twenty plugins each add their own CSS and JavaScript, and only then does the page begin loading for the user.

You can improve this. There's caching, there's a CDN, there's optimisation. But notice the shape of that move — you're paying for layers whose job is to cancel out the cost of other layers you already paid for.

A modern custom-built site is compiled ahead of time into static files and served from the edge. No PHP running, no query, no twenty plugins. The page simply already exists.

And this is where it stops being a technical discussion. A one-second difference in mobile load time translates into abandonment, and abandonment translates into enquiries that never arrived. That's the cost that's hardest to see, because it never leaves the account — it just never enters it.

The lock-in cost

This one surfaces late, and usually at the worst possible moment.

A site built around a particular page builder or closed platform is tied to it. Not because anyone set out to trap you, but because the content is stored in that tool's format. The day you want to move — because pricing changed, because the platform changed, because you want something it doesn't support — you discover there's no real export. There's a fresh start.

The simple question to ask any vendor, before signing: if we part ways tomorrow morning, what exactly do I take with me?

The right answer is: the code, the domain, the content and hosting access — all registered in your name. If the answer begins with "it depends," that's already the expensive part.

So when is WordPress genuinely the right choice?

We don't think the answer is always custom code, and anyone who tells you it is, is selling you something.

WordPress is a good choice when you need a site live quickly on a minimal budget, and that's a conscious short-term decision. It's good when content changes daily at the hands of a non-technical person who already knows the interface. It's excellent for a magazine or a high-volume publishing blog. And it makes a lot of sense when it isn't yet clear the business idea will work at all — there's no point building five-year infrastructure for something that may not last six months.

Custom code starts paying off when the site stops being a brochure and becomes part of operations — when orders run through it, when it talks to another system, when its speed affects revenue, or when you know you'll be holding onto it for years rather than months.

A ten-minute exercise

Before comparing two quotes, it's worth stopping to calculate one thing: your total cost across three years, including annual licences, maintenance hours — yours included — and the risk that you'll want to move partway through.

It's a ten-minute exercise in a single spreadsheet. More often than you'd think it flips the answer, and sometimes it confirms the cheaper quote. Both outcomes are fine. What isn't fine is comparing only the number on the bottom line, because that simply isn't the number.

Ran the exercise and got a figure you weren't expecting? Send it to us. We'll tell you honestly whether it's worth moving — or staying.