Website Best-Practices Audit

{{SITE_NAME}}

{{SITE_URL}}
{{OVERALL_GRADE}}overall · {{CRIT_N}} critical, {{WARN_N}} warnings, {{OPP_N}} opportunities
Audited {{DATE}}
Scope: SEO · structured data · performance & Core Web Vitals · analytics · security · ad tech · links · accessibility · WP stack
Environment: {{ENV_NOTE}}
🌿 Generated with Understory Trace — server-side sight for Claude in Chrome · Orchard Grove Media

Executive summary

What we checked, what we found, and where to start. Findings measured in a single browser session are lab data — pair with PageSpeed Insights / CrUX field data for real-user Core Web Vitals.

{{CRIT_N}}Critical
{{WARN_N}}Warnings
{{OPP_N}}Opportunities

Top concerns

  1. {{TOP_1}}
  2. {{TOP_2}}
  3. {{TOP_3}}
CategoryGradeHeadline
SEO & indexationNeeds work{{...}}
Structured dataGood{{...}}
Performance & CWVAt risk{{...}}
Analytics & trackingNeeds work{{...}}
SecurityAt risk{{...}}
Ad techNeeds work{{...}}
Links & crawlGood{{...}}
AccessibilityNeeds work{{...}}
Architecture & stackNeeds work{{...}}

1 · SEO & indexation Needs work

Titles, meta, canonicals, robots, sitemap, headings, and crawl efficiency across the page-type matrix.

Critical

Canonical points to the homepage on every page

What
Every template emits <link rel="canonical" href="https://site/"> instead of a self-referential URL — telling Google every page is a duplicate of the home page.
Evidence
Rendered <head> on the post & archive templates
Owner
SEO plugin — canonical setting
Fix
Enable self-referential canonicals; confirm per template.
screenshot
Screenshot embedded as a data: URI so the PDF is self-contained.
Opportunity

Thin tag/param archives waste crawl budget

What
Faceted ?s= and paginated tag archives are crawlable and indexable.
Evidence
robots.txt + sitemap + SEO plugin taxonomy settings (/option)
Fix
noindex thin archives; block search-result URLs in robots.txt.

3 · Performance & Core Web Vitals At risk

Lab measurements (one device/run) plus the server-side cause behind each. Field data: run PageSpeed Insights for CrUX.

Lab CWV (home): LCP {{LCP}} · CLS {{CLS}} · INP {{INP}} · TTFB {{TTFB}}. Thresholds: LCP < 2.5s, CLS < 0.1, INP < 200ms.
Critical

Search TTFB is 7.2s — one SQL query is 5.7s of it

What
The search template's server response is dominated by a single WP_Query MySQL LIKE scan.
Evidence
Understory Trace capture — database.slowest (5.7s) tied to the 7.2s TTFB
Owner
Core search / DB
Fix
Add a search index — SearchWP, Relevanssi, or ElasticPress.
Warning

Layout shift from injected ad slots

What
Ad slots don't reserve height, causing CLS as ads load.
Evidence
In-browser layout-shift observer + screenshot
Fix
Reserve min-height per ad slot; lazy-load below-fold ads.

5 · Security At risk

Response headers, info leakage, config posture, and known plugin CVEs.

Critical

10 plugins carry known CVEs (5 High)

What
AdRotate (CVSS 8.8), Advanced Ads, Forminator, Ad Inserter Pro, Easy Social Share — installed versions are known-vulnerable.
Evidence
GET /vulnerabilities (WPVulnerability.com)
Fix
Update the affected plugins; AdRotate is many versions behind.
Warning

Missing HSTS and Content-Security-Policy headers

What
The document response omits Strict-Transport-Security and Content-Security-Policy.
Evidence
Response headers (network panel); WP-sent vs edge confirmed via the plugin
Fix
Add HSTS at the edge; introduce a report-only CSP, then enforce.

Methodology & scope

How this audit was produced and what to keep in mind.

Generated with 🌿 Understory Trace by Orchard Grove Media. Findings are a point-in-time snapshot; re-run after changes to confirm.