SEO monitoring
XICTRAQ continuously checks the most important on-page SEO indicators: title and meta description, heading hierarchy, canonical/meta robots/hreflang, OpenGraph and Twitter Card, JSON-LD structured data, broken links, sitemap and robots.txt plus the Lighthouse SEO score. The SEO tab of each website bundles it all. Keyword position tracking with a visibility index is assigned to the Business plan but not yet enabled: keywords can be added, but positions are not measured yet.
# SEO score & findings
Lighthouse SEO
92/100
H1-Tags
1
exactly one
Sitemap URLs
412
Broken Links
2
Google search result preview
https://www.xictraq.com/
XICTRAQ — Website-Monitoring, Compliance & Analytics SaaS fü…r DE-KMUs
Uptime, SSL, Security-Header, BFSG/WCAG, DSGVO-Compliance, cookieless Analytics, Session-Recording und A/B-Testing — alles in einem Dashboard, in Deutschland ge…hostet.
Truncated: 9 title chars · 7 description chars
Technical meta tags
2h agoCanonical-URL
https://www.xictraq.com/
Self-referential (correct)
html lang
de
Meta-Robots
index, follow
Hreflang
2 languages: de, en
OpenGraph (Facebook / LinkedIn)
CompleteTwitter Card / X
CompleteStructured data (Schema.org)
JSON-LD hierarchy — how Google interprets the relations.
Heading hierarchy
1 issuesHierarchy jump: H2 → H4 (level 3 skipped)
↳ "Brauche ich Programmierkenntnisse?"
Full sequence (11 headings)
Images
Links
Tracked keywords (5)
Content snapshots
3 pages/
Title: XICTRAQ — Startseite
H1: Website-Monitoring ohne Cookie-Banner
Hash: a1b2c3d4e5f67890…
/preise
Title: Preise — XICTRAQ
H1: Vier Pläne. Transparent. Jederzeit kündbar.
Hash: deadbeef12345678…
/funktionen
Title: Funktionen — XICTRAQ
H1: 13 Monitoring-Module in einem Dashboard
Hash: cafe12345678abcd…
Broken Links (2)
# What XICTRAQ checks
Broken-link check
From the rendered HTML of the monitored page the daemon reads all same-domain links (<a href>) and checks them via HEAD request. Up to 50 deduplicated internal links are checked, each with a 5 s connect and 10 s total timeout and up to 5 redirect hops. A link counts as broken only when the status code is ≥ 400. If the request does not complete at all, it is retried once individually after a pause; if it still returns nothing, the link is reported separately as not assessable — for a link on the same domain whose page was just read, that is always a transport problem, not a finding about the target. Anchor, mailto:, tel: and javascript: links are ignored. The result lands in the broken_links structure (broken_count, total_checked, ohne_antwort_count, plus url + status per hit) and is listed in the SEO tab. This is a per-page sample, not a full site crawl. Interval: Free every 24 h, paid every 12 h.
Meta tags, OpenGraph & SERP preview
Title length (green range 30–60 chars), meta description (green range 80–160 chars), OpenGraph (og:title, og:description, og:image, og:url, og:type, og:site_name, og:locale) and Twitter Card tags (card, title, description, image, site, creator). OpenGraph and Twitter Card each report a complete flag once title, description, image (and the URL for OG) are present. The SERP preview cuts the title at 60 and the description at 160 chars and renders the cut tail struck through — so you see exactly which characters disappear in the real Google result listing.
Indexability: canonical, meta robots, hreflang & HTML lang
The SEO tab reads the canonical URL (with self-reference detection: does the canonical point at the checked URL itself?), the meta-robots directive (raw plus the flags noindex, nofollow, noarchive — a noindex is flagged red as an indexing blocker), the html lang attribute and all hreflang alternates (count and language list, up to 20). This surfaces accidental noindex switches, missing or foreign-pointing canonicals and incomplete language links before they cost rankings.
Heading hierarchy validator
H1–H6 are counted and captured as a sequence in document order. The validator reports four finding kinds: no H1 (critical — required for SEO and accessibility), multiple H1 (warning), first heading not an H1 (warning) and hierarchy jumps such as H2 → H4 with a skipped level (warning). heading_hierarchy_ok is only true when none of these occur. This doubles as a WCAG signal because screen readers follow the heading structure.
Images, alt text & modern formats
The daily SEO tab counts all <img> tags and computes alt-text coverage as a percentage (with_alt / total). The manual scan at /app/scan goes further: it additionally counts lazy-loaded images (loading="lazy“) and detects modern-format usage (occurrence count of .webp and .avif in the HTML). Missing alt text is both an SEO and an accessibility finding.
Sitemap depth & robots.txt
The daily run fetches /sitemap.xml, counts the contained URLs and detects whether a sitemap index (sitemap-of-sitemaps) is present — for an index, up to 50 child sitemaps and up to 3,000 URLs are collected. HTML soft-404 responses (200 with HTML instead of XML) are treated as unreachable. /robots.txt is fetched and checked for a site-wide block: only a Disallow: / under User-agent: * counts as a full block, and an Allow: / in the same group overrides it again (per Google's spec). Deeper sitemap signals come from the manual scan at /app/scan: it detects Google News sitemaps and assesses lastmod freshness — if the newest entry is older than 180 days, the sitemap is treated as stale (info hint).
Structured data & schema coverage
JSON-LD blocks are shown as a tree and checked against the required fields per Schema.org type. The daily SEO tab captures the JSON-LD blocks and their types. Beyond the established types, the manual scan at /app/scan recognises and completeness-checks JobPosting, HowTo, Person (E-E-A-T / author signal), Speakable and DefinedTerm — and deepens LocalBusiness: geo/GeoCoordinates, openingHours(Specification), areaServed, telephone and priceRange are inspected. Reported are the present types (types_present), rich-result eligibility (rich_result_eligible) and the missing fields per type. This strengthens rich snippets and visibility in AI / GEO answers. Findings are info/low hints and do not hard-change the score.
Fonts & CLS signal
As a companion signal to the Core Web Vitals, the manual scan at /app/scan evaluates font loading from inline CSS: it detects @font-face rules, font-display and metric overrides (size-adjust, ascent-override). A missing font-display or metric override indicates possible layout shift (CLS) caused by fonts loading in late. The finding is an info/low hint complementing the measured CLS value.
Keyword rank tracking & visibility index (not yet enabled)
The daily SERP query is not enabled yet: keywords can be added, but positions are not measured yet. Once it is enabled, the following applies. In the SEO tab of each website you add keywords with a country and optional search volume. A dedicated daily cron queries the Google SERP position per keyword and stores it historically. Shown are the current position, the trend versus the last reading older than 24 hours (spots gained/lost), a Top-10 marker, detected SERP features (answer box, knowledge graph, people-also-ask) and the top competitor domains. The aggregated visibility index (0–100) weights each position via a CTR curve (position 1 counts most, from position 11 it is zero) and — if provided — by search volume. A 30-day history shows the average position per day; days without a measurement stay empty instead of passing as a zero. A failed SERP query is labelled as such (“check failed”) and does not overwrite the last measured position — it is kept distinct from “not in the top 100”, which would otherwise look identical. Keyword quota: 50 on the Business plan, 500 on the Agency plan.