Websites by Frank
← Newsletter
May 10, 2026

What Actually Goes Into Building a Website

Wix and Squarespace make it look easy. The lowest bidder makes it look cheap. Real web development is neither, and here's what's actually involved.

What Actually Goes Into Building a Website

Most people think building a website means signing up for Wix or Squarespace, dragging some boxes around, and going live by Friday. A nephew suggests WordPress. A friend recommends GoDaddy’s website builder. Then you go on Fiverr and find someone willing to build the whole thing for $300.

That’s not a website. That’s a flyer.

A flyer sits in a stack on a counter. Nobody reads it unless they’re already in the room. A website is supposed to do the opposite: pull people in who didn’t know you existed, hold their attention, and turn them into clients. Most of what gets sold as “web design” doesn’t do any of that, because most of it skips the work that actually makes a website work.

If you’re a regulated professional, a service business, or anyone whose income depends on being found and trusted, here’s what’s involved in building a real one.

1. Purpose first. Layout last.

Before a single page gets drawn, the question is: what is this site for?

Booking appointments? Capturing leads? Selling a product? Building a directory? Educating prospects until they’re ready to call?

Each of those needs a completely different structure. A booking site lives or dies by the calendar flow. A directory needs filterable search and unique pages for each entry. A service business needs trust signals: credentials, results, a clear path from landing on the home page to clicking “book a call.”

If your developer doesn’t ask, you end up with a generic five-page brochure that doesn’t actually do anything. That’s the flyer problem.

2. Research the competition. Closely.

Before I open a code editor I pull at least ten competing sites and read them carefully. What pages do they have? Where do they put pricing? What’s the call to action above the fold? What’s working, and where do they fail?

This isn’t copying. It’s positioning. You can’t make your business look distinct until you know what the room actually looks like. Most builders skip this and just rebuild whatever they shipped last time with new colours, which is why every paralegal site, every dentist site, every realtor site looks identical.

3. Keyword research isn’t optional.

People search for specific things. “Family lawyer Mississauga uncontested divorce.” “Tandem skydiving Wasaga Beach.” “Paralegal small claims court Hamilton.”

If those phrases don’t appear in your URLs, page titles, headings, and body copy, placed believably and not stuffed, Google does not show your site for those searches. You can have the most beautiful design in the country and end up on page 8 for the very query a client just typed.

Keyword research is checking what people are actually typing, what the top-ranking competitors are using, and which phrases you can realistically rank for given your domain age and the depth of your content. It’s an hour per service area. Most builders never do it. Real ones plan the whole content strategy around it.

4. Content is the work.

Pages don’t write themselves. Service pages, about pages, practice-area pages, pricing pages, FAQ pages: each one is its own short essay, structured around a keyword cluster, supported by internal links, written for a human who’s deciding whether to call you.

A “we built your site, here’s a login” handoff that ships with stock copy is the developer’s version of throwing a flyer at you. You have to write the words yourself, but a good builder writes the first draft for you and tightens it together.

The same effort goes into the newsletter. Fresh, useful articles keep Google interested in your site, give you something to share, and turn a static brochure into an asset that grows month over month.

5. Architecture beats layout.

The shape of a website matters more than its colour palette. Where the sitemap branches. What links to what. How deep a page sits from the home page. How URLs are named. Whether the same content has one canonical address or seventeen accidental duplicates.

Get architecture wrong and Google indexes the wrong page, the slow page, or none of them. Get it right and a small site outranks a sprawling one. Drag-and-drop builders generate some of the worst architecture on the internet: flat, slow, full of duplicate pages, often serving the actual content from JavaScript that Google has to render before it can even read it.

6. The site has to actually exist on the internet.

Building a site on your laptop is the easy part. Putting it on a server where it loads fast, stays up, and doesn’t disappear when a hosting company restructures; that’s deployment.

That means a real server (not shared $4/month hosting on a box with 400 neighbours), a Let’s Encrypt SSL certificate so the address bar reads https, security headers, image compression, browser caching, gzip on every response, a working sitemap.xml, a robots.txt that points search engines at what they should index and away from what they shouldn’t.

Wix and Squarespace tenants never touch any of this. Neither does the client. When something breaks, you’re at the mercy of a support queue.

7. Submit the site to search engines. All of them.

You’d be surprised how many sites are launched and just hoped for. Real launches include:

  • Google Search Console: submit the sitemap, request indexing, monitor what queries the site starts ranking for
  • Bing Webmaster Tools: different algorithm, different rankings, still around 15% of Canadian search and growing
  • Yandex Webmaster: five-minute setup, useful for international visitors and Russian-speaking diaspora
  • Google Analytics 4: measurement ID provisioned, events configured, conversion tracking so you can actually tell what’s working
  • Google Business Profile: your storefront on Google Maps and the local pack, which is where most local searches end

None of this happens on its own. Builders that say “SEO included” usually mean they checked a box that doesn’t do anything.

8. Wire the social previews properly.

When someone shares your URL on Facebook, LinkedIn, Slack, iMessage, or X, the preview card that appears is generated from your site’s Open Graph tags. If those are missing or generic, the card is blank, ugly, or shows the wrong image, and your link gets a fraction of the clicks it would otherwise.

A real build sets og:title, og:description, og:image at 1200×630, twitter:card, and JSON-LD structured data on every page, with a custom image per article or product. Look at the portfolio: every card on that page is a screenshot pulled from each site’s actual og:image tag. They all have one because I set it on every site.

9. Email. The conversation you didn’t plan for.

A website without a working email setup is a billboard without a phone number. There are basically three real options:

  • Google Workspace: $6/user/month. Gmail, Drive, Meet, Calendar. SPF and DKIM get set up properly at DNS level so your outgoing mail doesn’t get flagged as spam. This is what I run, and what most clients should run.
  • Microsoft 365: $6.99/user/month, same idea, Outlook ecosystem. Right answer for clients already deep in Word and Excel.
  • Self-hosted: possible, but a maintenance trap. SPF/DKIM/DMARC/reverse-DNS all have to be perfect, IP reputation has to be earned, deliverability needs constant monitoring. One mistake and your business email lands in spam permanently. Not worth it for almost anyone.

The DNS records get configured at the same time the site is deployed. If your developer doesn’t ask which mail platform you’re on, that’s a flag.

10. The site has to keep running after you launch.

Sites break. Servers reboot. SSL certificates expire every 90 days. WordPress plugins become abandoned and start leaking. Bots probe for known vulnerabilities every minute of every day.

A real shop keeps the server patched, monitors uptime, renews SSL automatically, runs daily backups, re-deploys when content changes, and watches the logs. That’s the difference between proper monthly hosting and a $4 shared plan running PHP from 2018 with 400 other sites on the same IP.

Why the lowest bidder hurts you

You already know the lowest bidder isn’t writing the best copy, isn’t doing keyword research, isn’t planning the architecture. What’s less obvious is what happens after they ship:

  • They disappear when something breaks
  • They lock you into their hosting so you can’t leave
  • They use a proprietary builder so the site can’t be ported anywhere else
  • They never add to the site, never update content, never measure anything
  • Six months later you’re back at square one with a slightly newer flyer

That’s not a one-time sunk cost. It’s recurring damage. Every month a bad site stays up is a month of prospects searching for what you do, finding someone else, and never knowing you existed.

What real development costs

Not Wix-template cheap. Not “agency in Toronto charging $25,000 for a five-page brochure” either.

A custom Django build covers all of the above: discovery, research, architecture, content, deployment, SSL, email wiring, SEO setup, GA4 provisioning, sitemap, social previews, and Google/Bing/Yandex submissions. It starts at $1,500 + HST. Hosting that includes monitoring, daily backups, automatic SSL renewal, and security patching is $5/month, or $55/year if you prepay (one month free).

Compare that to spending nothing and being invisible. Or spending $300 once and getting a flyer that never moves the needle. The math gets clear fast.

See exactly what’s included in the build. Look at the work I’ve shipped. Start a project →

Quality, not quantity

I take a small number of new builds each quarter. Every site is custom Django, hosted on a real Hetzner server, deployed with proper SSL, set up for SEO from day one, and owned by the client: the code, the database, the domain. Nothing is locked behind a third-party builder licence.

If you’re serious about being found, that’s the difference between a flyer no one sees and a website that earns its keep.

Want these in your inbox?

Roughly monthly. Unsubscribe any time.

Subscribe →

More from the newsletter

{# Site-wide card scroll-reveal. Tags with .js-anim-ready so CSS knows to apply the initial hidden state, then IntersectionObserver flips each .wbf-card-reveal to .is-in-view as it enters the viewport. #}