Off-the-Shelf or Custom Software? 7 Questions to Ask Before You Decide
Choosing the right software depends on cost, data ownership, integrations and your growth plans. Seven questions to answer before you commit.
Core Web Vitals, canonical and hreflang, rendering strategy and structured data: what to check in your code so search engines understand your site correctly.
However good your content is, search engines will misread your pages, or miss them entirely, if the technical foundation is broken. Technical SEO is largely a developer's job: URLs, rendering, performance and structured data are all decided in code. The list below summarises what I go through before launching a new project.
If the same page opens on http, https, with and without www, search engines see four separate copies. Redirect all of them to a single root with a 301 and give every page an absolute canonical tag.
<link rel="canonical" href="https://example.com/services">
<link rel="alternate" hreflang="en" href="https://example.com/services">
<link rel="alternate" hreflang="tr" href="https://example.com/tr/hizmetler">
<link rel="alternate" hreflang="x-default" href="https://example.com/services">
A common mistake: the base URL comes from an environment variable (for example APP_URL) and the production server keeps the local value (localhost). The site works, so nobody notices, but canonicals, sitemaps and social previews all point to the wrong domain. Check these tags in the page source after every deployment. hreflang must also be reciprocal: if the Turkish page points to the English one, the English page must point back.
Google can execute JavaScript, but it does so in a separate rendering queue. If headings, body text and internal links only exist in the browser, indexing can be delayed. So:
<a href> links; elements that only redirect via onClick are not crawled.<title> and description for every page from the server.Google's page experience signals consist of three metrics, assessed at the 75th percentile of real-user data:
Never lazy-load the main above-the-fold image; prioritise it and serve the right size for each device:
<img src="/img/cover-1280.webp"
srcset="/img/cover-640.webp 640w, /img/cover-1280.webp 1280w"
sizes="(max-width: 900px) 100vw, 50vw"
width="1280" height="720" fetchpriority="high" alt="…">
Give images and embeds width/height, reserve space for late-loading banners, and preload web fonts.
Break up long tasks that block the main thread, remove unused JavaScript, and limit third-party scripts (chat widgets, ad tags) to the ones you genuinely need.
robots.txt should only block areas you don't want crawled (admin panel, internal search results) and reference your sitemap.noindex pages don't belong there.Structured data describes what a page is about in a machine-readable way: person or organisation, article, product, FAQs, breadcrumbs. The rule is simple: everything you mark up must be visible on the page. Validate it with Google's Rich Results Test before going live.
<script type="application/ld+json">
{"@context": "https://schema.org", "@type": "Article",
"headline": "…", "datePublished": "2026-09-27",
"author": {"@type": "Person", "name": "…"}}
</script>
A fast front end cannot make up for a slow server. Compress text assets (Brotli or gzip), give static files long cache lifetimes with versioned file names, and cache pages that rarely change on the server. Adding the right database indexes for frequent queries is often the cheapest speed-up of all.
Technical SEO is never a one-off job; every new feature can break an item on this list. Making these checks part of your release process prevents ranking losses before they happen.
Choosing the right software depends on cost, data ownership, integrations and your growth plans. Seven questions to answer before you commit.
Prepared statements, context-aware output escaping, Content Security Policy and safe error handling: practical defences against the two most common attacks on PHP projects.