If you’re responsible for revenue from organic search, the fastest path to impact is to fix how your store is discovered, understood, and trusted at scale.
SEO for an ecommerce site means aligning site architecture, on-page content, structured data, and technical performance. Do this so search engines can crawl your catalog and shoppers can convert with minimal friction.
This guide moves from fundamentals to implementation—complete with decision frameworks, checklists, and platform-specific notes.
Overview
Ecommerce SEO makes product, category, and support content eligible for discovery and conversion from organic search. The pillars are architecture, content, structured data and feeds, technical performance, and measurement.
Architecture defines how URLs and internal links organize inventory. Content ensures pages satisfy intent. Structured data explains products to machines. Technical performance makes pages fast and reliable. Measurement tells you what to track and improve.
When these are coherent, rankings translate directly into qualified traffic and revenue.
This guide is for ecommerce owners, marketing leads, and technical SEO/dev partners. Ownership often breaks down as follows.
SEO leads the information architecture, on-page templates, and measurement. Developers own rendering, performance, and canonicalization. Merchandising owns taxonomies, PDP details, and inventory governance.
Each section includes pragmatic steps that help small teams ship safely and larger teams scale consistently.
We’ll prioritize work by impact-to-effort. Fix crawl traps and indexation first. Then address structured data and Core Web Vitals. Next, improve on-page relevance and internal links, followed by content expansion and digital PR.
If you only skim one section on how to do SEO for an ecommerce site, start with architecture. You can’t rank what search engines can’t efficiently crawl.
Ecommerce site architecture that scales
Architecture translates your catalog into clean, crawlable paths that match search intent. A scalable structure keeps click depth shallow. Your most important PLPs and PDPs should be within three clicks of the homepage.
Use descriptive, stable URLs and consistent canonical rules to prevent duplicates. Internal linking from navigation, breadcrumbs, and content consolidates signals and distributes PageRank to revenue pages.
Keep URLs human-readable and stable. Use /category/subcategory/ for PLPs, and /product-slug/ for PDPs.
Avoid embedding session IDs or marketing parameters in canonical URLs. Reserve parameters for controlled filtering and pagination.
For large catalogs, use hubs—brand, “best [category] for [use case],” and top subcategory pages. These capture broad intent and route users deeper.
Crawl efficiency matters because Google allocates crawl budget based on site health and importance. Redundant URLs from faceted filters, infinite scroll without paginated links, and duplicated PDPs across collections can explode crawlable pages.
This creates many low-value URLs. Use canonical tags, robots.txt disallows for non-valuable parameters, and consistent linking to keep bots focused on indexable value.
Category and collection taxonomy
Your taxonomy should reflect how shoppers search. Group by product type first, then by common qualifiers like brand, size, material, or use case.
Prioritize categories with significant search volume and margin, not just internal merchandising preferences. Each PLP needs a distinct purpose and copy that clarifies scope.
For example, “Men’s Waterproof Hiking Boots” differs from “Men’s Hiking Boots.” Clear scope reduces overlap.
Breadcrumbs reinforce hierarchy and provide structured internal links back to parent PLPs. Keep click depth shallow by adding cross-links between sibling subcategories where it helps discovery.
For example, “Also shop: Trail Running Shoes” from Hiking Boots. When categories change, update internal links, sitemaps, and redirects in one release to preserve continuity.
Faceted navigation and URL parameters
Facets help UX but can create crawl traps if every combination produces a unique URL. Decide which facets deserve indexable URLs based on search demand and uniqueness.
For example, “waterproof hiking boots” might be indexable. “In-stock” should not. Index select, high-intent combinations and deindex or consolidate thin ones.
Use this simple decision tree to govern facets:
- Does the facet reflect stable, high-demand intent (brand, key feature, material)? If yes, allow indexation and link to a crawlable URL; if no, keep non-indexable.
- Does the combination create a substantially unique product set (e.g., “women’s black leather ankle boots”)? If yes, consider an indexable static URL; if no, canonicalize to the parent category.
- Is the facet volatile (price, sort, availability)? If yes, use noindex, follow or avoid URL parameters entirely for these.
- Are parameter combinations exploding (3+ filters routinely combined)? If yes, cap exposed combinations and block crawl of non-approved parameters via robots.txt; canonicalize back to the approved parent.
After the initial rollout, monitor crawl stats and index coverage. The legacy Search Console URL Parameters tool is deprecated, so manage parameters via canonical tags, robots.txt, meta robots, and internal linking.
Audit with server logs or crawl reports. Revisit your allowlist quarterly as seasonality and demand change.
Pagination vs infinite scroll
Pagination ensures product discovery across larger PLPs. Infinite scroll improves UX but can hide deeper items from crawlers.
The safe pattern is progressive enhancement. Render server-side paginated pages (page=2, page=3…) with unique URLs and static links. Then layer infinite scroll for users.
Ensure each page has self-referencing canonicals and consistent title/H1 patterns. Link each paginated page from the PLP.
Do not rely solely on JavaScript “load more” or fragment identifiers that don’t create crawlable URLs. Google recommends providing paginated links for content discovery and clarifies ecommerce best practices for product listings so search engines can fetch all items even if users enjoy infinite scroll enhancements (see Google’s ecommerce best practices: https://developers.google.com/search/docs/specialty/ecommerce).
Test with a headless crawler and verify deep pages appear in your XML sitemaps.
Product and category page optimization checklist
PLPs and PDPs must map cleanly to searcher intent while eliminating ambiguity for crawlers. Start with titles and headings. Then add unique copy and media. Finally, reinforce trust with reviews, stock, and returns.
A single high-quality template, implemented consistently, outperforms ad hoc page-level tweaks.
Use this prioritized checklist to align on-page signals:
- Titles/H1s that include primary modifiers (brand, type, key feature) without truncation.
- Descriptive meta descriptions with a benefit + proof (rating, shipping) to improve CTR.
- Unique PDP copy (100–300 words) that clarifies use cases, specs, and differentiators.
- Index strategy for variants: one canonical parent with selectable options unless search demand warrants separate URLs.
- Optimized images (compress, modern formats) with descriptive alt text; don’t lazy-load above-the-fold hero.
- Prominent price, availability, shipping/returns, and review stars for UX and structured data consistency.
- Internal linking modules: related products, top subcategories, and complementary guides.
- Product structured data with price, availability, ratings; keep markup synced with visible content.
Revisit this checklist any time you change templates, add new categories, or roll out new merchandising rules. Measure impact via CTR changes in Search Console and PDP conversion rates segmented by organic traffic.
Titles, meta descriptions, and on-page intent mapping
Title tags and H1s should instantly confirm relevance. Map high-intent modifiers—brand, size, color, material, and use case—to titles and headings in a predictable format.
For example, “Brand Women’s Waterproof Hiking Boots | Free 2-Day Shipping.” Keep titles under ~60 characters where possible and front-load the primary term. Use meta descriptions to differentiate with benefits and social proof.
On PLPs, include a short intro that defines what’s in scope and links to subcategories or key facet pages. On PDPs, add a short paragraph above the fold that clarifies the product’s primary job-to-be-done and key specs.
This structure improves both CTR and on-page engagement, reinforcing relevance.
Unique product descriptions and variants
Manufacturer descriptions create duplication across retailers and miss your audience’s questions. Write unique, scannable PDP copy that covers fit, materials, warranties, and comparisons to adjacent models.
Use bullet specs sparingly and only after a short benefit-led paragraph.
Keep variants (size, color) on a single canonical PDP when attributes don’t change search intent. If variants have distinct demand and imagery, consider indexable variant URLs with self-referential canonicals and a clear relationship to the parent.
An example is “red velvet dress” vs “black velvet dress” with search volume. Avoid thin duplicate variant pages—either consolidate or noindex.
Images, alt text, and media
High-quality media sells products and supports accessibility and Image Search. Use descriptive filenames and alt text that explain what’s shown rather than stuffing keywords.
Serve modern formats (WebP/AVIF) and compress aggressively. Lazy-load images below the fold.
Ensure critical media and key content are in the initial HTML or quickly hydrated. Crawlers and users should not hit empty shells.
Provide a noscript image for hero assets if JavaScript fails. Avoid rendering prices or availability only after long client-side delays.
Reviews and UGC quality
Authentic reviews increase conversions and support experience signals when they are transparent and helpful. Encourage reviews that mention use cases, sizing, and product limitations.
Moderate for obvious spam or fake submissions. Display aggregate ratings on PDPs and ensure the count and average align with your structured data.
Follow the FTC Endorsement Guides for truthful, non-deceptive reviews and proper disclosures for incentives or influencer content (https://www.ftc.gov/business-guidance/advertising-marketing/endorsements-influencers-reviews). Consistency between visible reviews and structured data helps eligibility for rich results and builds trust.
Structured data and product feeds
Structured data and product feeds make your catalog machine-readable. Product structured data on PDPs enables eligibility for rich results like price, availability, and ratings. A Merchant Center product feed powers free listings and Shopping placements.
Both must be accurate and synchronized with what users see on the page.
Treat markup and feeds as a single source of truth. Use the same SKU/ID across PDPs, structured data, and feeds so systems reconcile variants and inventory correctly.
When prices, availability, or shipping change, update the PDP content, markup, and feed together. This avoids mismatches and potential enforcement.
Validation is continuous, not one-and-done. Include schema in your templates and use automated tests in staging and production.
After release, monitor rich result coverage in Search Console and feed diagnostics in Merchant Center. Catch regressions early.
Product structured data essentials
Product structured data clarifies what you sell and enables rich presentation in search. Implement markup on PDPs only (not PLPs) and include properties that reflect visible content.
- Required for eligibility: name plus either offers, review, or aggregateRating. To show price/availability, include offers.price, offers.priceCurrency, and offers.availability.
- Recommended for completeness: image, brand, sku, gtin (if applicable), description, offers.url, offers.itemCondition, shippingDetails where supported.
- Validation: test with Google’s Rich Results Test and align values with on-page content; use Schema.org/Product as the reference vocabulary.
Done well, Product structured data is eligible for rich results (https://developers.google.com/search/docs/appearance/structured-data/product) and should map to the Schema.org/Product specification (https://schema.org/Product). Keep your markup lean, accurate, and consistent with the UI.
Merchant Center feeds and Google surfaces
A high-quality Merchant Center product feed ensures your items appear across Google’s free listings and paid surfaces. Follow the product data specification for attribute formatting, include required GTINs/MPNs where available, and refresh frequently to reflect price and stock changes (https://support.google.com/merchants/answer/7052112?hl=en).
Use supplemental feeds for marketing attributes like sale_price and custom labels.
Keep landing page URLs stable and ensure they resolve to the correct variant. Critical attributes such as price and availability must match exactly.
Monitor the Diagnostics tab for item-level issues and disapprovals. Use feed rules or Content API updates to correct at scale.
Handling availability, price, and variants
Mismatch between PDP content, structured data, and feeds can reduce eligibility or trigger manual actions. Always update all three sources when price or stock changes.
Pass variant-level IDs (SKU/GTIN) in feeds and ensure the PDP renders the selected variant’s price and availability on initial load.
Where variants have separate URLs, each must reflect the correct variant in both markup and feed. Where variants live on one URL, ensure attributes change the underlying markup without delaying or hiding the correct values from crawlers.
Technical SEO for ecommerce performance
Technical SEO makes your store fast, indexable, and stable under change. Ecommerce stacks increasingly use JavaScript-heavy UIs and dynamic data. These can delay critical content for both users and crawlers.
Prioritize performance budgets, crawl control, and robust release processes to protect revenue.
Indexability comes from clean server responses, consistent canonicals, and minimal duplication. Render primary content server-side or with fast hydration.
Ensure search engines can fetch paginated PLPs, PDP details, and internal links without executing complex interactions. Test with both lab tools and field data to catch regressions before they hit customers.
Performance is a conversion lever. Small reductions in input delay and largest contentful paint on PDPs directly improve add-to-cart rates, especially on mobile.
Fixes that improve Core Web Vitals typically also cut bounce rates and improve crawl efficiency.
Core Web Vitals and mobile-first
Core Web Vitals measure real-user experience. The current targets for good UX are roughly: LCP ≤ 2.5s, CLS ≤ 0.1, and INP ≤ 200ms—with INP replacing FID as a Core Web Vital in March 2024 (https://web.dev/inp/).
Use PageSpeed Insights to combine field data and lab diagnostics for PDPs and PLPs (https://pagespeed.web.dev/).
Focus on the fastest wins:
- LCP: Serve a smaller hero image, preload key resources, and reduce render-blocking CSS/JS.
- CLS: Reserve image/video dimensions and avoid injecting banners above content.
- INP: Minimize heavy main-thread JS, defer non-critical scripts, and optimize cart/variant interactions.
Always validate changes on real devices across your top traffic regions and on 3G/4G profiles. Prioritize PDPs with highest organic revenue for the quickest ROI.
Sitemaps strategy for large catalogs
XML sitemaps guide discovery at scale. Segment by type—/sitemap_products.xml, /sitemap_categories.xml, /sitemap_blog.xml—so you can monitor coverage and refresh selectively.
Cap each file at 50,000 URLs and keep uncompressed files under 50MB. Use a sitemap index to stitch them together.
Populate sitemaps with only canonical, indexable URLs. Update lastmod when content meaningfully changes.
Price alone is optional. Availability changes can warrant updates if they impact user experience.
For fast-moving inventories, add a high-priority “recently updated” sitemap regenerated more frequently. Update the full catalog daily.
Canonicalization and duplicate content
Canonical tags consolidate signals among similar URLs from variants, collection-based paths, and tracking parameters. Use self-referencing canonicals on all indexable pages.
Point alternates back to the preferred URL. Avoid canonical chains and ensure the canonical target renders the same or broader content.
For Shopify and similar platforms, canonicalize collection-based product paths to the root product URL. For variants that don’t deserve separate indexing, keep one canonical PDP and suppress thin duplicates via noindex, follow.
For filters and sorts, either block crawl with robots.txt for non-valuable parameters or canonicalize back to the clean PLP.
JavaScript rendering and headless nuances
Headless and composable stacks demand careful rendering choices. Use server-side rendering (SSR) or static generation for PLPs/PDPs so HTML includes product details, links, and structured data on first response.
Ensure client-side hydration doesn’t replace or remove critical content seen in server-rendered HTML.
Verify rendered HTML in Search Console’s URL Inspection tool to confirm crawlers see the same content as users. If you rely on Content APIs, cache product data close to the edge to avoid slow paints.
Provide graceful fallbacks if APIs fail.
International and multi-store SEO
International ecommerce combines language, currency, and inventory realities. Your goal is to serve the right product in the right locale with the right price and shipping.
Signal relationships between equivalents to search engines. Consistent architecture and hreflang implementation prevent duplicate clusters from competing with each other.
Decide whether to structure locales by ccTLDs, subfolders, or subdomains. Subfolders are often fastest to implement while maintaining domain authority.
Keep templates consistent and translate not only copy but also units, sizing, and policy pages. Avoid auto-redirecting by IP alone.
Allow users to switch locales with clear UI and persistent preferences.
Hreflang, currency, and localization
Hreflang tags signal language- and country-specific equivalents. They should form closed, reciprocal clusters across all variants.
Implement hreflang on each PDP and PLP. Ensure canonical URLs are locale-specific within a cluster.
For global pages, consider x-default to indicate a fallback. Align currency display with the locale and surface localized inventory and shipping.
Test clusters with a crawler and validate using URL Inspection and spot checks. See Google’s guidance on localized versions for implementation nuances (https://developers.google.com/search/docs/specialty/international/localized-versions).
Regional inventory and local listings
If you operate stores or regional fulfillment, reflect local availability and pickup options. Use Merchant Center’s local inventory feeds to power Nearby and store-based surfaces.
Maintain store pages with NAP consistency, hours, and inventory callouts. Connect these pages from the main navigation or store locator so crawlers and users can find them.
Coordinate promotions and pricing with feed updates to prevent mismatches. When products are regionally restricted, prevent cross-locale indexation bleed by avoiding auto-canonicalizing to a single market.
Content strategy that converts
Commercial visibility improves when informational content earns links and funnels users into PLPs/PDPs. A programmatic content engine lets you cover buying guides, comparisons, and use-case pages that mirror how shoppers research.
Each piece should answer intent quickly, showcase inventory, and link to relevant categories and products.
Build a hub-and-spoke model. Create pillar pages for “Best [category]” and “How to choose [category].”
Support them with comparative pieces (“[Product A] vs [Product B]”) and use-case articles (“Best [category] for [activity]”). Map each article to at least one PLP and 3–5 relevant PDPs with contextual anchors.
Refresh top performers seasonally with updated picks and inventory.
Buying guides, comparisons, and programmatic SEO
Buying guides should prioritize decision criteria such as fit, materials, durability, and budget. Pair those with in-stock recommendations.
Comparisons should be honest about trade-offs so readers trust your picks. For programmatic SEO, templatize aspects like brand, material, and size range to produce consistent, unique pages at scale without thin duplication.
Use structured sections, charts translated into prose, and scannable summaries to help shoppers move fast. Always include internal links to PLPs and PDPs where users can act immediately.
Blog-to-PLP/PDP internal linking
Internal links pass relevance and authority when anchors are specific and contextually placed. From guides, link to the most relevant PLP first (e.g., “waterproof hiking boots”) and then to specific PDPs that match the article’s picks.
Avoid overstuffed link modules. Three to seven well-placed, descriptive anchors outperform generic “Shop now” spam.
Automate where sensible. Add a “Recommended in this guide” module mapped to SKUs and a PLP module for the top category.
Ensure these links are in the initial HTML and not hidden behind tabs or JS-only carousels.
Seasonal and out-of-stock strategies
Seasonality and stock volatility are part of ecommerce. Your goal is to protect rankings and keep users converting.
For temporarily out-of-stock items, keep the PDP live with clear status, expected restock dates, and in-stock alternatives. For discontinued products, 301 to the closest relevant successor or the parent PLP.
If an old page has strong links but no direct replacement, keep it live with recommendations.
Refresh seasonal hubs yearly at the same URL to accumulate equity. Update picks and dates each season.
If you retire a seasonal page with no equivalent next year, 301 to the perennial category or buying guide. Update internal links accordingly.
Link earning and digital PR for ecommerce
Links compound authority when they arise from useful content and product stories. Focus on data-led studies, expert guides with unique testing, and product-led PR such as innovations, sustainability moves, and collaborations.
Partnerships with complementary brands and clubs can also earn coverage and links.
Avoid spam tactics like mass guest posts or link exchanges. Instead, pitch journalists and niche publishers with credible angles and assets.
Provide photos, quotes, and raw data. Maintain an editorial calendar tied to product launches and seasonal peaks. Align outreach with buyer interest.
Measurement, KPIs, and SEO governance
What gets measured gets improved. Ecommerce SEO needs shared dashboards and clear QA to avoid regressions.
Track leading indicators like index coverage, CWV, and rich results visibility. Also measure lagging outcomes such as organic revenue, conversion rate, and AOV.
Align stakeholders on a quarterly roadmap. Allocate capacity to both fixes and growth.
Create a source-of-truth dashboard combining Search Console and analytics/ecommerce data. Include queries, CTR, indexing, sessions, conversion, and revenue.
Annotate major releases and algorithm updates so you can correlate changes. Institute change management. Every template or platform change should ship with pre- and post-release checks and automated monitoring.
North-star metrics and dashboards
Anchor your program on a few metrics tied to revenue. Use organic revenue, PDP conversion rate from organic, indexed valid URLs by type, and rich result impressions/clicks.
Layer in Core Web Vitals by template, crawl stats, and top query CTR to spot opportunities. Build a view by category and by device to catch mobile-specific issues early.
Use cohort analysis on newly launched PLPs/PDPs to compare performance against baselines. For content, track assisted conversions and link acquisition velocity alongside rankings, not just pageviews.
SEO QA workflows and change management
A lightweight but thorough QA workflow prevents expensive mistakes, especially on large catalogs. Treat every release as an opportunity to verify templates, structured data, and link integrity before and after shipping.
- Pre-release: validate canonical/robots/meta tags on PLPs/PDPs; test structured data in staging; confirm pagination links; crawl for duplicate titles/H1s; run CWV checks on key templates; verify redirects.
- Release: annotate dashboards; spot-check top categories and PDPs on mobile; verify sitemaps update and are reachable.
- Post-release (24–72 hours): monitor Search Console for coverage or enhancement changes; rerun crawls; check feed diagnostics for mismatches; validate server logs for unexpected crawl spikes; roll back or patch quickly if issues appear.
Document each change with owner, scope, and rollback plan. Over time, automate high-risk checks in CI/CD to catch regressions before deployment.
Prioritization roadmap: impact vs effort
Use a simple ICE or RICE framework to sequence work. Score initiatives by expected revenue impact, confidence, and effort across dev and content.
Start with high-ROI items. Fix duplicate URL patterns, paginate infinite scroll, implement Product structured data, and improve LCP on PDPs.
Then move to medium priorities. Create or refine top PLPs, add buying guides with internal links, and segment sitemaps.
Chase long-tail growth with programmatic content and digital PR. Keep capacity for maintenance (5–10%) each sprint to handle stock, redirects, and feed sync issues.
Re-score quarterly as demand shifts and new categories emerge.
Platform notes (Shopify, WooCommerce, BigCommerce)
Platforms shape your constraints and quick wins. The goal is the same—clean URLs, stable rendering, and canonical discipline. Implementation details differ by platform.
Address platform-specific duplicate patterns, template-level structured data, and performance optimizations early. This avoids rework.
Shopify collections and duplicate content
Shopify often exposes products at both /products/handle and /collections/collection-handle/products/handle. Canonicalize all collection-based product URLs to the primary /products/handle.
Ensure your theme outputs a self-referencing canonical on the product template. Avoid appending query parameters (e.g., ?variant=ID) as canonical URLs. Render the selected variant server-side where possible.
Limit tag-based collection pages to those with demand and avoid indexing sort/filter parameters. In navigation, link to canonical product URLs, not collection-scoped versions.
Ensure sitemaps list only canonical products and key collections.
WooCommerce URL patterns
Configure permalinks to produce readable, stable URLs. Consider /%product_cat%/%product%/ for products if your category structure is strong. Keep category bases short.
Remove redundant archives you don’t need, such as vendor or tag pages. Alternatively, noindex them to reduce duplication.
Audit filter plugins that add parameters. Ensure they’re either canonicalized to the base PLP or blocked from crawl if non-valuable.
Use your SEO plugin to generate segmented sitemaps for products and product categories. Keep only canonical, indexable URLs in the feed.
BigCommerce and headless considerations
On BigCommerce (Stencil or headless), prioritize SSR for PLPs and PDPs so product data and links are present in initial HTML. If you build composable front ends (e.g., Next.js), cache product JSON at the edge and hydrate quickly.
This helps avoid INP regressions on variant selection.
Dynamic facets should expose crawlable, approved URLs for important combinations while suppressing noisy parameters. Keep your Catalog API, structured data, and Merchant Center feeds in sync with stable IDs to prevent mismatches at scale.
FAQs
Teams often get stuck on edge cases that have outsized SEO impact. Here are concise answers to the most common questions so you can move forward with confidence.
- How should ecommerce sites handle out-of-stock and discontinued products without losing SEO value? Keep OOS PDPs live with status, expected restock, and alternatives; 301 discontinued items to the closest successor or parent PLP when no equivalent exists.
- What’s the safest way to implement infinite scroll for product listings so Google can crawl all items? Render paginated URLs with static links and layer infinite scroll as progressive enhancement so each page remains crawlable.
- When should variant pages get a canonical tag versus a noindex or full index? Canonicalize variants that don’t change intent; noindex thin duplicates; fully index only variants with distinct demand and unique value (imagery/specs).
- How should sitemaps be segmented for catalogs with 100,000+ URLs? Use a sitemap index with type-based files (products, categories, blog), keep each under 50,000 URLs, and refresh high-churn segments more frequently.
- What structured data is required vs. recommended on product pages to qualify for rich results? Required: name plus either offers, review, or aggregateRating; recommended: image, brand, sku/gtin, description, itemCondition, and shipping details to enhance display (https://developers.google.com/search/docs/appearance/structured-data/product).
- How do you implement hreflang for multi-country, multi-currency ecommerce stores? Create reciprocal hreflang clusters across locale-specific canonicals, align currency and inventory per locale, and add x-default where appropriate (https://developers.google.com/search/docs/specialty/international/localized-versions).
- What KPIs best reflect ecommerce SEO success beyond rankings and traffic? Organic revenue, PDP conversion rate from organic, indexed valid URLs by type, rich result visibility, and Core Web Vitals by template.
For additional implementation details: blog content can systematically pass authority by linking contextually from buying guides to PLPs and curated PDPs; Shopify can prevent duplicate collection/product URLs by canonicals to /products/ and listing only those in sitemaps; INP directly affects perceived responsiveness, and the biggest wins come from reducing main-thread JS and optimizing interactive components like variant pickers; and for legacy seasonal pages, keep perennial URLs and refresh yearly, or 301 retired campaigns to the closest evergreen category or guide to preserve equity.