Site monitoring
Continuous SEO health checks
Monitors crawl your sitemap on a schedule (or on demand), run 42 SEO health rules plus 12 AEO readiness checks against every URL, and roll results up into 0–100 SEO health and AEO readiness scores. When new critical or warning issues land on a scan, VectraSEO emails your configured recipients.
Creating a monitor
- 01Open your project and go to Site health, then fill in the Add monitor form.
- 02Enter your sitemap URL (e.g.
https://yoursite.com/sitemap.xml). If you only have a root URL, VectraSEO will try common sitemap locations. - 03Pick a schedule: daily or weekly. The scheduler checks every 5 minutes, and each project's scheduled work runs once an hour in its own 5-minute slot, so a due monitor starts within the hour.
- 04Optionally add email recipients for issue alerts — fires when new critical or warning issues appear on a scan.
- 05Hit Run Scan to kick off the first crawl manually. Scans cover up to 1,000 URLs and usually complete in 1–5 minutes.
The 54 checks
The badge is the highest severity a rule can emit. Rules that grade their findings list every level they use underneath — a redirect is a warning at one hop and critical at two — so filter on each issue’s own severity, not on the rule.
Health score formula
The score starts at 100 and decays as issues pile up. Weights are tuned so a handful of criticals tank the score faster than a long tail of info noise.
score = max(0, 100 − (critical × 15) − (warning × 5) − (info × 1))
Issue response shape
Issues belong to a scan: GET /projects/:id/monitors/:mid/scans/:sid/issues (take scan_id from /monitors/:mid/scans). Each issue carries the rule ID, severity, category (seo or aeo), URL, a short message, a recommendation, and rule-specific evidence. docs_url, fix_snippet and informational appear only when set; an informational issue is context only and never counts against the score.
The response is a bare JSON array. Paging rides in headers: while X-Next-Cursor is present (and X-Truncated: true), pass it back as ?cursor= for the next page. The last page has neither header.
[
{
"scan_id": "scan_01H...",
"rule_id": "missing_meta",
"severity": "critical",
"category": "seo",
"url": "https://yoursite.com/products/legacy",
"url_hash": "3f1c9a0b7d2e4c51",
"message": "Missing SEO tags: title, meta description",
"recommendation": "Add the missing tags to <head>. Every indexable page needs a unique <title>, a meta description, and a canonical link.",
"evidence": {
"title": null,
"description": null,
"canonical": "https://yoursite.com/products/legacy",
"missing": ["title", "meta description"]
},
"created_at": "2026-10-03T05:03:41Z"
}
]One-click fixes (live page is the source of truth)
A recommendation or health issue can be turned into a published fix, one page at a time. For a page VectraSEO publishes, the fixer reads your live page as the source of truth (not a stored copy), applies the minimal patch, re-validates it through the same quality gates as a normal publish, then republishes through your CMS adapter and requests a recrawl.
Because the patch is built on the current live version, edits you made outside VectraSEO are kept, not overwritten. If the live page can't be read or its editable content can't be isolated confidently, the fix is skipped rather than applied from an older copy, and the result tells you why. Tiers, fixers, plan requirements and every outcome are in Fix issues automatically.
Can't find what
you're looking for?
Reach out to the team. We answer every email and we read every bug report.