Faceted URLs and Canonical Confusion
An online furniture retailer has 1,200 product listing URLs indexed from color and size filters (?color=, ?size=). Product pages use manufacturer descriptions that appear on 40 other retailer sites. The blog has paginated archives, and a recent paid campaign added utm_source to internal links from the homepage. After a site restructure, 300 old product URLs return 404. Search Console shows 'Duplicate, Google chose different canonical' on 180 filter URLs and 'Crawled - currently not indexed' on 90 product pages. Organic revenue is down 15% quarter over quarter. The team has HubSpot CMS Hub Professional and no server-side access; all pages are created in HubSpot. They can edit robots.txt and redirects in HubSpot. The SEO lead wants to noindex everything with a question mark.
1. Prioritize the four issues: faceted URLs, duplicate product copy, 404s, and internal UTM links. What would you fix first and why?
Read the worked answer
Fix the 300 404s first. They are live product URLs that may have backlinks, paid links, or direct traffic; every day they return 404 is lost revenue and wasted crawl. Map each to the closest live product or category with a 301, not to the homepage.
Second, remove UTM parameters from internal links. Internal UTMs create duplicate URLs, split sessions, and can overwrite source data in analytics. Use HubSpot campaigns or a hidden form field to track the internal promotion instead.
Third, handle faceted URLs. A blanket robots.txt rule is not the answer. Use canonical tags to the base category for low-value filter combinations, and noindex only thin filter pages that should not rank, while leaving them crawlable so the tag can be seen.
Fourth, rewrite duplicate product copy. Manufacturer descriptions are a longer project; start with the 20 highest-revenue products and add unique specs, use cases, and comparison content. Canonical tags will not make duplicate product pages rank.
2. A developer proposes adding 'Disallow: /*?color=' to robots.txt. Evaluate this recommendation.
Read the worked answer
Reject the blanket disallow. Disallow: /*?color= blocks crawling but does not reliably remove URLs from the index; Google can still index a URL it cannot crawl, often without a snippet, and it cannot see a canonical or noindex directive on a blocked page. It also prevents discovery of new products linked through filtered pages.
Better: decide which filters deserve to rank. For color and size combinations with no search demand, add a canonical to the base category page. For filter pages that are thin and should never appear, use a noindex meta tag but allow crawling. Reduce internal links to every combination; expose only the filters users need. In HubSpot, set canonical URLs per page where the template supports it, and use redirects for retired filter paths. If the platform generates parameter URLs dynamically, audit the template rather than trying to patch robots.txt.
3. How would you fix the 300 404s and prevent recurrence during future restructures?
Read the worked answer
Fix: export the 300 URLs from HubSpot's 404 report or analytics; group by product category; map each to the closest live product, replacement, or category. Use 301 redirects, one hop. For discontinued products with no equivalent, redirect to the category with a clear message, not the homepage. Update internal links, paid ads, and email links pointing to old URLs.
Prevent: before any restructure, build a redirect map from old to new URLs. Keep URL paths stable when possible. Publish the new structure in staging, crawl it, and compare against the old sitemap. After launch, monitor 404s weekly for 60 days and add redirects for missed URLs. Add a launch checklist item: no page goes live without a URL owner and redirect review.