Skip to content

Spec: SEO Monitoring

Meta: this document is created by developers for developers and for LLMs, so anyone can feed this doc to LLM and have a perfect context to get answers to almost any questions related to SEO monitoring after the v5/Rebirth release.

  • Date: March 2026
  • Status: Draft
  • Decision makers: Mads (CEO), Jens (Dev), Alies (Dev)

_

High-level overview

The v5/Rebirth release (2026-03-02) introduced several changes that can impact SEO performance:

  1. Domain change: www.interaction-design.orgixdf.org
  2. URL changes: restructured URLs across the platform
  3. JSON-LD structured data: added/updated Schema.org markup
  4. Web Vitals changes: frontend changes affecting Core Web Vitals (LCP, CLS, INP)

This spec defines what to monitor, where to monitor it, and what action to take when metrics degrade.

Slack context: SEO structured data thread (Mads, Feb 2026)


Seo Module (app/Modules/Seo/)

The Seo module handles SEO metadata, URL redirects, OG images, and sitemap generation.

Key models:

  • SeoMeta — polymorphic SEO title/description/image for Course, Masterclass, Tag, TemplateBundle, Article (table: seo__seo_meta)
  • OpenGraphImage — polymorphic OG image storage for Article, Course, LocalGroup, Masterclass, Meetup, Member, Tag (table: seo__open_graph_images)
  • UrlRewrite — legacy path → redirect path mappings (table: seo__url_rewrites), manageable via Nova

URL redirect pipeline (404 → app/Exceptions/Handler.phpfindRedirection()):

On 404, the app runs a pipeline of handlers to find a redirect:

  1. ConvertToLowerCase — normalize to lowercase
  2. RemoveUnicodeCharacters — strip invalid Unicode (crawler artifacts)
  3. TrimRequestedUrl — remove legacy patterns (printerfriendly/, .ics, /trackback)
  4. DeprecatedCourseRedirectHandler — hardcoded old course slug mappings
  5. HandleUsingEloquentRedirections — database lookup via UrlRewrite model
  6. PublicProfileRedirectHandler — slug → member profile route
  7. ConferencesRedirectHandlerreferences/conferencesliterature.conferenceSeries.index
  8. AuthorsRedirectHandlerreferences/authorsliterature.authors.index

All redirects return 301 Permanent with query params forwarded.

Sitemap generation (config/ixdf_sitemap.php):

11 sitemap plugins at /sitemap/{key}.xml: pages, courses, masterclasses, articles, books, book-chapters, topic-definitions, local-groups, authors, members, job-postings.

Health check: CheckDomainRedirections artisan command validates that old domains (interactiondesign.org, www.interactiondesign.org, interaction-design.org, ixdf.io) all redirect to https://ixdf.org/.

JSON-LD Structured Data (Schema.org)

Implemented as Blade partials (resources/views/pages/*__schemaMarkup.blade.php):

Schema TypePageBlade Partial
Course + CourseInstance + ScheduleCourse detailcourse/show__schemaMarkup
BlogPosting + WebPage + PersonArticle detailpublication/articles/show__schemaMarkup
BreadcrumbListAll pages with breadcrumbsbreadcrumbs__schemaMarkup
Organization + WebSiteHomepagehome/__home/schemaMarkup
FAQPageFAQ pagefaq/index__schemaMarkup
JobPostingJob board detailjobPostings/show__schemaMarkup
EventMasterclass detailmasterclasses/show__/schemaMarkup
EventMeetup detailmeetups/show__/schemaMarkup

Mads' directive (Feb 2026): Schema markup is "mission-critical" for the rebirth launch. Use the Schema Builder Chrome extension to validate and discover missing fields. Reference competitor implementations (e.g., Udemy course pages) for best practices. Key gaps identified by Mads:

  • Course schema was missing name, description, provider fields
  • Should include EducationalAudience and EducationalOrganization types
  • IxDF has a Wikipedia page — structured data should reference it (like Udemy does via sameAs)

Monitoring Areas

1. Domain Migration (interaction-design.org → ixdf.org)

What can go wrong:

  • Google not indexing ixdf.org pages while de-indexing interaction-design.org
  • Loss of backlink equity during the transition
  • 301 redirects not being followed or misconfigured
  • Old domain pages still ranking instead of new domain equivalents
  • Canonical tag mismatches between old and new domains

What to monitor:

MetricToolTargetAction if Degraded
Indexed pages on ixdf.orgGoogle Search Console (GSC)Steady increase over 4-8 weeksInvestigate crawl errors
Indexed pages on interaction-design.orgGSCSteady decreaseVerify 301 redirects
Crawl errors (404, 5xx)GSC<1% of crawled URLsFix broken redirects
301 redirect chain lengthSemrush / manual spot checksMax 1 hopConsolidate redirect chains
Organic traffic (total)Google Analytics 4 (GA4)No drop >10% week-over-weekInvestigate top losing pages
Organic clicks + impressionsGSCCompare old+new domain combinedCheck redirect coverage

Key actions:

  • Verify ixdf.org sitemap is submitted in GSC
  • Confirm interaction-design.orgixdf.org 301 redirects are in place for all indexed URLs
  • Use GSC "Change of Address" tool if not already done
  • Monitor both properties in GSC during transition (keep the old property active)

2. URL Changes

What can go wrong:

  • Old URLs returning 404 instead of redirecting
  • Internal links still point to old URLs (soft 404 / redirect chains)
  • URL parameters or query strings aren’t forwarded correctly
  • Sitemap containing old URLs

What to monitor:

MetricToolTargetAction if Degraded
404 errorsGSC Coverage reportNo new 404s for previously indexed URLsAdd missing redirects
Redirect coveragenginx logs / app logsAll old URLs return 301Fix missing redirect rules
Internal links to old URLsSemrush Site Audit0 internal links to old URLsUpdate Blade templates / content
Sitemap validityGSC Sitemaps reportAll URLs return 200Regenerate sitemap

3. JSON-LD Structured Data

What can go wrong:

  • Invalid or incomplete Schema.org markup
  • Rich results disappearing from SERPs
  • Structured data warnings/errors in GSC

What to monitor:

MetricToolTargetAction if Degraded
Structured data errorsGSC Enhancements report0 errorsFix invalid markup
Structured data warningsGSC Enhancements reportDecreasing trendAddress warnings
Rich result impressionsGSC Performance (Search Appearance)Stable or increasingVerify markup on affected pages
Schema validationSchema.org Validator / Rich Results TestAll pages passFix markup

Key structured data types to validate (all implemented as Blade __schemaMarkup partials):

  • Course + CourseInstance + Schedule — course detail pages (check: name, description, provider, EducationalAudience)
  • BlogPosting + Person — article/literature pages
  • Organization + WebSite — homepage (check: sameAs includes Wikipedia page)
  • BreadcrumbList — all pages with breadcrumbs
  • FAQPage — FAQ page
  • JobPosting — job board detail pages
  • Event — masterclass and meetup detail pages

Validation approach (per Mads): use Schema Builder Chrome extension on each page type and compare against competitors (e.g., Udemy course pages) to identify missing fields.

4. Core Web Vitals

What can go wrong:

  • LCP regression from new layout/assets
  • CLS shifts from dynamically loaded content or new components
  • INP degradation from new JavaScript or heavier interactivity

What to monitor:

MetricToolTargetAction if Degraded
LCP (Largest Contentful Paint)GSC CWV report, GTmetrix, Catchpoint<2.5s (Good)Optimize critical rendering path
CLS (Cumulative Layout Shift)GSC CWV report, GTmetrix, Catchpoint<0.1 (Good)Add explicit dimensions, reduce layout shifts
INP (Interaction to Next Paint)GSC CWV report, GTmetrix, Catchpoint<200ms (Good)Profile and optimize event handlers
Pages with "Poor" CWVGSC Core Web Vitals report0 pages in "Poor"Prioritize worst offenders

Key pages to check (based on sitemap plugins and structured data):

  • Homepage (/)
  • Course pages (/courses/*)
  • Article/literature pages (/literature/*)
  • Topic definition pages (/topics/*)
  • Masterclass pages (/masterclasses/*)
  • Job board pages (/career/*)
  • Local group pages (/local-groups/*)
  • Member profiles

Domain Migration Monitoring Timeline

Pre-launch Baseline (Week -1 to Day 0)

ActionTool
Snapshot indexed page count for interaction-design.orgGSC
Snapshot keyword rankings for top 50 pagesSemrush
Snapshot CWV scores for key page templatesGTmetrix
Verify ixdf.org GSC property exists and sitemap is submittedGSC
Run CheckDomainRedirections artisan commandApp CLI
Record rich results count by type (Course, Article, FAQ, etc.)GSC Search Appearance

Days 1-14 (Critical Period)

What to monitorToolFrequencyRed flag
Crawl stats (pages crawled/day) on both domainsGSCDailyGooglebot stops crawling ixdf.org
Index coverage on ixdf.orgGSCDailyNot growing
Index coverage on interaction-design.orgGSCDailyNot shrinking (redirects not working)
404 errorsGSCDailySpike >50 new 404s
Organic clicks + impressions (both domains combined)GSCDailyDrop >15% vs pre-migration baseline
Keyword rankings for top 50 pagesSemrushDailyPosition drops >5 for high-traffic terms
Server response codes for old URLsnginx logs / New RelicDailyAny old URL returning 200 instead of 301
Googlebot crawl of ixdf.org URLsnginx log analysis (filter Googlebot UA)DailyGooglebot not visiting new URLs

Weeks 3-8 (Stabilization)

What to monitorToolFrequencyRed flag
Organic traffic trendSemrush + GSCWeeklyNot recovering to pre-migration levels
Backlink profile shift to ixdf.orgSemrushWeeklyBacklinks not transferring to new domain
Rich results countGSC Search AppearanceWeeklyFewer rich results than baseline
Structured data errorsGSC EnhancementsWeeklyNew errors appearing
CWV assessmentGSC CWV reportWeeklyPages moving from "Good" to "Needs Improvement"
Sitemap submitted vs indexed ratioGSC SitemapsWeeklyRatio declining

Month 3+ (Long-term)

What to monitorToolFrequency
interaction-design.org index count approaching zeroGSCMonthly
Keyword ranking parity vs pre-migration baselineSemrushMonthly
Backlink profile fully on ixdf.orgSemrushMonthly
CWV stable across all page templatesGTmetrix + CatchpointMonthly

Regular SEO Health Monitoring (Ongoing)

FrequencyActionTool
Always-onServer response times, error rate alertingNew Relic
Always-onJS error alerting (affects INP, CLS)BugSnag
DailyCrawl errors, 404 spikes, indexing anomaliesGSC
WeeklyKeyword ranking changes, organic traffic trendsSemrush
WeeklyCWV lab scores for key page templatesGTmetrix
WeeklyStructured data errors/warningsGSC Enhancements
MonthlyFull site audit (broken links, redirect chains, internal linking)Semrush Site Audit
MonthlyCWV field data trends, page experience reportGSC CWV report
MonthlyBacklink profile healthSemrush
QuarterlyCompetitor structured data comparison (Udemy, Coursera)Schema Builder extension

Tools

ToolRegular SEODomain MigrationWhat it covers
Google Search Console (GSC)YesYesIndexing, crawl errors, CWV field data, structured data, search performance. Properties: ixdf.org + interaction-design.org
SemrushYesYesKeyword rankings, organic traffic trends, backlink audit, site audit, competitor analysis. Set up alerts for ranking drops >5 positions on top 20 keywords
GTmetrixYesLab CWV scores, performance waterfall, historical page speed trends
Catchpoint WebPageTestYesYesSynthetic CWV monitoring from multiple geos (use US-East to match infra), filmstrip for visual regressions, TTFB
New RelicYesYesServer response times, error rates, throughput — ties to TTFB and crawl budget
BugSnagYesJS errors that break interactivity (affects INP, CLS)
nginx log analysisYesFilter for Googlebot UA to see what Google actually crawls. Critical during migration — GSC data has 2-3 day delay, logs are real-time

Current Gaps

  1. Googlebot log analysis — parse nginx access logs filtering for Googlebot UA. Count requests to ixdf.org vs redirect responses. This is the only real-time view of how Google sees the migration (GSC data lags 2-3 days). Can be a simple daily cron job.
  2. Semrush ranking alerts — set up automated alerts for ranking drops >5 positions on top 20 keywords. GSC doesn't alert, so this is the early warning system.
  3. Catchpoint synthetic availability checks — set up external synthetic checks for key landing pages from US-East (same region as infra). If Googlebot hits 5xx during a crawl, it can de-index pages.

Open Questions

  1. Has the GSC "Change of Address" tool been used for interaction-design.orgixdf.org? If not, do it ASAP.
  2. Do we have a full redirect map? A mapping of all indexed interaction-design.org URLs to their ixdf.org equivalents.
  3. Which pages had rich results before v5? Baseline needed to detect rich result loss.
  4. CWV baseline before v5? Need pre-launch CWV data to detect regressions.
  5. Googlebot log analysis setup — do we have an easy way to filter nginx logs by Googlebot UA, or do we need to build this?
  6. Semrush plan — does our plan include Log File Analyzer and automated ranking alerts?