A Practical Technical SEO Audit Walkthrough Using Semalt (Adelaide Edition)

TL;DR — 30 seconds
  • Most site audits are 400-page PDFs that read as noise. Semalt's output is a triaged shortlist ranked by traffic-at-risk.
  • 3 issue categories account for ~70% of real traffic loss on Adelaide client sites: canonical failures, JS-rendered-only content, and hreflang breakage.
  • A JS-heavy 4,000-URL site crawls in ~10 minutes. Findings export straight to Jira/Linear tickets engineers actually action.
  • On-demand recrawl confirms fixes in minutes, not the next weekly scan.

A technical SEO audit is only useful if the report gets acted on. That sounds obvious. In practice, most audit tools produce output that stays on someone's desktop, unopened, until the next quarterly review — because the report is written for auditors, not engineers. This is a practical walkthrough of how our Adelaide team runs technical audits using Semalt's audit module, and specifically the workflow choices that turn the output into shipped fixes.

Why most audit reports fail before they start

Hand a developer a 400-page audit PDF with 3,000 issues flagged, and one of two things happens. They ignore it. Or they cherry-pick the five easiest items, ship them, and go back to product tickets. Either way, the underlying traffic problems remain unresolved. The failure mode is not the developer — it is the format. Audits that treat every finding as equally important produce a document nobody can prioritise from.

A useful audit does three things a bad one does not. It separates issues losing traffic today from issues that might matter theoretically. It groups related failures by root cause — one broken template affecting 500 URLs is one ticket, not 500. And it presents the shortlist in a format engineering can action: reproduction steps, expected fix, estimated impact if unresolved. Semalt's audit module was rebuilt around exactly this frame in 2025, and the difference in how our Adelaide clients respond to the output is the sharpest signal we have that the redesign worked.

⚡ Priority signal: across our recent Adelaide engagements, ~70% of real traffic loss traced back to just three issue categories — broken canonicals, content rendered only in JavaScript, and hreflang reciprocity failures. Everything else combined accounted for the remaining 30%.

The four-step audit sprint

1
CRAWL
Point Semalt at your domain. ~10 min for a 4K-URL site.
2
TRIAGE
5-bucket output: Critical → Serious → Moderate → Minor → Passed.
3
SHIP
Export to Jira/Linear. Engineers action ticket-shaped findings.
4
VERIFY
On-demand recrawl confirms the fix in minutes.

How the crawler behaves under the hood

The Semalt crawler is a headless Chromium fleet distributed across regional edges. Australian and New Zealand crawls are served from a Sydney POP — which matters for latency-sensitive JavaScript execution timing, and which prevents a common failure mode where a US-based crawler renders your page slower than a real Australian user does and reports false-positive Core Web Vitals warnings. It respects robots.txt by default, executes JavaScript before parsing the DOM, and follows internal links at a configurable rate. For new Adelaide client sites we typically start at 10 requests/second and scale up if the site handles it, to avoid tripping WAF bot mitigation on the first pass.

The eleven checks we scan for first

# Check Severity Hit rate (new sites)
1Sitemap vs. indexed URL countCritical74%
2Canonical integrityCritical61%
3Redirect chain length > 2Serious48%
4Hreflang reciprocity (multi-region)Critical42%
5Core Web Vitals (field data)Serious66%
6JS-rendering vs. HTML diffCritical44%
7Structured data validityModerate83%
8Broken internal linksSerious57%
9Duplicate title/meta patternsModerate69%
10Image weight & format (WebP/AVIF)Serious81%
11HTTPS & security header hygieneModerate86%

The three checks worth digging into

Eleven items on the checklist is manageable. In practice, three of them consistently produce the failures that actually move traffic on Adelaide client sites, so it is worth understanding what "correctly configured" looks like for each.

Canonical integrity — the failure mode that hides in plain sight

Every page on your site should declare exactly one canonical URL, and that URL should be the actual, indexable version of the page. Sounds trivial. In practice, four failure patterns are common and each is destructive in a different way. First, the canonical is missing — Google guesses, sometimes wrongly, especially with query-string variants. Second, it points to a 404 — the page effectively vanishes from the index because the canonical target does not exist. Third, it points to a redirect chain — indexation signal leaks over multiple hops and dilutes. Fourth, and most damaging, it crosses a protocol or subdomain boundary — HTTPS pages canonicalising to HTTP versions is a bug that reads correctly to a human eye but tells Google to index a page that should not exist. That fourth pattern is the single most common serious bug on Adelaide sites that have been through a CMS migration in the last three years.

JavaScript rendering diff — the modern site's silent killer

Modern React, Vue, and Next.js sites frequently ship an empty HTML skeleton to the first crawl and populate content only after JavaScript executes. Googlebot does render JavaScript, but it does so on a delayed second pass — which means fresh content, dynamic prices, and personalised recommendations can be days or weeks late into the index. Semalt's audit crawls every URL twice — once as raw HTML, once after full JS execution — and flags any content that appears only in the second pass. On modern SPA sites, this is where you catch pages that look complete in a browser but ship empty to search engines.

Hreflang reciprocity — the multi-region trap

For sites serving multiple English-speaking markets (AU, NZ, US, UK), hreflang errors quietly cost you rankings in your secondary markets. Semalt's check is bidirectional: it does not just verify that your en-AU page declares an en-NZ alternate — it confirms the en-NZ page reciprocates. Broken reciprocity is the number one hreflang failure in the wild, and standard audit tools frequently miss it because they only check outbound declarations.

Handing the output to engineering

The step where most agencies lose the plot is between "we ran an audit" and "the fixes shipped". Semalt closes that gap with three parallel exports: a CSV for the SEO team to track, a Jira/Linear-compatible ticket batch for engineering, and a plain-English executive summary for the client stakeholder. The Jira export is the underused one. Each ticket includes affected URL list, reproduction steps, suggested fix, estimated traffic-at-risk if left unresolved, and a linked diff view showing exactly what the crawler saw. Engineers who dislike SEO work will still action these tickets, because they read like properly-written bug reports rather than vague marketing complaints.

The recrawl-and-verify loop

Shipping a fix without confirming the fix landed is how "fixed" bugs quietly regress into the next deploy. Semalt supports on-demand recrawls of specific URLs — you do not wait for the next full weekly scan. Push the canonical correction, click "verify", get confirmation within two minutes that the crawler now sees the expected value. That tight feedback loop is worth more inside a remediation sprint than any single audit finding.

Pre-audit checklist

✓robots.txt allows the crawler user-agent
✓Semalt IPs whitelisted in WAF (Cloudflare/AWS)
✓Search Console connected (OAuth)
✓GA4 connected for traffic cross-reference
✓Crawl rate configured (10 rps default)
✓A/B experiments disabled for crawler UA

“The single most missed check is canonical to a non-indexable URL — the page canonicalises to another page that is itself blocked by robots.txt or marked noindex. Google follows the canonical, finds a page it cannot index, and drops both from the index.”

— from our internal audit playbook
🎯 Key takeaway

A "fixed" issue that is not re-verified will regress in the next deploy. The tight recrawl-and-verify loop is what turns SEO work from a project into a discipline.

What the audit does not cover

Semalt's audit is a page-and-site-level tool. It is not a log-file analyser — enterprise-scale crawl-budget work still calls for dedicated log analysers. It does not replace hands-on QA of critical user journeys. And for sites that depend heavily on server-side rendering with dynamic user state (logged-in vs. anonymous), you will still want to spot-check the important URLs manually. Knowing what a tool is not for is often as important as knowing what it is for.

Frequently asked questions

How often should we recrawl?

Full site: weekly for actively-changing sites (an e-commerce catalogue, a publisher), fortnightly for stable brochure sites. Targeted recrawls of specific URLs after a fix: immediately, then again 48 hours later once caches settle. The trap to avoid is scheduling only monthly full recrawls — a regression introduced by a deploy on the 3rd of the month should not be discovered on the 28th.

What crawl rate is safe?

Semalt's default is conservative at ~5 rps. For a modest site behind a normal WAF, 10–15 rps is safe and completes crawls two to three times faster. For sites behind aggressive bot mitigation (some banking, healthcare, or government setups), you may need to whitelist the crawler's IP range explicitly. The audit UI shows a "throttled" flag if the crawler was blocked mid-crawl, which is the diagnostic you want to see rather than a partial dataset completing silently.

Does the audit catch A/B-variant differences?

It captures a snapshot at crawl time. If your JS payload behaves differently across experiments or between logged-in and anonymous users, the audit sees one specific rendering. For A/B-critical work, either disable the experiment for the crawler user-agent or configure authenticated crawls (paid tier feature).

How do we handle findings we cannot fix?

Mark them as "accepted risk" with a written justification. The finding stays on the report so a future team knows it was considered, but drops out of the active work queue. This distinguishes real technical debt from things you have deliberately decided to live with — a distinction future-you will thank present-you for maintaining.

What is the most commonly missed check?

Consistently: canonical pointing to a non-indexable URL. Almost no other audit tool separates this from generic canonical warnings, and it accounts for a disproportionate share of the "we can't figure out why traffic dropped" cases we get called into after the fact.

Starting on your own site this afternoon

The audit module is available on Semalt's free tier for a single domain — not a crippled trial. Log in and point it at your homepage. In under fifteen minutes you will have a prioritised shortlist of what is actually costing you traffic. Whether you fix it yourself, hand it to your dev team, or bring us in for an Adelaide remediation sprint is a separate question — but the diagnosis is the essential first move.

The habit is the point

A good technical audit is not a one-time event. It is a habit. Our Adelaide clients get a full recrawl weekly, a diff-report monthly, and a state-of-the-site review quarterly. That rhythm — enabled by having one platform running unattended — is what keeps technical debt from silently accumulating between marketing campaigns. Pick a Wednesday morning. Run an audit. Fix the three most serious findings before Friday. Repeat next week. Do that for a year and you will be operating a site that is genuinely competitive on the technical foundations most of your competitors are quietly ignoring.