The most expensive SEO mistake is treating it as a feature you bolt on at the end. By the time the site is live, the decisions that matter — URL structure, heading hierarchy, schema, load speed, internal linking — are already baked into the code. Fixing them retroactively costs two or three times what it would have cost to do right the first time.

On every website I build, SEO is a first-class concern from the first commit. Here is what that actually looks like.

1. Technical foundation

The first layer is invisible to visitors but search engines depend on it completely.

  • Clean, semantic HTML. One <h1> per page, logical <h2>/<h3> hierarchy, real <nav>/<main>/<article>/<footer> landmarks.
  • Server-rendered or prerendered content. If a crawler sees an empty <div id="root">, you are invisible. I prerender or statically generate the pages that matter — which is why this very blog post is a real HTML file, not an overlay inside a React app.
  • A real sitemap.xml. Generated at build time, updated on every deploy, referenced from robots.txt.
  • A sensible robots.txt. Allow what should be indexed, block what should not (admin panels, staging, iframe embeds).
  • Canonical URLs. Every page declares its canonical URL so duplicate/parameter variants do not dilute rankings.
  • HTTPS and HSTS. Non-negotiable in 2026.
  • Fast server response times. TTFB under 200 ms via CDN/edge deployment.

These are the table stakes. If any of them is missing, nothing else you do will make up for it.

2. Structured data (schema markup)

Schema.org markup is how you tell search engines what each page is, not just what is on it. Google uses it to show rich results — the star ratings, prices, FAQs, article dates, business hours that appear right in the search listing.

For business websites I implement at least:

  • Organization or LocalBusiness on the homepage (with address, hours, phone, sameAs for social profiles).
  • WebSite + ProfilePage with publisher references.
  • Product + Offer on every product page for e-commerce.
  • Article / BlogPosting on every blog post (this post has it — view source if you want to see).
  • BreadcrumbList on any page below the top level.
  • FAQPage where it fits naturally.

I validate every schema block with Google's Rich Results Test before shipping.

3. On-page structure

The bones of a page matter more than the copywriting tricks people like to talk about:

  • Title tag: 50–60 characters, primary keyword near the front, brand at the end.
  • Meta description: 140–160 characters, written for a human clicker, not stuffed.
  • H1: Matches the page intent. One per page.
  • H2/H3 hierarchy: Scannable subheadings with real content under each.
  • Image alt text: Describe the image for someone who cannot see it. If that also contains a keyword naturally, great.
  • Internal links: Every important page is linked from at least one other page on the site. Orphaned pages do not rank.

4. Content that answers questions

Google's job is to return the best answer to a query. If your page is the best answer, it ranks. If it is not, nothing you do with keyword density will save it.

Practical version:

  • Write for the specific question a potential customer would type into Google.
  • Answer the question in the first paragraph.
  • Expand with details, examples, and sub-questions in the body.
  • Link to related pages on your site.
  • Keep updating old posts — Google rewards freshness on topics that change.

This post is an example. It targets "SEO for small business websites" and answers the specific question "what does it mean to do SEO from day one". If I wrote it as generic keyword soup it would never rank.

5. Performance

Google folded page speed into its ranking algorithm years ago, and Core Web Vitals tightened the screws further. Slow sites are penalized, fast sites are rewarded. I cover this in detail in What Makes a Website Fast, but for SEO specifically:

  • LCP under 2.5 seconds.
  • INP under 200 ms.
  • CLS under 0.1.
  • Mobile performance treated as primary (Google uses mobile-first indexing).

6. Local SEO for location-based businesses

If you sell to customers in a specific city — restaurants, boat tours, local services — local SEO is where most of your traffic will come from. On top of the basics above:

  • Claim and complete your Google Business Profile.
  • Use consistent NAP (name, address, phone) across the site and all directory listings.
  • Add LocalBusiness schema with geo coordinates.
  • Build pages that target specific city + service combinations.

I am based in Split, Croatia, and I wrote about this side of things in Hiring a Web Developer in Split, Croatia.

7. Ongoing — not a one-time fix

SEO compounds. A site launched with clean fundamentals keeps gaining authority and rankings over years. A site retrofitted later is playing catch-up against competitors who started early.

If you are planning a new build, or you inherited a site that is quietly losing ground, talk to me at info@tonibarisic.com or via the contact section. I do free initial audits for projects I think I can meaningfully help.