v2.8.0 — Layered-nav controls and OOS rules engine
The eighth point release in v2 — and arguably the most impactful pair of features yet.
After v2.7's dashboard widget made everything visible at a glance, the obvious next question was: "great, you've shown me the bleed — what's the fix?" v2.8 ships two of the highest-impact answers.
Layered Navigation SEO controls
The single biggest crawl-budget sink on any catalog of meaningful size. With ~10 filterable attributes, layered nav can produce hundreds of thousands of crawlable URL variants from filter combinations alone — and Google will pick a tiny sample, ignore the rest, and your important URLs lose crawl priority.
The fix is one observer:
// Byte8\SeoSuite\Observer\ApplyLayeredNavRobotsObserver
public function execute(Observer $observer): void
{
if ($this->request->getFullActionName() !== 'catalog_category_view') return;
if (!$this->resolver->shouldNoindex($storeId, $this->request->getQueryValue())) return;
$this->pageConfig->setRobots('NOINDEX,FOLLOW');
}
Two modes:
noindex_any(recommended) — any non-ignored query param triggers noindex. Pair with Magento's built-in category canonical and you have full coverage with zero per-attribute confignoindex_unlisted— only filters NOT in your allow-list trigger noindex. Use when you want certain attribute filters (e.g.?color=red) to stay indexable as separate landing pages
The default ignored param list covers p, product_list_*, utm_*, gclid, fbclid, msclkid — so out of the box, only real filters trigger the noindex.
Out-of-Stock Rules Engine
Brief stockouts aren't an SEO problem. Two-month stockouts are. The Rules Engine tracks days-OOS per product per store and applies one of three configurable actions once a threshold is crossed:
noindex,follow(default) — auto-reverts when stock returnsredirect— 301 product URL → primary category URLdisable— sets product status to disabled
A daily cron does the work:
- Insert a tracking row for newly OOS products
- Delete tracking rows for restocked products (and revert noindex if applied)
- Apply the configured action to rows past the threshold
Manual override per row protects intentional stockouts (pre-orders, seasonal staples). Everything visible in a new admin grid at Marketing → SEO Suite → Out-of-Stock Tracking with a Run-Now button for one-shot triggers.
How they pair
The Index Budget Audit detects both problems — but as of v2.7 it could only recommend fixes. v2.8's out_of_stock_indexable auditor now ships an Apply Fix that calls the same meta_robots setter the OOS Rules Engine uses, and layered_nav_explosion recommendations link straight to the new layered-nav config screen.
So the workflow becomes:
- Audit detects layered-nav explosion (12 filterable attributes)
- You enable Layered Navigation SEO with
noindex_any - Filtered URLs disappear from the index over the next few weeks
- Crawl budget gets reclaimed by your important pages
Same for OOS:
- Audit detects 47 OOS-but-indexable products
- Apply Fix on the worst offenders immediately, OR
- Enable the OOS Rules Engine with
threshold_days = 14and let it run nightly
Migration
Pure additive. New tables (byte8_seosuite_oos_tracking), new config groups, new admin grid, new cron job — but all gated by config flags off by default. Existing v2.7 installs upgrade with setup:upgrade and see no behaviour change until they enable the new features.
composer update byte8io/magento-seosuite
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento cache:flush
Then enable in Stores → Configuration → SEO Suite → Layered Navigation SEO and → Out-of-Stock Rules Engine.
What's next
The roadmap from here:
- HTML sitemap + image/video XML sitemaps — the last big "table stakes" piece of the SEO surface that the suite doesn't yet cover
- Pagination SEO controls —
view-allcanonical or noindex from page 2+ - Redirects manager v2 — CSV import/export, regex redirects, automatic 404 capture
- 404 auto-healer — log-watching service that fuzzy-matches old URL → closest live URL → suggested 301
- Schema Composer — visual JSON-LD builder with live Rich Results preview
- Google Search Console integration — pull impressions/clicks per URL into the dashboard widget
Stack ranking on these will depend on what actual customer demand looks like through the rest of 2026 — open an issue or hit helo@byte8.io if any of these would unblock your project.
— The Byte8 team