Technical SEO Checklist: Canonical URLs, Structured Data & Site Architecture
I audited a WooCommerce site last year where every product had four live URL variants — HTTP vs HTTPS, with and without www, plus a tracking parameter version. Google had indexed all four for each product as separate pages. Rankings were split across competing URLs. Adding self-referencing canonical tags was the single highest-impact fix we made. Took an afternoon. Rankings consolidated within weeks.
Let’s be honest — technical SEO isn’t glamorous. But skip it, and nothing else matters. Great content and solid backlinks mean nothing if your canonical tags point to the wrong URL or your sitemap is broken. I’ve seen it happen to otherwise great sites.
Work through this checklist page by page. Do that and you’ll have a foundation search engines can actually work with.
Canonical URLs
A canonical URL (<link rel="canonical">) tells search engines which version of a page is the definitive one. Without it, the same content reached through different URLs gets treated as duplicates. Google Search Central recommends using rel=canonical tags to consolidate ranking signals (source):
https://example.com/blog/image-compression-tips
https://example.com/blog/image-compression-tips/
https://example.com/blog/image-compression-tips?ref=homepage
https://www.example.com/blog/image-compression-tips
http://example.com/blog/image-compression-tips
Search engines might split ranking signals across all versions, index the wrong one, or penalize you for duplicates. The canonical tag is your way of saying “Index this one, ignore the rest.”
Many small sites skip canonicals entirely. Don’t. Search engines won’t pick the version you want. Every page should have a self-referencing canonical tag. Even without duplicates today, tomorrow’s UTM parameters can create them overnight.
Watch out for wrong targets. Canonical hijacking (pointing at a different domain) or pointing at a completely different page makes search engines ignore the current page. For paginated pages like /blog/page/2/, stick with self-referencing canonicals.
Best practices: use absolute URLs (include https:// and the full domain), lowercase everything (URLs are case-sensitive to search engines), and pick either www or non-www. Redirect the other. Make sure your canonical matches whichever you chose.
Structured Data (Schema Markup)
If you do one thing this week, add BreadcrumbList schema. It’ll take five minutes and you’ll probably see breadcrumb links in search results. Best effort-to-payoff ratio in all of SEO:
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://yoursite.com" },
{ "@type": "ListItem", "position": 2, "name": "Blog", "item": "https://yoursite.com/blog" },
{ "@type": "ListItem", "position": 3, "name": "Post Title", "item": "https://yoursite.com/blog/post" }
]
}
Schema markup uses JSON-LD vocabulary to enable rich results — those enhanced snippets with star ratings, FAQ dropdowns, and product prices that stand out in search.
Schema Types Every Website Needs
Start here: Organization schema on the homepage (name, URL, logo). BreadcrumbList on every page. WebPage schema on every page with title and description. Article or BlogPosting on blog posts (headline, description, author, publisher, date, featured image). FAQPage on FAQ pages — turns Q&As into expandable rich results. WebApplication on tool pages.
For advanced needs: HowTo for tutorials, Product for e-commerce, LocalBusiness for physical locations, Review for review content, VideoObject for pages with embedded videos.
Common Mistakes
Missing required fields is the biggest one. Required properties missing? Google ignores the entire markup. Another common one: markup that doesn’t match visible content. Google cross-references your structured data against what users actually see. Test with Google’s Rich Results Test before deploying (source).
Sitemap.xml & Robots.txt
A sitemap lists every page you want indexed with last-modified dates. Skip it and search engines discover pages only through links — new pages can take weeks to appear. A good sitemap says “here’s everything, go.” Submit yours to Google Search Console and Bing Webmaster Tools.
Robots.txt tells crawlers what to skip. Block admin pages, internal search results, tag archives, staging environments — anything that burns crawl budget without value. But keep CSS, JS, and images accessible; crawlers need them to render pages. And remember: robots.txt is public. It’s not a security mechanism.
For both: keep sitemaps under 50,000 URLs, only include canonical URLs, test robots.txt with Google’s tester in Search Console.
URL Structure & HTTPS
Clean URLs matter. Use hyphens, keep them lowercase and descriptive, follow consistent patterns (/blog/post-name/ for blog posts). Skip tracking parameters and session IDs.
HTTPS has been a ranking signal since 2014 (source). Browsers flag HTTP pages as “Not Secure.” Set up 301 redirects from HTTP to HTTPS, update internal links and canonicals, enable HSTS headers. The Website Audit tool checks for mixed content and redirect chain issues.
Technical SEO Checklist
Work through this page by page:
- Every page has a self-referencing canonical tag
- Canonical URLs use the correct domain and protocol (WWW vs non-WWW, HTTPS)
- Organization schema on homepage
- BreadcrumbList schema on every page
- Article/BlogPosting schema on blog posts
- FAQPage schema on FAQ pages
- WebApplication schema on tool pages
- Sitemap.xml exists, is valid, and submitted to Search Console
- Robots.txt exists and blocks low-value pages
- All pages load over HTTPS with no mixed content
- URLs use hyphens, lowercase, and are descriptive
- HTTP to HTTPS redirects are in place (301)
- No duplicate title tags across the site
- Structured data passes validation
- Crawl budget is optimized
Use the Website Audit tool to check many of these automatically. Run it on your homepage, set a crawl depth of 3-4, and review the results. It’ll flag canonical issues, missing schemas, mixed content, broken links, and more.