skip to content →
FIELD_MANUAL / LIVEREVISIONv1.3 · 2026.10.04Updated 2026-10-04CHAPTERS12 FILEDCH_05INTEGRATION
[ CH_05.04 / FIELD_MANUAL ]

Site monitoring

[ CH_05.04 / 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

  1. 01Open your project and go to Site health, then fill in the Add monitor form.
  2. 02Enter your sitemap URL (e.g. https://yoursite.com/sitemap.xml). If you only have a root URL, VectraSEO will try common sitemap locations.
  3. 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.
  4. 04Optionally add email recipients for issue alerts — fires when new critical or warning issues appear on a scan.
  5. 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.

RULE_ID
SEVERITY
CHECKS
CRITICAL
emits critical / warning
Flags any URL returning a 4xx or 5xx HTTP status code.
CRITICAL
emits critical / warning
Flags sitemap URLs that redirect: a single hop is a warning, a chain of two or more is critical.
CRITICAL
Flags SPA routes that return placeholder HTML without the real content — bots see an empty page.
WARNING
Flags groups of URLs serving byte-identical initial HTML.
CRITICAL
emits critical / warning
Flags pages missing a title, meta description, or canonical link.
WARNING
emits warning / info
Flags duplicate, too-short, too-long, or weak title/description/H1 combinations.
CRITICAL
emits critical / warning
Flags canonicals that are inconsistent, non-HTTPS, off-domain, redirected, or noindex.
WARNING
Flags pages missing Open Graph or Twitter Card meta tags used for link previews.
WARNING
Flags pages with zero or more than one <h1> heading.
WARNING
Flags pages missing <meta name="viewport"> for device-width mobile rendering.
INFO
Flags <img> elements shipped without an alt attribute.
INFO
Flags generic image filenames, missing dimensions, lazy LCP-image risk, and suspicious alt text.
CRITICAL
Flags pages listed in the sitemap but marked noindex.
CRITICAL
emits critical / warning
Flags HTTP X-Robots-Tag headers that noindex or restrict search appearance.
CRITICAL
emits critical / info
Flags robots.txt rules that block sitemap URLs, plus missing sitemap discovery hints.
WARNING
Flags sitemap entries that are non-HTTPS, redirected, parameterized, fragmented, or not final.
WARNING
emits warning / info
Flags internal links to broken, redirected, noindex, or non-final URLs in the scanned set.
WARNING
Flags invalid, missing-self, unsuccessful, or non-reciprocal hreflang annotations.
CRITICAL
emits critical / warning
Flags HTTPS pages that load scripts, images, or stylesheets over HTTP.
CRITICAL
emits critical / warning
Flags slow origin response times, with critical severity above the 3-second threshold.
INFO
Flags static Core Web Vitals risk signals such as page weight, script count, and render blocking.
INFO
Flags indexable pages with very little visible text content.
CRITICAL
emits critical / warning / info
Flags missing, broken, or incomplete schema.org JSON-LD.
WARNING
Flags pages missing a valid html lang attribute.
WARNING
Flags meta refresh redirects that can confuse crawlers and users.
WARNING
Flags viewport settings that disable user zoom or scaling.
WARNING
Flags vague link labels such as "click here" that hide destination intent.
WARNING
Flags links that are not crawlable anchors with usable href values.
INFO
Flags pages missing an HTML doctype declaration.
INFO
Flags pages missing an early character-set declaration.
INFO
Flags duplicate element IDs that break labels, anchors, and assistive technology.
INFO
Flags iframes without descriptive title attributes.
INFO
Flags form controls without accessible labels.
INFO
Flags buttons and links without accessible names.
INFO
Flags image inputs without alt text.
INFO
Flags heading-level jumps that make document structure harder to parse.
INFO
Flags positive tabindex values that create unexpected keyboard order.
INFO
Flags pages missing a main landmark.
CRITICAL
emits critical / warning
Probes page links and flags genuinely broken internal and external destinations.
WARNING
emits warning / info
Flags product pages missing merchant-listing structured-data fields.
WARNING
Flags 200-OK pages that look like not-found or unavailable content.
WARNING
Flags duplicate titles and descriptions across scanned pages.
CRITICAL
Checks whether the page has extractable answer-like copy for AI summaries.
WARNING
Checks for concise answer blocks near headings and key questions.
WARNING
Checks whether brand, organization, and topic entities are named clearly.
INFO
Checks whether likely user questions are answered directly on the page.
INFO
Checks for citations, sources, or evidence that support factual claims.
WARNING
Checks for visible update dates and machine-readable freshness signals.
WARNING
Checks for author, publisher, or organization attribution.
WARNING
Checks whether canonical and citation-target signals agree.
INFO
Checks whether main content is clearly separated from navigation and boilerplate.
INFO
Checks for optional speakable or answer-friendly structured data.
INFO
Checks for llms.txt discovery and basic readability.
WARNING
Checks whether robots.txt blocks common AI answer-engine crawlers.

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.

formula.txt
score = max(0, 100 − (critical × 15) − (warning × 5) − (info × 1))
[ EXAMPLE_A ]
2·crit + 5·warn + 12·info
=
33
[ EXAMPLE_B ]
0·crit + 2·warn + 3·info
=
87
[ EXAMPLE_C ]
0·crit + 0·warn + 0·info
=
100

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.

issue.json
[
  {
    "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.

[ END_OF_MANUAL ]
[ NEED_HELP? ]

Can't find what
you're looking for?

Reach out to the team. We answer every email and we read every bug report.