Prototype. Sample sites use fixture data on .example domains. Quick scans are a single read of a home page, not a full audit.

harbor-goods.examplePartialSample data

Started 5 Nov 2026, 11:20Duration 11m 40sProfile mobile-lab-v1Scheduled re-auditWooCommerce 9.4
ShareRe-run audit
Full audit, sample data. Sample data: a fictional .example site with fixture numbers shaped like real audit output.

Summary

Performance

0issues1 no data / failed

Lab part failed; field data shows a slow LCP. No change is claimed.

Marketing & technical

2issues1 no data / failed

Canonical still points to http://. Sitemap check timed out.

Privacy

1issue

New regression: an ad pixel fires before the visitor chooses.

Plain-language summary

Built only from the findings below. Every line names its evidence.

  1. HighPrivacyHigh confidence

    An advertising pixel request leaves before any choice. It did not in the previous run. Fix this first.

    Evidence: Request log · Based on observed requests. Not legal advice and not a certificate.

  2. MediumMarketing & technicalHigh confidence

    Canonical points to the http:// version of the home page. Worth doing in the next round.

    Evidence: HTML extract · Based on the fetched HTML and headers. It does not claim a ranking change.

  3. MediumMarketing & technicalHigh confidence

    No Content-Security-Policy. Worth doing in the next round.

    Evidence: HTTP headers · Based on the fetched HTML and headers. It does not claim a ranking change.

Performance · lab

Fixed mobile profile, three runs, median. Lab and field data are kept apart.

Check failed Two of three lab runs timed out after retries. There is no median, so no performance change is claimed.

Performance · field (CrUX)

URL-level CrUX data exists. Field data is shown even though the lab part failed.

MetricScopep75PreviousStatus
LCPThis URL3,480 ms3,390 msHas data
CLSThis URL0.060.07Has data
INPThis URL260 ms240 msHas data
LCPWhole origin3,310 ms3,300 msHas data
CLSWhole origin0.050.05Has data
INPWhole origin240 ms230 msHas data

Marketing & technical checks

Structured checks on the start URL. Not a full SEO suite.

CheckStatusPriorityConfidence
HTTP statusThe start URL answers 200 after one redirect from the www host.Pass—High confidence
HTTPSHTTPS without mixed content.Pass—High confidence
Security headersNo Content-Security-Policy.IssueMediumHigh confidence
TitleUnique title.Pass—High confidence
CanonicalCanonical points to the http:// version of the home page.IssueMediumHigh confidence
SitemapThe sitemap request timed out. That does not mean the file is missing.Check failed—High confidence
H1 & heading outlineOne H1.Pass—High confidence

Privacy · three isolated browser states

Each state starts from a clean browser. No forms, checkout or login.

Before a choice

Banner
Shown
Trackers
px.ads-network.example
Cookies
woocommerce_session (necessary), _adpx (advertising)
Note
Advertising pixel fires before a choice.

After reject

Banner
Not shown
Trackers
None
Cookies
woocommerce_session (necessary), consent=rejected
Note
No tracker after reject.

After accept

Banner
Not shown
Trackers
px.ads-network.example, stats.mockstat.example
Cookies
woocommerce_session, _adpx, mockstat_id
Note
Advertising and measurement after accept.

Privacy observations

Technical observation only. This is not legal advice and not a compliance certificate. When the purpose of a cookie cannot be decided from the evidence, its “necessary” classification is marked as uncertain.

CheckStatusPriorityConfidence
Three-state browser runAll three isolated states ran.Pass—High confidence
Consent noticeA consent banner appears with accept and reject on the first layer.Pass—High confidence
Reject as easy as acceptAccept and reject have the same weight.Pass—High confidence
Trackers before a choiceAn advertising pixel request leaves before any choice. It did not in the previous run.IssueHighHigh confidence

Fix cards

Stack-aware steps with owner, risk, rollback and how the next audit verifies it.

Medium priorityWooCommerce 9.4High confidence

Canonical

rel=canonical uses http:// on an HTTPS site.

Why it matters

Search engines may treat the http:// URL as the main one and split signals.

Owner · where

Web developer · WordPress Address and Site Address settings, SEO plugin

Steps

  1. Set both addresses in Settings → General to https://.
  2. Regenerate the SEO plugin canonical cache.

Risk · rollback

Low. Restore the previous addresses.

Verified when

Next audit: marketing.canonical passes.

Changes since the previous audit

Compared with 6 Oct 2026, 12:15. A fix counts only when this run measures it.

CheckAreaPreviousNowChange
Trackers before a choicePrivacyPassIssueRegressed
SitemapMarketing & technicalPassCheck failedNo comparable data
Lab runsPerformancePassCheck failedNo comparable data
CanonicalMarketing & technicalIssueIssueUnchanged
H1 & heading outlineMarketing & technicalPassPassUnchanged
HTTP statusMarketing & technicalPassPassUnchanged
HTTPSMarketing & technicalPassPassUnchanged
Security headersMarketing & technicalIssueIssueUnchanged
TitleMarketing & technicalPassPassUnchanged
CLS · CrUX originPerformance0.050.05Unchanged
INP · CrUX originPerformance230 ms240 msUnchanged
LCP · CrUX originPerformance3,300 ms3,310 msUnchanged
CLS · CrUX urlPerformance0.070.06Unchanged
INP · CrUX urlPerformance240 ms260 msUnchanged
LCP · CrUX urlPerformance3,390 ms3,480 msUnchanged
Consent noticePrivacyPassPassUnchanged
Reject as easy as acceptPrivacyPassPassUnchanged
Three-state browser runPrivacyPassPassUnchanged

Evidence

Stored per run with a hash and a retention date. Cookie snapshots are redacted.

EvidenceTypeHashRetentionRedaction
The start URL answers 200 after one redirect from the www host.mock://evidence/ev-run-harbor-2026-11-05-marketing.http_statusHTTP headerssha256:demo:9e8a637f2026-12-10not applicable
HTTPS without mixed content.mock://evidence/ev-run-harbor-2026-11-05-marketing.httpsHTML extractsha256:demo:79b904a12026-12-10not applicable
No Content-Security-Policy.mock://evidence/ev-run-harbor-2026-11-05-marketing.security_headersHTTP headerssha256:demo:92eae2732026-12-10not applicable
Unique title.mock://evidence/ev-run-harbor-2026-11-05-marketing.titleHTML extractsha256:demo:d444195e2026-12-10not applicable
Canonical points to the http:// version of the home page.mock://evidence/ev-run-harbor-2026-11-05-marketing.canonicalHTML extractsha256:demo:a8769f9a2026-12-10not applicable
The sitemap request timed out. That does not mean the file is missing.mock://evidence/ev-run-harbor-2026-11-05-marketing.sitemapNotesha256:demo:736d33932026-12-10not applicable
One H1.mock://evidence/ev-run-harbor-2026-11-05-marketing.h1HTML extractsha256:demo:ec051ad32026-12-10not applicable
All three isolated states ran.mock://evidence/ev-run-harbor-2026-11-05-privacy.three_stateHTML extractsha256:demo:4bd18ef22026-12-10redacted
A consent banner appears with accept and reject on the first layer.mock://evidence/ev-run-harbor-2026-11-05-privacy.consent_uiHTML extractsha256:demo:0d7f58092026-12-10redacted
Accept and reject have the same weight.mock://evidence/ev-run-harbor-2026-11-05-privacy.reject_comparableHTML extractsha256:demo:3ebe26c02026-12-10redacted
An advertising pixel request leaves before any choice. It did not in the previous run.mock://evidence/ev-run-harbor-2026-11-05-privacy.tracker_before_decisionRequest logsha256:demo:4b083dc12026-12-10redacted
Lab request timed out.mock://evidence/ev-run-harbor-2026-11-05-perf.lab.collectNotesha256:demo:0a915dec2026-12-10not applicable
CrUX url LCP: 3480mock://evidence/ev-run-harbor-2026-11-05-perf.field.url.lcpCrUX JSONsha256:demo:680b81812026-12-10not applicable
CrUX url CLS: 0.06mock://evidence/ev-run-harbor-2026-11-05-perf.field.url.clsCrUX JSONsha256:demo:e575cdda2026-12-10not applicable
CrUX url INP: 260mock://evidence/ev-run-harbor-2026-11-05-perf.field.url.inpCrUX JSONsha256:demo:243fc4072026-12-10not applicable
CrUX origin LCP: 3310mock://evidence/ev-run-harbor-2026-11-05-perf.field.origin.lcpCrUX JSONsha256:demo:31f8b3602026-12-10not applicable
CrUX origin CLS: 0.05mock://evidence/ev-run-harbor-2026-11-05-perf.field.origin.clsCrUX JSONsha256:demo:bcae1bb32026-12-10not applicable
CrUX origin INP: 240mock://evidence/ev-run-harbor-2026-11-05-perf.field.origin.inpCrUX JSONsha256:demo:835f3bc22026-12-10not applicable
before_decision: redacted list of cookies and requests.mock://evidence/ev-run-harbor-2026-11-05-privacy-before_decisionCookie snapshotsha256:demo:f1a522e92026-12-10redacted
after_reject: redacted list of cookies and requests.mock://evidence/ev-run-harbor-2026-11-05-privacy-after_rejectCookie snapshotsha256:demo:250724992026-12-10redacted
after_accept: redacted list of cookies and requests.mock://evidence/ev-run-harbor-2026-11-05-privacy-after_acceptCookie snapshotsha256:demo:a52449322026-12-10redacted