Technical SEO for WordPress: Practical Checklist
Master Technical SEO for WordPress with our actionable checklist. Improve crawlability, site speed, indexation, and rankings. Built for South African businesses using managed hosting.
Key Takeaways
- Technical SEO fixes crawlability, indexation, and site speed — the foundation of ranking before content matters.
- A practical checklist covering XML sitemaps, robots.txt, Core Web Vitals, and canonical tags prevents costly ranking losses.
- South African WordPress sites gain competitive advantage by fixing technical issues faster than unoptimised competitors on shared hosting.
Technical SEO for WordPress isn't optional — it's the invisible infrastructure that makes your site discoverable and fast. If your homepage takes 4 seconds to load over Openserve fibre, or your XML sitemap is broken, no amount of blog content will rank you in Google. This practical checklist covers the 15 technical SEO tasks every South African WordPress site needs, prioritised by impact. Whether you're running an e-commerce store in Johannesburg or a service business in Cape Town, these fixes apply today.
At HostWP, we've audited over 500 WordPress sites across South Africa, and we found that 73% had at least one critical technical SEO issue preventing indexation or slowing Core Web Vitals. The good news: most are fixable in a single afternoon. Let's walk through each one.
In This Article
1. Audit and Fix Core Web Vitals
Core Web Vitals — Largest Contentful Paint (LCP), First Input Delay (FID), and Cumulative Layout Shift (CLS) — are Google's three metrics for page experience, and they directly impact rankings. If your LCP is over 4 seconds, Google will deprioritise your pages in search results.
Start by running your homepage through Google PageSpeed Insights. Look for the "Core Web Vitals" section. LCP should be under 2.5 seconds, FID under 100ms, and CLS under 0.1. On managed WordPress hosting like HostWP — where LiteSpeed caching and Redis are built-in — you'll typically see LCP improvements of 40–60% without any plugin additions.
Common culprits for poor vitals on South African sites:
- Unoptimised images: A 5MB PNG uploaded directly will kill LCP. Use WebP format and lazy loading.
- Render-blocking JavaScript: Third-party scripts (analytics, chat widgets) loaded synchronously block page rendering. Defer them.
- No caching layer: If you're on shared hosting without Redis, every visitor triggers a full PHP render. This adds 2–3 seconds alone. We see this across 68% of sites we migrate from budget hosts like Afrihost.
- Load shedding impact: During Stage 6 outages, your database queries may timeout. A caching layer masks this, but without one, timeouts crater your scores.
Maha, Content & SEO Strategist at HostWP: "I recently audited a Durban retail site with 6-second LCP. We activated LiteSpeed caching and removed three unoptimised tracking scripts. Within 24 hours, LCP dropped to 1.8 seconds and organic traffic climbed 23%. No content changes, just infrastructure."
Action: Install the Google Site Kit plugin to monitor Core Web Vitals in real-time from your WordPress dashboard. Run PageSpeed Insights weekly.
2. Configure XML Sitemaps and robots.txt
Your XML sitemap tells Google which pages exist and how often they change; robots.txt tells crawlers which pages to skip. Both are non-negotiable technical SEO foundations.
WordPress generates XML sitemaps natively if you enable them: go to Settings → Reading → Search Engine Visibility, and ensure "Discourage search engines" is unchecked. If you need a more advanced sitemap, the Yoast SEO plugin creates separate sitemaps for posts, pages, images, and video — critical if you have product galleries on WooCommerce sites.
Verify your sitemap is live at yourdomain.com/sitemap.xml. Then submit it to Google Search Console. This single step reduces the time Google takes to discover new pages from 4–6 weeks to 1–2 days.
For robots.txt, you want to:
- Allow Googlebot access to all public pages.
- Block crawl of /wp-admin/, /wp-includes/, and /cart/ (WooCommerce).
- Set a crawl delay if your hosting is undersized (though this is rare on managed plans).
Yoast auto-generates an optimal robots.txt, or create a simple one manually at yourdomain.com/robots.txt:
User-agent: *
Allow: /
Disallow: /wp-admin/
Disallow: /wp-includes/
Sitemap: https://yourdomain.com/sitemap.xml
A properly configured XML sitemap + robots.txt combo cuts indexation time in half and prevents wasted crawl budget on duplicate or admin pages.
3. Fix Crawlability Issues
Crawlability is whether Google can actually read your page HTML. Common WordPress issues block crawlers entirely.
First, audit your site in Google Search Console → Coverage. Look for "Excluded" or "Error" statuses. Common culprits:
- Redirect chains: If page A redirects to page B, which redirects to page C, Google may give up. Use direct 301 redirects only.
- Noindex tags: Accidentally added to your homepage? Search Console will flag indexed pages as "Excluded." Check Settings → Reading, and verify individual pages don't have "Search engines discourage..." ticked.
- Duplicate content: WooCommerce product filter parameters create duplicate pages: /shop/?size=large, /shop/?color=blue, /shop/?size=large&color=blue. Use canonical tags to consolidate these.
- Broken internal links: 404s within your site waste crawl budget. Use a 404 monitor plugin to catch them monthly.
The fastest crawlability win: ensure your homepage loads within 2 seconds. Google allocates less crawl budget to slow sites. On a standard South African fibre connection (Openserve 10Mbps), a slow site loading in 5+ seconds wastes 40% of your daily crawl allowance.
Not sure if your WordPress site has crawlability issues? Our white-glove support team runs a free technical SEO audit and fixes the top 3 issues within 48 hours — no obligation.
Get a free WordPress audit →4. Implement Canonical Tags Correctly
Canonical tags tell Google which version of a page is the "primary" one. This matters because WordPress creates multiple URLs for the same content: example.com, www.example.com, example.com/?p=123, etc.
By default, WordPress adds a canonical tag to every page pointing to itself. This is correct for 99% of cases. But you'll need to manually set canonicals for:
- WooCommerce product variations: If you have /products/red-shirt and /products/red-shirt?size=large, set the canonical on the size-variant page to point to /products/red-shirt.
- Pagination: If you have 10 pages of blog posts (/blog/page/1, /blog/page/2, etc.), set a rel='next' on page 1 and rel='prev' on page 2. This prevents duplicate content penalties.
- Regional versions: If you have example.com and example.co.za (for your South African market), set the canonical on example.com to itself and hreflang tags to differentiate them for POPIA-compliant geo-targeting.
Check your canonical tags: open your homepage in a browser, right-click, "View Page Source," and search for "rel=canonical". You should see: <link rel='canonical' href='https://yourdomain.com/' />
Incorrect canonicals (pointing to competitor sites, or to pages that don't exist) are one of the fastest ways to tank rankings. I've seen sites lose 40% of traffic overnight because a plugin set canonicals to a staging URL by mistake.
5. Add Schema Markup for Your Industry
Schema markup (structured data) tells Google what type of content your page contains: a recipe, an event, a product review, a local business. Pages with schema rank higher, and they show rich snippets in search results (star ratings, prices, availability).
For most WordPress sites, you need:
- Organization schema: On your homepage, tells Google your business name, address, phone, and logo. Critical for local SEO (Johannesburg, Cape Town, Durban sites especially).
- LocalBusiness schema: For service providers or retail shops. Include your ZAR pricing, hours, and address.
- Product schema: For WooCommerce sites. Include price, currency (ZAR), availability, and review ratings.
- BreadcrumbList schema: On category and product pages. Helps Google understand site hierarchy.
The easiest way: use Yoast SEO or Schema Pro. Both auto-generate schema for posts, pages, products, and events. Go to each post type and fill in the fields. Yoast will emit the JSON-LD code automatically.
Verify your schema at Google's Rich Results Test. Paste your page URL and check for errors (red) vs. warnings (yellow). Red errors block rich snippets; fix those first.
Maha, Content & SEO Strategist at HostWP: "A Cape Town legal services client added LocalBusiness schema with their service pricing in ZAR and operating hours. Within 6 weeks, their click-through rate from search results jumped 34% — people could see pricing before clicking."
6. Secure Your Site and Fix Mixed Content
Google ranks HTTPS sites higher than HTTP. Mixed content (HTTPS pages loading HTTP resources) slows crawling and triggers browser warnings. This is non-negotiable for technical SEO.
All HostWP plans include free SSL certificates (auto-renewed). Verify yours is active: visit your site in a browser and look for the padlock icon. If you see a warning, you have mixed content.
Find mixed content: install the Really Simple SSL plugin. It auto-fixes most mixed content by rewriting internal URLs from http:// to https://. Then run your homepage through SSL Labs to verify your certificate is valid.
Other security checks:
- Ensure your hosting has DDoS protection (HostWP includes Cloudflare's DDoS mitigation standard). This protects you during load shedding when attackers exploit slow sites.
- Keep WordPress core, plugins, and themes updated. Outdated plugins are the #1 way hackers inject malicious code that damages rankings.
- Use a Web Application Firewall (WAF). We include Cloudflare's WAF on all plans — it blocks SQL injection attempts and protects your database.
A compromised WordPress site loses all ranking authority within days. Google blacklists it from search results, and recovery takes 6+ weeks. Preventing compromise is far cheaper than fixing it.
Frequently Asked Questions
Q: How often should I run a technical SEO audit?
At minimum, quarterly. Run PageSpeed Insights monthly to catch Core Web Vitals drops early. If you've made plugin or theme updates, audit the same day. Most issues appear within 48 hours of changes.
Q: Do I need all these fixes to rank?
No. Prioritise: (1) Core Web Vitals, (2) Crawlability, (3) XML Sitemap, (4) Canonicals, (5) Schema. Fixes 1–3 prevent de-indexation. Fixes 4–5 improve rankings 10–20%. If you're short on time, do the top three this week.
Q: Does load shedding affect my technical SEO?
Yes. During outages, your database goes offline. Without a caching layer (Redis + LiteSpeed), every visitor hits a timeout. This tanks Core Web Vitals and signals to Google your site is "unreliable." Managed hosting with built-in caching masks this entirely.
Q: How do I know if my host supports technical SEO?
Ask: Do you offer LiteSpeed caching, Redis object caching, and Cloudflare CDN? All three standard? Good. Do you support HTTP/2 and auto-SSL? Yes? Better. Do you have a ZAR pricing model and Johannesburg infrastructure? Perfect for local SEO. Most budget hosts (Xneelo, WebAfrica shared plans) offer none of these.
Q: Can I do technical SEO myself, or do I need an agency?
Most fixes are DIY-friendly if you follow a checklist (like this one). XML sitemaps, canonicals, and schema are plugin-driven. Core Web Vitals need image optimisation and caching — that requires some technical knowledge or a managed host with caching baked in. Crawlability audits need Search Console access. If you're uncomfortable with any step, outsource it. A 2-hour audit costs R1,500–2,500; a month of lost rankings costs R15,000+.