Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Not on My Watch! Catching Technical SEO Regress...

Not on My Watch! Catching Technical SEO Regressions and Rendering Disasters in CI

One of the elephants in the room for our industry is that most SEO testing still happens in production. But because SEO validation is typically siloed from engineering, we often rely on luck to catch issues before they go live. This session reframes SEO from a reactive checklist into a system of automated SEO guardrails. Learn how to simulate Googlebot-like rendering (including an extended viewport) within a CI/CD workflow to catch regressions and block the build before it ships. Stop testing in production. Start shipping with confidence.

Avatar for Estela Franco

Estela Franco

April 24, 2026

More Decks by Estela Franco

Other Decks in Marketing & SEO

Transcript

  1. Lap 1: Code ships Lap 4: SEO team notices traffic

    drop Lap 5: Root cause identified Lap 7: Fix deployed Lap 30+: Rankings maybe recover ESTELA FRANCO @guaca.bsky.social @guaca
  2. ESTELA FRANCO @guaca.bsky.social @guaca { "pages": [ { "path": "/",

    "template": "home", "seo": { "metadata": { "title": { "enabled": true, "severity": "warning", "value": "Home | Site Name" }, "h1": { "enabled": true, "severity": "warning", "value": "Welcome to Our Site" }, "canonical": { "enabled": true, "severity": "warning", "value": "/" }, "metaRobots": { "enabled": true, "severity": "warning", "value": "index, follow" }, "metaDescription": { "enabled": true, "severity": "warning", "value": "The best place for SEO guardrails." } } } }, { "path": "/products/my-cool-product", "template": "product", "seo": { "metadata": { "title": { "enabled": true, "severity": "warning", "value": "My Cool Product | Site Name" }, "h1": { "enabled": true, "severity": "warning", "value": "My Cool Product" }, "canonical": { "enabled": true, "severity": "warning", "value": "/products/my-cool-product" }, "metaRobots": { "enabled": true, "severity": "warning", "value": "index, follow" }, "metaDescription": { "enabled": true, "severity": "warning", "value": "The best cool product you can find." } } } } ] }
  3. ESTELA FRANCO @guaca.bsky.social @guaca { "pages": [ { "path": "/",

    "template": "home", "seo": { "metadata": { "title": { "enabled": true, "severity": "warning", "value": "Home | Site Name" }, "h1": { "enabled": true, "severity": "warning", "value": "Welcome to Our Site" }, "canonical": { "enabled": true, "severity": "warning", "value": "/" }, "metaRobots": { "enabled": true, "severity": "warning", "value": "index, follow" }, "metaDescription": { "enabled": true, "severity": "warning", "value": "The best place for SEO guardrails." } } } }, { "path": "/products/my-cool-product", "template": "product", "seo": { "metadata": { "title": { "enabled": true, "severity": "warning", "value": "My Cool Product | Site Name" }, "h1": { "enabled": true, "severity": "warning", "value": "My Cool Product" }, "canonical": { "enabled": true, "severity": "warning", "value": "/products/my-cool-product" }, "metaRobots": { "enabled": true, "severity": "warning", "value": "index, follow" }, "metaDescription": { "enabled": true, "severity": "warning", "value": "The best cool product you can find." } } } } ] }
  4. ESTELA FRANCO @guaca.bsky.social @guaca { "pages": [ { "path": "/",

    "template": "home", "seo": { "metadata": { "title": { "enabled": true, "severity": "warning", "value": "Home | Site Name" }, "h1": { "enabled": true, "severity": "warning", "value": "Welcome to Our Site" }, "canonical": { "enabled": true, "severity": "warning", "value": "/" }, "metaRobots": { "enabled": true, "severity": "warning", "value": "index, follow" }, "metaDescription": { "enabled": true, "severity": "warning", "value": "The best place for SEO guardrails." } } } }, { "path": "/products/my-cool-product", "template": "product", "seo": { "metadata": { "title": { "enabled": true, "severity": "warning", "value": "My Cool Product | Site Name" }, "h1": { "enabled": true, "severity": "warning", "value": "My Cool Product" }, "canonical": { "enabled": true, "severity": "warning", "value": "/products/my-cool-product" }, "metaRobots": { "enabled": true, "severity": "warning", "value": "index, follow" }, "metaDescription": { "enabled": true, "severity": "warning", "value": "The best cool product you can find." } } } } ] }
  5. ESTELA FRANCO @guaca.bsky.social @guaca Googlebot Mobile UA Configuration const GOOGLEBOT_MOBILE_UA

    = 'Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P)' AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.6778.69 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)'; const googlebotUse = { channel: 'chrome', userAgent: GOOGLEBOT_MOBILE_UA, viewport: { width: 412, height: 732 }, deviceScaleFactor: 2.625, isMobile: true, hasTouch: true, };
  6. ESTELA FRANCO @guaca.bsky.social @guaca Canonical Misdirection Meta Robots Trap Google

    Shopping Disaster H1 Fallback Patterns Non-crawlable Links Images in srcset fail
  7. ESTELA FRANCO @guaca.bsky.social @guaca Shared Ownership Agree on Checks and

    sample size … and Severity SEO Lanes and Branches Test URLs Configuration Kill the Build workflow approval
  8. Broken Canonical Wrong Meta Robots Broken Product Structured Data Rendering

    Issues And more… ESTELA FRANCO @guaca.bsky.social @guaca