# Technical SEO Technical foundations that must be in place for any SEO effort to succeed. These affect how Google crawls, indexes, and ranks your site. ## Core Web Vitals Google's page experience signals. Content relevance is still more important, but poor performance can hold you back. ### Metrics | Metric | Target | What It Measures | |--------|--------|-----------------| | **LCP** (Largest Contentful Paint) | Under 2.5s | How fast the main content loads | | **INP** (Interaction to Next Paint) | Under 200ms | How responsive the page is to input | | **CLS** (Cumulative Layout Shift) | Under 0.1 | How much the layout shifts during load | ### How to Improve **LCP:** - Optimize images (WebP/AVIF, proper sizing, lazy loading for below-fold) - Reduce server response time (caching, CDN) - Preload critical resources (fonts, hero images) - Minimize render-blocking CSS/JS **INP:** - Minimize JavaScript execution time - Break up long tasks - Optimize event handlers - Defer non-critical JavaScript **CLS:** - Set explicit width/height on images and embeds - Don't insert content above existing content dynamically - Use `font-display: swap` or preload web fonts - Reserve space for ads/embeds ### WordPress Specifics - Use server-level caching (EA-Nginx proxy cache is already configured on our server) - Optimize images on upload (Smush or similar) - Minimize plugin count — each plugin adds overhead - Use Hummingbird or LiteSpeed Cache for asset optimization - Purge Nginx cache after changes: `rm -rf /var/cache/ea-nginx/proxy//*` ## Mobile-First Indexing Google uses the **mobile version** of your site for indexing and ranking. There is no separate desktop index. ### Requirements - [ ] All desktop content is also visible on mobile - [ ] Viewport meta tag present: `` - [ ] Font size minimum 16px body text - [ ] Tap targets minimum 48x48px with 8px spacing - [ ] No horizontal scrolling - [ ] Content hidden in accordions/tabs is fine (as long as it's in the HTML) ### Testing - Google's Mobile-Friendly Test - Search Console > Mobile Usability report - Chrome DevTools device emulator ## Crawlability and Indexability ### XML Sitemap - Submit to Google Search Console - SmartCrawl generates this automatically - Verify at `yoursite.com/sitemap.xml` - Include all important pages, exclude thin/duplicate content ### Robots.txt Recommended content: ``` User-agent: * Allow: / Disallow: /wp-admin/ Allow: /wp-admin/admin-ajax.php Sitemap: https://yoursite.com/sitemap.xml ``` **Do NOT block CSS/JS files** — Google needs them for mobile-first rendering. ### Crawl Budget For small sites (<500 pages), crawl budget is rarely an issue. For larger sites: - Don't waste budget on filter pages, parameter URLs, or thin pagination - Use `noindex` on pages with no SEO value - Keep the sitemap clean (only valuable URLs) ### Index Status Check Search Console > Pages report for: | Status | Meaning | Action | |--------|---------|--------| | Indexed | Page is in Google | Good | | Discovered — not indexed | Google knows about it but hasn't indexed it | Improve content quality, add internal links | | Crawled — not indexed | Google crawled it but chose not to index | Content isn't valuable enough — improve or noindex | | Excluded by noindex | You set noindex | Intentional? If not, fix it | ### What to Noindex - Thank you / confirmation pages - Internal search results - Tag archives with thin content - Author archives on single-author sites - Admin/login pages - Paginated archives - Media attachment pages ## Canonical URLs ### Self-Referencing Canonicals Every page should have: `` SmartCrawl handles this automatically for most cases. ### Choose One Format Pick one and redirect all variations to it: | Decision | Options | |----------|---------| | www vs non-www | `example.com` or `www.example.com` | | HTTP vs HTTPS | Always HTTPS | | Trailing slash | `/page/` or `/page` — pick one | Redirect the other variations via `.htaccess` or server config (not SmartCrawl — this is a server-level concern). ## Structured Data See [Schema Markup](../smartcrawl/schema-markup.md) for SmartCrawl implementation. ### Priority Order | Schema Type | Rich Result | Priority | |-------------|-------------|----------| | **LocalBusiness** | Knowledge panel, maps | Every local business | | **FAQ** | Expandable Q&A in SERPs | Pages with Q&A content | | **BreadcrumbList** | Breadcrumb trail in SERPs | All pages (via Breadcrumbs module) | | **Event** | Date/time/location in SERPs | Event listings | | **Course** | Course listing | Educational offerings | | **Article** | Article metadata | Blog posts | | **Product** | Price, availability, rating | WooCommerce products | | **Review / AggregateRating** | Stars in results | Review pages (genuine reviews only) | ### Validation Always validate after deployment: 1. [Google Rich Results Test](https://search.google.com/test/rich-results) 2. [Schema.org Validator](https://validator.schema.org/) 3. Google Search Console > Enhancements (ongoing monitoring) ## HTTPS - **Required.** No exceptions. Google uses HTTPS as a ranking signal. - All HTTP URLs should 301 redirect to HTTPS - Mixed content (HTTP resources on HTTPS pages) must be fixed - SSL certificates are managed via cPanel on our server ## Page Speed Quick Wins | Action | Impact | Effort | |--------|--------|--------| | Enable server-level caching | High | Already done (EA-Nginx) | | Optimize images (WebP, compression) | High | Low | | Lazy load below-fold images | Medium | Low | | Minimize active plugins | Medium | Low | | Preload critical fonts | Medium | Low | | Defer non-critical JavaScript | Medium | Medium | | Use a CDN | Medium | Medium | | Inline critical CSS | Low | High | ## Technical SEO Audit Checklist - [ ] Site loads over HTTPS (no mixed content) - [ ] XML sitemap exists and is submitted to Search Console - [ ] Robots.txt is correct (not blocking important resources) - [ ] All pages have self-referencing canonical tags - [ ] One URL format (www/non-www, slash/no-slash) with redirects for the rest - [ ] No orphan pages (every page has internal links) - [ ] Core Web Vitals pass (LCP < 2.5s, INP < 200ms, CLS < 0.1) - [ ] Mobile-friendly test passes - [ ] No 404 errors on important pages (check Search Console) - [ ] Structured data validates without errors - [ ] No duplicate title tags or meta descriptions - [ ] Images have alt text and are optimized