Magento SEO
How to do SEO on Magento (Adobe Commerce / Magento Open Source) — taming layered navigation and parameter duplication, URL rewrites, the missing JSON-LD problem, the Magento 1 vs 2 split, and the controls that actually move the needle on a Magento store.
1 evidence signal on this page
- Related live toolFaceted Navigation Auditor
Magento SEO is mostly damage control on two duplicate-content generators: layered navigation and configurable/simple product variants, both of which need canonical + noindex handling. Get the version straight first — Magento 1 is end-of-life (June 2020); Magento 2 ships as paid Adobe Commerce, free Magento Open Source, or (since June 2025) the separate Adobe Commerce as a Cloud Service SaaS product, which drops the Luma theme entirely. Magento manages SEO-friendly URLs via the url_rewrite table, but does NOT emit JSON-LD schema by default — that takes an extension or custom dev.
Evidence for this claim Google warns that faceted navigation can generate very large URL spaces and consume crawling resources. Scope: Google crawling guidance applied to Magento filtering; not a platform-specific penalty. Confidence: high · Verified: Google Search Central: Faceted navigationTL;DR — Magento SEOMagento SEO is optimizing a store built on Magento — now Adobe Commerce (paid) or Magento Open Source (free), both running the Magento 2 codebase — to rank in organic search. The defining challenge is layered navigation (faceted filtering), which can spawn huge numbers of duplicate parameter URLs. is about helping a Magento store rank in search. First, know your version: Magento 1 is dead (no updates since June 2020), and Magento 2 comes in a paid edition (Adobe Commerce) and a free one (Magento Open Source). The thing that breaks SEO on Magento more than anything else is its filter system — “layered navigation” — which can create thousands of duplicate page addresses. Most of your work is keeping those under control.
What Magento is (and which version you have)
Magento is a platform for building online stores. Unlike Shopify, where the company hosts everything for you, Magento is something you (or your developers) install and run yourself. That gives you a lot of control — and a lot of rope.
Before you do anything, figure out which Magento you’re on:
- Magento 1 — the old version. It reached end-of-life in June 2020 and no longer gets security updates. If you’re here, your real SEO project is migrating to Magento 2 (do it carefully, with redirectsA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't.).
- Magento 2 — the current version. It comes as Adobe Commerce (the paid, enterprise edition) and Magento Open Source (the free, community edition). They share the same core code, so the SEO advice is the same.
- Adobe Commerce as a Cloud Service (ACCS) — a newer, separate SaaS product (launched June 2025) that runs on different infrastructure and doesn’t support the classic Luma theme at all. If your store is on ACCS, treat theme/schema advice written for “regular” Magento as a starting point, not a direct match.
Don’t mix these up. A lot of old “Magento SEO” tutorials online are written for Magento 1 and the menus and settings simply don’t match anymore.
The one big problem: filters
When a shopper lands on a category page — say, “Running Shoes” — Magento shows filters down the side: size, color, brand, price. That feature is called layered navigation, and it’s great for shoppers.
The SEO problem is that each filter someone clicks usually creates a brand-new web
address, like /running-shoes?color=blue&size=10. Multiply colors × sizes ×
brands × price ranges and a single category can spin off thousands of slightly
different pages — all showing basically the same products. Search engines see a
mess of near-duplicateThe same or very similar primary content reachable at more than one URL. There's no general duplicate content penalty — the real costs are possible signal dilution, the wrong URL getting chosen, and less-efficient crawling. pages, get confused about which one to show, and waste time
crawlingCrawling is how search engines use automated bots (like Googlebot and Bingbot) to discover URLs and download pages. A page has to be crawlable to be indexed, but crawling on its own isn't a ranking factor. junk instead of your real products.
The fix is to tell search engines “these filtered pages aren’t the important ones — the clean category page is.” You do that with a canonical tagA rel=\"canonical\" annotation — in the HTML <head> or an HTTP Link header — that tells search engines which URL is the preferred version of duplicate or near-duplicate content. (a pointer to the main version) and by marking low-value filter pages noindexNoindex is a directive that tells search engines to keep a page out of their index, so it won't appear in search results. It works only on pages a crawler can actually fetch — a page blocked in robots.txt can never be noindexed. (don’t put this in search results). Magento has settings for this, and SEO extensions make it easier.
The other things to set up
- Friendly URLs. Magento can produce clean addresses like
/running-shoes/nike-pegasus/instead of a long code. Make sure the “search-engine-friendly URLs” setting is on. - Titles and descriptions. Every product and category has fields for a page title and meta descriptionThe meta description is an HTML head tag — `<meta name=\"description\" content=\"…\">` — that suggests a short summary of the page for the search snippet. It's not a Google ranking factor, and Google rewrites it the majority of the time, but a good one can still lift click-through. — fill them in instead of leaving Magento’s defaults.
- Structured dataStructured data is a standardized way of labeling page content (using the schema.org vocabulary in JSON-LD, Microdata, or RDFa) so search engines can understand its meaning. It's not a direct ranking factor — its value is rich results and entity understanding. (schema). This is the code that powers the price and star ratings you see in Google results. Magento doesn’t add this automatically, so you’ll need an extension or a developer to add it.
- Product variants. If a product comes in multiple sizes or colors, Magento usually stores each combination as its own “simple product” linked to a parent. Left alone, those can get indexedStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed. as separate near-duplicate pages — point them back to the parent product with a canonical tagA rel=\"canonical\" annotation — in the HTML <head> or an HTTP Link header — that tells search engines which URL is the preferred version of duplicate or near-duplicate content. instead.
Want the detailed, technical version — exact settings, the URL-rewrite table, and how to handle filters at scale? Switch to the Advanced tab.
Evidence for this claim Google warns that faceted navigation can generate very large URL spaces and consume crawling resources. Scope: Google crawling guidance applied to Magento filtering; not a platform-specific penalty. Confidence: high · Verified: Google Search Central: Faceted navigationTL;DR — Magento SEOMagento SEO is optimizing a store built on Magento — now Adobe Commerce (paid) or Magento Open Source (free), both running the Magento 2 codebase — to rank in organic search. The defining challenge is layered navigation (faceted filtering), which can spawn huge numbers of duplicate parameter URLs. is dominated by two duplicate-content generators: layered navigation spraying parameter URLs, and configurable/simple product variants spraying near-identical SKU pages. Canonicalize both back to their clean parent (category or configurable product) and
noindexthe low-value combinations; reserve indexable pages for filters or variants with real search demand. Settle the version question first — Magento 1 is EOL (June 2020); Magento 2 ships as Adobe Commerce (paid, self-hosted), Magento Open Source (free), or Adobe Commerce as a Cloud Service (ACCS — a separate SaaS product since June 2025 that drops Luma entirely). SEO-friendly URLsURL structure is how the parts of a web address — scheme, domain, path, query string, and fragment — are organized and formatted. It mostly affects crawling, usability, and how engines understand a page, not rankings directly. run through theurl_rewritetable — distinct from HTTP redirectsA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't., which Magento can auto-create as 301s. Structured-data output varies by storefront theme and extensions, so inspect rendered pages before planning custom work.
Step zero: get the version straight
Half the bad Magento SEO advice online is bad because it’s aimed at the wrong version. Lock this down before anything else:
- Magento 1 hit end-of-life on June 30, 2020. No security patches, no updates. If a client is still on it, the SEO work is a Magento 2 migration — with a full redirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't. map and a crawl-based QA pass, treated like any platform migration where ranking authority is on the line.
- Magento 2 is the live codebase. It ships in two editions: Adobe Commerce (paid; B2B features, page builder, hosted PaaS option) and Magento Open Source (free; community edition). Same core, same SEO surface area. Adobe’s branding shift means “Magento,” “Adobe Commerce,” and “Magento Open Source” all show up for the same underlying platform — don’t let the naming fool you into thinking the SEO model differs.
- Adobe Commerce as a Cloud Service (ACCS) is a third, separate product — a SaaS deployment launched June 2025 with a storefront built on Edge Delivery Services rather than the traditional Commerce/Luma stack. Luma isn’t supported on ACCS at all, so if a store is on it, the Luma-specific theme and schema notes below don’t carry over — you’re rebuilding that layer from scratch, not tweaking it.
Everything below assumes self-hosted Magento 2 (Adobe Commerce or Magento Open Source, on Luma or Hyvä) unless ACCS is called out specifically.
Layered navigation is the whole game
If you only fix one thing on a Magento store, fix layered navigation. It’s Magento’s term for faceted filtering on category pages, and by default each filter selection appends a query parameter:
/running-shoes
/running-shoes?color=159
/running-shoes?color=159&size=42
/running-shoes?color=159&size=42&price=50-100
/running-shoes?size=42&color=159 ← same filters, different order = new URLOne clarification before you copy any crawl/indexStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed. strategy onto a store: Adobe
documents standard layered navigation and Live Search (Adobe Commerce’s
paid, AI-powered facet feature) as distinct implementations with different
filter/URL behavior. The canonical and noindex guidance below is written for
standard layered navigation — if a store runs Live Search, confirm the actual
URL patterns it generates before assuming the same rules apply.
The combinatorial explosion is the problem. A catalog of a few thousand SKUs can generate tens of thousands of crawlable, near-duplicateThe same or very similar primary content reachable at more than one URL. There's no general duplicate content penalty — the real costs are possible signal dilution, the wrong URL getting chosen, and less-efficient crawling. URLs. This is the canonical faceted-navigation failure mode, and Gary Illyes has put numbers on how much grief it causes Google — faceted navigationFaceted navigation (faceted search, product filtering) lets visitors refine a list of products or content by attribute — price, color, size, brand, rating. The SEO problem: each filter combination can spawn a distinct crawlable URL, turning a small catalog into millions of near-duplicate pages that waste crawl budget and dilute ranking signals. is the largest single source of crawl-waste complaints they receive (see the Quotes tab). The damage on your side: duplicate/near-duplicate contentThe same or very similar primary content reachable at more than one URL. There's no general duplicate content penalty — the real costs are possible signal dilution, the wrong URL getting chosen, and less-efficient crawling., index bloatAn SEO term for when a search engine has indexed a lot of low-value, thin, or duplicate URLs that don't serve search demand. It's a quality and crawl-efficiency problem, not a penalty., crawl budgetThe number of URLs an engine will crawl in a timeframe. burned on junk, and internal PageRankPageRank is Google's original recursive link-graph algorithm: a page's score depends on the scores of the pages linking to it, and in the published model each page's score is split across its outbound links (the simplified version: links are weighted votes). Google says it's evolved since launch but still part of its core ranking systems. diluted across hundreds of filter links per category page.
The decision is binary, per URL pattern: does this filtered page deserve a place in the index, or not?
For the ~99% that don’t (most color/size/price/sort combinations have no search demand):
- Canonical the filtered URL to the clean category URL. Magento 2’s “Use Canonical Link Meta Tag for Categories” setting (Stores → Configuration → Catalog → Catalog → Search Engine Optimization) helps, but on its own it points a category to itself, not filtered variants to the parent — so for parameter URLs you typically lean on an SEO extension or template logic to emit the right canonical.
noindexthe low-value filter combinations so they drop out of the index. Remember the rule from Google:noindexrequires the page to be crawlable — never pairnoindexwith a robots.txtA plain-text file at the root of a host that tells crawlers which URLs they may and may not request. It controls crawling, not indexing — a blocked URL can still be indexed if it's linked from elsewhere.Disallowon the same URL, or GooglebotGooglebot is Google's web crawler — the software that fetches pages so Google can index and rank them. It comes in two variants, Googlebot Smartphone (primary, under mobile-first indexing) and Googlebot Desktop, and runs an evergreen Chromium renderer. can’t read the tag.- Consider robots.txt disallow for purely combinatorial parameter spaces if crawl budgetThe number of URLs an engine will crawl in a timeframe. is the acute problem — but know it controls crawlingCrawling is how search engines use automated bots (like Googlebot and Bingbot) to discover URLs and download pages. A page has to be crawlable to be indexed, but crawling on its own isn't a ranking factor., not indexingStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed., and won’t remove already-indexed URLs.
For the minority that DO have demand (e.g. a “/running-shoes/nike/” type page where the brand filter is a real query): promote those to indexable, clean-URL landing pages — unique intro copy, self-referencing canonical, internal linksAn internal link is a hyperlink from one page on a website to another page on the same website. Internal links help search engines discover your pages and pass ranking signals (PageRank and anchor-text context) between them., sitemapA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing. inclusion. That’s where Magento faceted nav turns from liability into long-tail asset. (Full treatment in the faceted navigationFaceted navigation (faceted search, product filtering) lets visitors refine a list of products or content by attribute — price, color, size, brand, rating. The SEO problem: each filter combination can spawn a distinct crawlable URL, turning a small catalog into millions of near-duplicate pages that waste crawl budget and dilute ranking signals. hub, the canonical home for this topic on the Ecommerce side; the crawl-side mechanics live with URL parametersThe `?key=value` data tacked onto the end of a URL after a question mark — used for tracking, sessions, filtering, sorting, and search — and one of the biggest sources of duplicate URLs and wasted crawling in SEO. and crawl budgetThe number of URLs an engine will crawl in a timeframe..)
URL rewrites and SEO-friendly URLs
Magento generates clean URLs through URL rewrites, stored in the
url_rewrite database table and managed in Admin under Marketing → SEO &
Search → URL Rewrites. Adobe’s own docs draw a sharp line between two terms
that get used loosely: a rewrite is a server-side mapping that changes what
loads without touching the browser’s address bar, while a redirect sends the
browser an HTTP response telling it to navigate to a different URL — the address
bar updates. Magento’s automatic 301-on-URL-key-change is a redirect; the
url_rewrite table also stores internal rewrites that never surface to the
visitor. Two settings do most of the heavy lifting:
- “Use Web Server Rewrites” (Stores → Configuration → General → Web → Search
Engine Optimization) strips
index.phpfrom URLs. - URL suffixes / category-path-in-URL. Magento can include the category path
in product URLs (
/men/shoes/nike-pegasus). Be deliberate: including the category path means a product in multiple categories can resolve at multiple URLs, recreating duplication — which is exactly why Magento adds canonical options for products too (“Use Canonical Link Meta Tag for Products”). Many Magento SEOs set product URLs without the category path to sidestep this entirely.
When you change a product or category URL key, Magento can auto-create a 301 in the
url_rewrite table (“Create Permanent Redirect for old URL”). Confirm that toggle
is on before any bulk URL edits, or you’ll strand indexed URLs on 404s. Before
changing category-path or suffix settings on a live store, inventory the affected
URL patterns per store view and stage a redirect/canonical plan rather than
flipping the toggle and hoping — Adobe’s own docs warn that regenerating rewrites
for categories with many assigned products can be a real performance hit, not
just an SEO one.
Configurable and simple products: the other duplicate-content driver
Layered navigation isn’t the only way a Magento catalog sprays near-duplicate URLs. Configurable products (the parent — “Running Shoe”) built from simple products (the actual purchasable size/color combinations) create the same failure mode at catalog scale. Vervaunt’s Paul Rogers frames the math well: a fashion store with 3,000 parent products, each in 8 sizes and 6 colors, can generate 144,000 simple-product combinations. In Magento those combinations are a catalog relationship, not an indexing decision — without an explicit canonical policy, Googlebot can find all of them as separate, indexable URLs pointing to near-identical content.
The fix practitioner guides converge on: canonical each simple product to its parent configurable product, and don’t rely on catalog visibility settings alone — a simple product set to “Not Visible Individually” is still reachable by direct URL, sitemap, or internal link, so Googlebot can index it even though it’s hidden from on-site navigation. An explicit canonical tagA rel=\"canonical\" annotation — in the HTML <head> or an HTTP Link header — that tells search engines which URL is the preferred version of duplicate or near-duplicate content. pointing to the parent is the actual fix, and it’s server-side rendered, so it isn’t dependent on JavaScript.
Index a variant on its own only when it has real, independent search demand you can differentiate with unique content — a specific color/size combination people search for by name, not every SKU by default.
Check under Stores → Configuration → Catalog → Catalog → Search Engine Optimization that “Use Canonical Link Meta Tag for Products” is on, then confirm — on the actual rendered page, not just the setting — that simple product URLs carry the canonical back to the parent.
The JSON-LD gap
This one trips people up because they assume a platform this large handles schema. Magento 2 does not generate JSON-LDJSON-LD (JavaScript Object Notation for Linked Data) is a script-based structured data format, typically paired with the schema.org vocabulary to describe page content for search engines and AI systems. Google recommends it over Microdata and RDFa because it's the easiest format to implement and maintain at scale — but all three work, and structured data isn't a ranking signal. structured dataStructured data is a standardized way of labeling page content (using the schema.org vocabulary in JSON-LD, Microdata, or RDFa) so search engines can understand its meaning. It's not a direct ranking factor — its value is rich results and entity understanding. out of the box. Some themes emit microdata on product pages, but:
- Google recommends JSON-LD as the implementation format over microdata/RDFa (see the Official Docs tab).
- To qualify for product rich resultsRich results (formerly 'rich snippets') are enhanced search listings — stars, images, prices, breadcrumbs, video thumbnails, and more — that Google and Bing build from structured data. They're a display feature, not a ranking factor, and eligibility never guarantees they'll show. you need
Productschema withname,image,description,offers(price, priceCurrency, availability), and — for the star ratings —aggregateRating/review, which must come from real reviews.
So getting rich results on Magento is an extension or custom-development task:
a dedicated structured-data extension, a schema-aware theme, or template work that
outputs JSON-LD. When you add it, audit for duplicate schema — if a theme’s
leftover microdata and an extension’s JSON-LD both describe the product, you can
ship two conflicting Product blocks. Pick one source of truth.
Magento core does not supply the JSON-LD for you. Test the combined extension, theme, and catalog output instead of assuming installation equals valid markup.
Run a focused product-page preflight with my free PDP SEO Checker Free
- Test representative simple, configurable, and out-of-stock product URLs.
- Confirm Product, Offer price, and availability appear in the delivered markup.
- Fix the extension, template, or catalog source, then rerun and validate the rendered page with Google.
The checker says no Product schema was found, no schema price was found, no schema availability was found, and price consistency was not evaluated from raw HTML.
The rest of the technical surface
- Canonical tags. Beyond categories/products, watch the homepage
(
/vs?___store=and similar store-view params), paginationPagination splits a large set of content — product listings, blog archives, search results — across multiple sequentially numbered URLs. For SEO, each paginated page should be crawlable, indexable, and self-canonical; Google no longer uses rel=prev/next, but Bing still does., and the store-view/locale parameters Magento appends. See canonicalizationHow search engines pick one canonical URL among duplicates and consolidate signals onto it. and the canonical tagA rel=\"canonical\" annotation — in the HTML <head> or an HTTP Link header — that tells search engines which URL is the preferred version of duplicate or near-duplicate content. deep dives. - Pagination. Magento paginates categories with
?p=2. Give each page a unique, self-referencing canonical — do not canonical page 2+ back to page 1, and don’tnoindexthe sequence (that can cut link equity to products only listed deep in the pages).rel=prev/nextis dead; don’t rely on it. - Store views (multi-language / multi-site). Magento’s store-view architecture is powerful for international setups but is a classic source of duplicate content and missing/mismatched hreflangHreflang is an annotation (in HTML, HTTP headers, or XML sitemaps) that tells search engines which language and optional region a page targets, and which alternate versions exist. It only works when every page in the cluster references all the others.. If you run multiple store views off one catalog, hreflang is manual work and partial deployment is worse than none.
- Out-of-stock and disabled products. Decide a policy: keep ranking pages live with stock status, or 404/410 + redirect permanently gone SKUs. Don’t silently disable products and leave their URLs 404ing with inbound links.
- Core Web VitalsGoogle's three real-user UX metrics — LCP (loading), INP (responsiveness), and CLS (visual stability) — used by Google's ranking systems, with no official weight attached, measured on field data.. Self-hosted Magento’s performance is entirely on your infrastructure. Full-page cache (Varnish), a CDN, image optimization (WebP), and disciplined extension/JS hygiene are the levers. Two different headless paths get conflated here, so be precise about which one you’re evaluating: PWA Studio is Adobe’s older React-based storefront layered on your existing Commerce infrastructure, while Adobe Commerce as a Cloud Service (ACCS) is a separate SaaS product on Edge Delivery Services where Luma isn’t supported at all. Either can lift the CWV ceiling, but both add renderingTurning HTML, CSS, and JavaScript into the final visual page and DOM. and indexing considerations of their own — confirm which one (or neither) a store is actually running before planning a headless migration for CWV.
What to actually prioritize
On most Magento audits the order of impact is:
- Layered navigation — canonical + noindexNoindex is a directive that tells search engines to keep a page out of their index, so it won't appear in search results. It works only on pages a crawler can actually fetch — a page blocked in robots.txt can never be noindexed. strategy for parameter URLs. This is the biggest share of the technical SEOTechnical SEO is the practice of making a site easy for search engines to crawl, render, index, and (now) be eligible for AI answers. It's the foundation that lets your content and links rank — not a ranking trick of its own. value.
- Configurable/simple product canonicalizationHow search engines pick one canonical URL among duplicates and consolidate signals onto it. — canonical simple SKUs to their parent configurable product; verify it on rendered pages, not just the admin setting.
- URL rewrites & redirects — friendly URLs on, redirect-on-change on, no stranded 404s.
- Schema — add JSON-LD (no native support), avoid duplicate blocks.
- Titles/meta + category copy — fill the fields; categories ship blank.
- Performance — cache, CDN, images.
Everything else is refinement. Magento gives you total control, which means almost every SEO problem on a Magento store is a configuration choice you can fix — and almost every one starts with the filters.
AI summary
A condensed take on the Advanced version:
- Magento SEOMagento SEO is optimizing a store built on Magento — now Adobe Commerce (paid) or Magento Open Source (free), both running the Magento 2 codebase — to rank in organic search. The defining challenge is layered navigation (faceted filtering), which can spawn huge numbers of duplicate parameter URLs. is dominated by two duplicate-content generators. Layered
navigation (faceted filtering) appends filter parameters to category URLs;
configurable/simple product variants spray near-identical SKU URLs. Both need
the same treatment: canonical to the clean parent (category or configurable
product) and
noindexthe low-value combinations; promote only the filters/variants with real search demand to indexable pages. - Version matters: Magento 1 is end-of-life (June 2020) — migrate. Magento 2 ships as Adobe Commerce (paid, self-hosted) and Magento Open Source (free) from one codebase, plus a separate SaaS product, Adobe Commerce as a Cloud Service (ACCS, since June 2025), which drops the Luma theme entirely.
- Layered navigation vs. Live Search: Adobe documents standard layered navigation and the paid, AI-powered Live Search facets as distinct implementations with different URL behavior — confirm which one a store actually runs before applying crawl/indexStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed. rules.
- Configurable/simple products: canonical simple SKUs to their parent configurable product; catalog-visibility settings alone don’t stop Google from finding and indexingStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed. them via sitemapA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing. or direct URL.
- URLs: SEO-friendly URLsURL structure is how the parts of a web address — scheme, domain, path, query string, and fragment — are organized and formatted. It mostly affects crawling, usability, and how engines understand a page, not rankings directly. run through the
url_rewritetable (Admin → Marketing → SEO & Search → URL Rewrites) — distinct from HTTP redirectsA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't., which Magento can auto-create as 301s. Enable web-server rewrites and redirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't.-on-URL-change; inventory affected URL patterns before changing category-path or suffix settings. - Schema gap: Magento 2 emits no JSON-LDJSON-LD (JavaScript Object Notation for Linked Data) is a script-based structured data format, typically paired with the schema.org vocabulary to describe page content for search engines and AI systems. Google recommends it over Microdata and RDFa because it's the easiest format to implement and maintain at scale — but all three work, and structured data isn't a ranking signal. by default (microdata in some
themes only). Google recommends JSON-LDJSON-LD (JavaScript Object Notation for Linked Data) is a script-based structured data format, typically paired with the schema.org vocabulary to describe page content for search engines and AI systems. Google recommends it over Microdata and RDFa because it's the easiest format to implement and maintain at scale — but all three work, and structured data isn't a ranking signal., so rich-result schema is an extension/
custom-dev task — and watch for duplicate
Productblocks. - Also handle: paginationPagination splits a large set of content — product listings, blog archives, search results — across multiple sequentially numbered URLs. For SEO, each paginated page should be crawlable, indexable, and self-canonical; Google no longer uses rel=prev/next, but Bing still does. (unique self-referencing canonicals, never noindexNoindex is a directive that tells search engines to keep a page out of their index, so it won't appear in search results. It works only on pages a crawler can actually fetch — a page blocked in robots.txt can never be noindexed. the series), store-view duplication + hreflangHreflang is an annotation (in HTML, HTTP headers, or XML sitemaps) that tells search engines which language and optional region a page targets, and which alternate versions exist. It only works when every page in the cluster references all the others. for multi-locale stores, out-of-stock policy, and Core Web VitalsGoogle's three real-user UX metrics — LCP (loading), INP (responsiveness), and CLS (visual stability) — used by Google's ranking systems, with no official weight attached, measured on field data. — noting PWA Studio and ACCS are two different headless paths, not interchangeable.
- Priority order: layered navigation → configurable/simple product canonicalizationHow search engines pick one canonical URL among duplicates and consolidate signals onto it. → URL rewrites/redirects → schema → titles/meta/category copy → performance.
Official documentation
Primary-source documentation. Magento’s own docs cover the platform settings; Google’s cover the SEO behavior those settings need to satisfy.
Adobe / Magento
- Adobe Commerce / Magento Open Source — SEO best practices — the official SEO configuration guide (URLs, metadata, sitemapsA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing., robots.txtA plain-text file at the root of a host that tells crawlers which URLs they may and may not request. It controls crawling, not indexing — a blocked URL can still be indexed if it's linked from elsewhere.).
- URL rewrites — how the
url_rewritesystem works in Admin. - Search Engine Optimization (config reference) — web-server rewrites, URL suffixes, and SEO settings under Stores → Configuration.
- Layered navigation — Adobe’s documentation of the filtering feature at the heart of Magento SEOMagento SEO is optimizing a store built on Magento — now Adobe Commerce (paid) or Magento Open Source (free), both running the Magento 2 codebase — to rank in organic search. The defining challenge is layered navigation (faceted filtering), which can spawn huge numbers of duplicate parameter URLs..
- Software lifecycle / Magento 1 end-of-life — version support and the June 2020 Magento 1 EOL.
Google — what your Magento config has to satisfy
- Intro to Product structured data — required/recommended
Productfields; JSON-LDJSON-LD (JavaScript Object Notation for Linked Data) is a script-based structured data format, typically paired with the schema.org vocabulary to describe page content for search engines and AI systems. Google recommends it over Microdata and RDFa because it's the easiest format to implement and maintain at scale — but all three work, and structured data isn't a ranking signal. recommended. - Structured data for ecommerce sites — the ecommerce schema typesSchema markup is code that uses the schema.org vocabulary to label what your content means so search engines can understand it and show rich results. It's most often written in JSON-LD, and it's not a direct ranking factor. Google supports.
- Pagination & incremental page loading — unique URLs, self-canonical pages, noindexNoindex is a directive that tells search engines to keep a page out of their index, so it won't appear in search results. It works only on pages a crawler can actually fetch — a page blocked in robots.txt can never be noindexed. for filters not paginationPagination splits a large set of content — product listings, blog archives, search results — across multiple sequentially numbered URLs. For SEO, each paginated page should be crawlable, indexable, and self-canonical; Google no longer uses rel=prev/next, but Bing still does..
- Managing crawling of faceted navigation URLs — Google’s official guidance for the layered-navigation problem.
- Optimize your crawl budget — why parameter sprawl matters at scale.
Quotes from the source
On-the-record statements relevant to the parts of Magento SEOMagento SEO is optimizing a store built on Magento — now Adobe Commerce (paid) or Magento Open Source (free), both running the Magento 2 codebase — to rank in organic search. The defining challenge is layered navigation (faceted filtering), which can spawn huge numbers of duplicate parameter URLs. that actually move the needle — faceted navigationFaceted navigation (faceted search, product filtering) lets visitors refine a list of products or content by attribute — price, color, size, brand, rating. The SEO problem: each filter combination can spawn a distinct crawlable URL, turning a small catalog into millions of near-duplicate pages that waste crawl budget and dilute ranking signals., structured dataStructured data is a standardized way of labeling page content (using the schema.org vocabulary in JSON-LD, Microdata, or RDFa) so search engines can understand its meaning. It's not a direct ranking factor — its value is rich results and entity understanding., and paginationPagination splits a large set of content — product listings, blog archives, search results — across multiple sequentially numbered URLs. For SEO, each paginated page should be crawlable, indexable, and self-canonical; Google no longer uses rel=prev/next, but Bing still does.. Each link is a deep link that jumps to the quoted passage where the source supports it.
Google — structured data (the schema Magento doesn’t add for you)
- “Merchant listings: For pages where customers can purchase products from you. This markup has more options for specifying detailed product information, like apparel sizing, shipping details, and return policy information.” — Google Search Central, Intro to Product structured dataProduct schema (schema.org/Product) is structured data that tells search engines a page's product name, price, availability, and reviews so it can appear in Shopping-style rich results. It's separate from a Google Merchant Center feed, though Google reconciles the two.. Jump to quote
- “Providing both structured data on web pages and a Merchant CenterGoogle Merchant Center (GMC) is a free platform where retailers upload and manage product data so their products can appear across Google — Shopping, organic Search product grids, Images, Lens, and AI surfaces. Since 2020 it powers free (organic) product listings, not just paid Shopping ads. feed maximizes your eligibility to experiences and helps Google correctly understand and verify your data.” Jump to quote
Google — paginationPagination splits a large set of content — product listings, blog archives, search results — across multiple sequentially numbered URLs. For SEO, each paginated page should be crawlable, indexable, and self-canonical; Google no longer uses rel=prev/next, but Bing still does. (Magento’s ?p= category pages)
- “Give each page a unique URL” — and assign each page its own canonical rather than pointing them all at page one. — Google Search Central, Pagination and incremental page loading. Jump to quote
- “Apply
noindexmeta tagsMeta tags are HTML elements in a page's head that pass metadata about the page to search engines and browsers. For SEO only a few matter — the title element, the meta description, and the robots meta tag — while meta keywords and most others are ignored. to filter variations or alternative sort orders” — i.e. to facets, not to the paginated sequence itself. Jump to quote
Gary Illyes, Google — on why layered navigation is the core risk
- On faceted/parameter URL spaces: “Once it discovers a set of URLs, it cannot make a decision about whether that URL space is good or not unless it crawled a large chunk of that URL space.”
Relayed via Search Engine Land’s coverage of the Search Off the Record 2025 year-end crawl report; confirm against the source episode before treating as final. Per that coverage, faceted navigationFaceted navigation (faceted search, product filtering) lets visitors refine a list of products or content by attribute — price, color, size, brand, rating. The SEO problem: each filter combination can spawn a distinct crawlable URL, turning a small catalog into millions of near-duplicate pages that waste crawl budget and dilute ranking signals. is the single largest source of crawl-issue reports Google receives (~50%).
Read the coverage - “Sometimes you might create these new fake URLs accidentally, exploding your URL space from a balmy 1000 URLs to a scorching 1 million, exciting crawlersA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index. that in turn hammer your servers unexpectedly.”
Relayed from Gary Illyes’ LinkedIn post (August 2024) via Search Engine Journal.
Read the coverage
Note: Adobe Experience League docs render via JavaScript and resist automated text-fragment checking, so Magento-specific quotes are described by setting/behavior rather than pasted verbatim — verify exact wording against the live Adobe docs before treating any as a direct quote.
Practitioners — configurable/simple product canonicalizationHow search engines pick one canonical URL among duplicates and consolidate signals onto it.
- “Canonical to the parent configurable product.” — Dan Taylor, Search Engine Journal, The Technical Guide to Common Magento (Adobe Commerce) SEO Issues. Jump to quote
- “The canonical tagA rel=\"canonical\" annotation — in the HTML <head> or an HTTP Link header — that tells search engines which URL is the preferred version of duplicate or near-duplicate content. used on each of the simple products points back to the primary configurable version — to prevent duplicate variants of the product from being indexed by Google.” — Paul Rogers (Vervaunt). Jump to quote
- “…potentially generates 144,000 product combinations.” — Vervaunt, on a hypothetical fashion-store example (3,000 parent products × 8 sizes × 6 colors), illustrating why an explicit canonical policy matters at scale, not a universal catalog size. Jump to quote
Magento SEO checklist
Prioritized roughly by impact — top items are where Magento stores win or lose.
Version & foundation
- Confirm you’re on Magento 2, not end-of-life Magento 1 (migrate if so).
- Know your edition (Adobe Commerce, Magento Open Source, or ACCS) for feature scope — ACCS drops the Luma theme entirely.
Layered navigation (the big one)
- Confirm whether the store runs standard layered navigation or the paid Live Search facets — Adobe documents them as distinct implementations.
- Audit how many parameter URLs filters generate (crawl the site; check
site:count and GSCA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. indexedStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed.-vs-discovered). - Canonical filtered category URLs to the clean category URL.
-
noindexlow-value filter combinations (and keep them crawlable so the tag is read — nevernoindex+ robots.txtA plain-text file at the root of a host that tells crawlers which URLs they may and may not request. It controls crawling, not indexing — a blocked URL can still be indexed if it's linked from elsewhere.Disallowtogether). - Identify filters with real search demand and build them as indexable, clean-URL landing pages with unique copy.
Configurable & simple products
- “Use Canonical Link Meta Tag for Products” enabled (Stores → Configuration → Catalog → Catalog → Search Engine Optimization).
- Confirm on the rendered page — not just the setting — that simple product URLs carry a canonical back to their parent configurable product.
- Don’t rely on “Not Visible Individually” alone; it doesn’t block direct URL, sitemapA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing., or internal-link indexingStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed..
URLs & redirectsA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't.
- “Use Web Server Rewrites” enabled (no
index.phpin URLs). - SEO-friendly URLURL structure is how the parts of a web address — scheme, domain, path, query string, and fragment — are organized and formatted. It mostly affects crawling, usability, and how engines understand a page, not rankings directly. keys set on products and categories.
- “Create Permanent RedirectA 301 redirect is the HTTP status code for a permanent move: it tells browsers and search engines a URL has moved for good, and it's the strongest signal for consolidating a page's ranking signals onto the new URL. Google says permanent redirects don't cause a loss in PageRank. for old URL” enabled before any URL-key edits.
- Decide on category-path-in-product-URL (off avoids multi-URL duplication).
Structured dataStructured data is a standardized way of labeling page content (using the schema.org vocabulary in JSON-LD, Microdata, or RDFa) so search engines can understand its meaning. It's not a direct ranking factor — its value is rich results and entity understanding.
- Add
ProductJSON-LDJSON-LD (JavaScript Object Notation for Linked Data) is a script-based structured data format, typically paired with the schema.org vocabulary to describe page content for search engines and AI systems. Google recommends it over Microdata and RDFa because it's the easiest format to implement and maintain at scale — but all three work, and structured data isn't a ranking signal. (Magento 2 ships none) via extension or dev. - Confirm no duplicate schema (theme microdata + extension JSON-LDJSON-LD (JavaScript Object Notation for Linked Data) is a script-based structured data format, typically paired with the schema.org vocabulary to describe page content for search engines and AI systems. Google recommends it over Microdata and RDFa because it's the easiest format to implement and maintain at scale — but all three work, and structured data isn't a ranking signal.).
-
aggregateRating/reviewonly from real reviews.
On-page & indexing
- Unique titles + meta descriptionsThe meta description is an HTML head tag — `<meta name=\"description\" content=\"…\">` — that suggests a short summary of the page for the search snippet. It's not a Google ranking factor, and Google rewrites it the majority of the time, but a good one can still lift click-through. on products and categories.
- Category description copy filled in (blank by default).
- PaginationPagination splits a large set of content — product listings, blog archives, search results — across multiple sequentially numbered URLs. For SEO, each paginated page should be crawlable, indexable, and self-canonical; Google no longer uses rel=prev/next, but Bing still does.: unique self-referencing canonicals; series not noindexed.
- Out-of-stock / discontinued product policy decided (don’t strand 404s).
International & performance
- Store-view duplication controlled; hreflangHreflang is an annotation (in HTML, HTTP headers, or XML sitemaps) that tells search engines which language and optional region a page targets, and which alternate versions exist. It only works when every page in the cluster references all the others. complete & bidirectional if multi-locale.
- Full-page cache (Varnish), CDN, and WebP images for Core Web VitalsGoogle's three real-user UX metrics — LCP (loading), INP (responsiveness), and CLS (visual stability) — used by Google's ranking systems, with no official weight attached, measured on field data..
Magento SEO cheat sheet
Version map
| Name | What it is | SEO note |
|---|---|---|
| Magento 1 | Old codebase, EOL June 2020 | Migrate — no security patches |
| Magento 2 | Current codebase | Everything below applies |
| Adobe Commerce | Magento 2, paid enterprise | Same SEO model + extra features |
| Magento Open Source | Magento 2, free community | Same SEO model |
| Adobe Commerce as a Cloud Service (ACCS) | Separate SaaS product, since June 2025 | Luma unsupported — theme/schema work rebuilt from scratch |
Layered navigation — what to do per URL type
| Filter URL | IndexStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed.? | Signal |
|---|---|---|
Clean category (/running-shoes) | Yes | Self canonical, index |
High-demand single filter (/running-shoes/nike/) | Yes | Unique copy + self canonical |
| Navigation-only filter combo | No | Canonical → category, noindex,follow |
Sort-order only (?p=2&sort=price) | No | Canonical → clean category |
| Empty/impossible combo | n/a | Return 404 (not a 200 “no results”) |
PaginationPagination splits a large set of content — product listings, blog archives, search results — across multiple sequentially numbered URLs. For SEO, each paginated page should be crawlable, indexable, and self-canonical; Google no longer uses rel=prev/next, but Bing still does. (?p=2) | Yes | Unique self-referencing canonical |
| Simple product (variant of a configurable parent) | Only with real demand | Canonical → parent configurable product |
Key Admin settings (Magento 2)
- Stores → Configuration → General → Web → Search Engine Optimization: Use Web Server Rewrites = Yes.
- Stores → Configuration → Catalog → Catalog → Search Engine Optimization: product/category URL suffix, Use Canonical Link Meta Tag for Categories/ Products = Yes.
- Marketing → SEO & Search → URL Rewrites: the
url_rewritemanager. - Product/Category edit → Search Engine Optimization: URL key, meta title, meta descriptionThe meta description is an HTML head tag — `<meta name=\"description\" content=\"…\">` — that suggests a short summary of the page for the search snippet. It's not a Google ranking factor, and Google rewrites it the majority of the time, but a good one can still lift click-through.; enable Create Permanent RedirectA 301 redirect is the HTTP status code for a permanent move: it tells browsers and search engines a URL has moved for good, and it's the strongest signal for consolidating a page's ranking signals onto the new URL. Google says permanent redirects don't cause a loss in PageRank. for old URL.
Hard facts
- Magento 2 emits no JSON-LDJSON-LD (JavaScript Object Notation for Linked Data) is a script-based structured data format, typically paired with the schema.org vocabulary to describe page content for search engines and AI systems. Google recommends it over Microdata and RDFa because it's the easiest format to implement and maintain at scale — but all three work, and structured data isn't a ranking signal. by default (microdata in some themes only).
- Google recommends JSON-LDJSON-LD (JavaScript Object Notation for Linked Data) is a script-based structured data format, typically paired with the schema.org vocabulary to describe page content for search engines and AI systems. Google recommends it over Microdata and RDFa because it's the easiest format to implement and maintain at scale — but all three work, and structured data isn't a ranking signal. over microdata/RDFa.
noindexneeds a crawlable page — don’t combine with robots.txtA plain-text file at the root of a host that tells crawlers which URLs they may and may not request. It controls crawling, not indexing — a blocked URL can still be indexed if it's linked from elsewhere.Disallow.- Friendly URLs live in the
url_rewritetable.
The mental models
1. Version-first. Before any tactic, answer: Magento 1 or 2? If 1, the project is a migration, full stop. If 2, the edition (Adobe Commerce vs Open Source) changes features, not SEO fundamentals.
2. Layered navigation = a binary, per-URL decision.
Every filtered URL is either an asset (real search demand → make it an
indexable landing page) or a liability (no demand → canonical it away and/or
noindex). Don’t treat all facets the same; sort them by demand, then apply the
right signal.
3. The three “don’t combine” rules.
noindex+ robots.txtA plain-text file at the root of a host that tells crawlers which URLs they may and may not request. It controls crawling, not indexing — a blocked URL can still be indexed if it's linked from elsewhere.Disallowon the same URL → tag never read.noindex+ canonical on the same URL → contradictory signals.- canonical alone for crawl budgetThe number of URLs an engine will crawl in a timeframe. → source pages still get crawled.
4. Control the URL space, then the indexStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed..
Magento’s url_rewrite system and web-server rewrites govern what URLs exist and
where they redirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't.. Canonical/noindex govern what’s in the index. Fix URL
generation first (don’t manufacture duplication), then manage indexation.
5. Schema is opt-in here.
On most platforms schema is a tweak; on Magento it’s a build. Plan JSON-LDJSON-LD (JavaScript Object Notation for Linked Data) is a script-based structured data format, typically paired with the schema.org vocabulary to describe page content for search engines and AI systems. Google recommends it over Microdata and RDFa because it's the easiest format to implement and maintain at scale — but all three work, and structured data isn't a ranking signal. as a
deliverable, then guard against shipping two Product blocks.
Patrick's relevant free tools
- Canonicalization Checker — Audit HTML and HTTP canonical signals, test the canonical target, and identify observable conflicts that can cause Google to choose a different URL.
- Google Index Checker — Check one URL’s observable indexability blockers, or reconcile sitemap, crawl, and supplied Search Console evidence across a URL set before verifying Google’s actual state in URL Inspection.
- Pre-publish Comparison — Compare draft and live HTML locally across normalized head signals, heading outlines, and structured data with honest not-evaluated states.
Tools for Magento SEO
- Magento Admin — URL Rewrites (Marketing → SEO & Search) — the native
manager for the
url_rewritetable; your source of truth for friendly URLs and redirectsA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't.. - CrawlersA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index. / site audits — Screaming Frog SEO Spider or Ahrefs Site Audit to measure how many parameter URLs layered navigation actually generates, surface duplicate titles/canonicals, and find redirect chainsA → B → C instead of A → C. Each hop loses link equity and adds latency.. This is how you size the faceted-navigation problem.
- Google Search ConsoleA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. — the Page indexingThe Google Search Console report (formerly Index Coverage) showing how many of your URLs are indexed vs. not indexed, and grouping the not-indexed ones by reason. report (Discovered/Crawled — currently not indexedStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed. often balloons on parameter sprawl) and Crawl statsA Google Search Console report (under Settings) that shows how Google has crawled your site over the last 90 days — total requests, download size, and average response time, broken down by response code, file type, Googlebot type, and purpose. It's only available for root-level properties (a Domain property or a URL-prefix property verified at the site's root). to see budget burned on filter URLs.
- Rich ResultsRich results (formerly 'rich snippets') are enhanced search listings — stars, images, prices, breadcrumbs, video thumbnails, and more — that Google and Bing build from structured data. They're a display feature, not a ranking factor, and eligibility never guarantees they'll show. Test / Schema MarkupSchema markup is code that uses the schema.org vocabulary to label what your content means so search engines can understand it and show rich results. It's most often written in JSON-LD, and it's not a direct ranking factor. Validator — confirm your added JSON-LDJSON-LD (JavaScript Object Notation for Linked Data) is a script-based structured data format, typically paired with the schema.org vocabulary to describe page content for search engines and AI systems. Google recommends it over Microdata and RDFa because it's the easiest format to implement and maintain at scale — but all three work, and structured data isn't a ranking signal. is valid and that you don’t have a competing microdata block.
- Magento SEOMagento SEO is optimizing a store built on Magento — now Adobe Commerce (paid) or Magento Open Source (free), both running the Magento 2 codebase — to rank in organic search. The defining challenge is layered navigation (faceted filtering), which can spawn huge numbers of duplicate parameter URLs. extensions — Mageworx, Mirasvit, Amasty, and similar add JSON-LDJSON-LD (JavaScript Object Notation for Linked Data) is a script-based structured data format, typically paired with the schema.org vocabulary to describe page content for search engines and AI systems. Google recommends it over Microdata and RDFa because it's the easiest format to implement and maintain at scale — but all three work, and structured data isn't a ranking signal., finer canonical control, and layered-navigation indexation rules that Magento core leaves to you. (Evaluate for duplicate-schema behavior.)
- Log file analysisLog file analysis is reading a web server's raw access logs to see exactly which URLs search engine crawlers actually requested, when, how often, and what status code they got. Unlike crawl tools or Search Console, logs are the unsampled, ground-truth record of what really happened. — for large catalogs, server logs show exactly how much crawl is wasted on filter URLs.
How to measure Magento SEO health
These are the standing KPIs for a Magento store, not one-time checks — track them on a recurring cadence so layered navigation, indexingStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed., and schema don’t quietly drift back into a mess.
Indexed vs. discovered URL ratio
What it tells you: How much layered navigation is bloating Google’s view of the site. A category with a few hundred products shouldn’t have tens of thousands of discovered URLs.
How to pull it: Search ConsoleA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. → Page indexingThe Google Search Console report (formerly Index Coverage) showing how many of your URLs are indexed vs. not indexed, and grouping the not-indexed ones by reason. report, specifically the “Discovered — currently not indexed” and “Crawled — currently not indexed” buckets. Segment by URL pattern (filter query stringsThe `?key=value` data tacked onto the end of a URL after a question mark — used for tracking, sessions, filtering, sorting, and search — and one of the biggest sources of duplicate URLs and wasted crawling in SEO.) using the report’s URL inspectionA Google Search Console feature that reports how Google sees one specific URL on a property you own. By default it shows the last-indexed snapshot; a separate \"Test live URL\" mode fetches the current version. sample or a crawl export.
Benchmark / realistic range: No universal number — depends on catalog size and filter count. The signal that matters is the trend: a ratio climbing month over month means the canonical/noindexNoindex is a directive that tells search engines to keep a page out of their index, so it won't appear in search results. It works only on pages a crawler can actually fetch — a page blocked in robots.txt can never be noindexed. strategy on layered navigation isn’t holding.
Cadence: Monthly, or after any layered-navigation config change.
Crawl budget spent on filter URLs
What it tells you: Whether GooglebotGooglebot is Google's web crawler — the software that fetches pages so Google can index and rank them. It comes in two variants, Googlebot Smartphone (primary, under mobile-first indexing) and Googlebot Desktop, and runs an evergreen Chromium renderer. is wasting crawl capacityThe number of URLs an engine will crawl in a timeframe. on near-duplicate parameter combinations instead of your real product and category pages.
How to pull it: Search ConsoleGoogle's free tool for monitoring crawling, indexing, and search performance. → Crawl stats report (by response and by
purpose), cross-referenced with server/CDN log files filtered to ? parameter
requests. My Faceted Navigation Auditor can
classify a supplied list of parameter URLs to help size which combinations are
actually being generated.
Benchmark / realistic range: Depends on catalog size and crawl frequencyCrawl frequency is how often a search engine comes back to re-fetch a page it already knows about. Popular pages that change often get refreshed many times a day; stable pages can go weeks or months between crawls — and you influence it indirectly, not by setting a dial. — there’s no fixed “good” percentage. Treat a rising share of crawl hits on parameter URLs relative to canonical product/category URLs as the warning sign.
Cadence: Monthly for established stores; weekly during and after a layered-nav config change.
Canonical signal consistency
What it tells you: Whether filtered and paginated URLs are actually resolving to the canonical you intended, not silently reverting to self-referencing or missing tags after a theme/extension update.
How to pull it: Spot-check filter and paginationPagination splits a large set of content — product listings, blog archives, search results — across multiple sequentially numbered URLs. For SEO, each paginated page should be crawlable, indexable, and self-canonical; Google no longer uses rel=prev/next, but Bing still does. URLs with my Canonicalization Checker — it audits HTML and HTTP canonical signals and flags conflicts.
Benchmark / realistic range: Should be 100% — every filtered URL you intend to suppress should carry a canonical pointing to the clean category page, every paginated page a self-referencing canonical. Any exception is a bug, not a range.
Cadence: After every theme, extension, or layered-navigation setting change; spot-check quarterly otherwise.
Product rich-result eligibility
What it tells you: Whether the JSON-LDJSON-LD (JavaScript Object Notation for Linked Data) is a script-based structured data format, typically paired with the schema.org vocabulary to describe page content for search engines and AI systems. Google recommends it over Microdata and RDFa because it's the easiest format to implement and maintain at scale — but all three work, and structured data isn't a ranking signal. you added (Magento ships none by default) is actually valid and complete enough to earn price/rating rich resultsRich results (formerly 'rich snippets') are enhanced search listings — stars, images, prices, breadcrumbs, video thumbnails, and more — that Google and Bing build from structured data. They're a display feature, not a ranking factor, and eligibility never guarantees they'll show., and whether a leftover theme microdata block is conflicting with it.
How to pull it: Search Console → Enhancements report for Product snippets, or spot-check individual URLs with Google’s Rich Results Test. For a raw-HTML audit of the schema itself — including duplicate-block detection — use my PDP SEO Checker.
Benchmark / realistic range: Depends on catalog size and review coverage — not
every SKU will have aggregateRating data. Track the trend in valid vs. error/
warning items, not an absolute target.
Cadence: Monthly, and immediately after any schema extension update or theme change.
Validation tests: proving a Magento SEO fix took effect
Pass/fail checks for the specific changes covered in this article — run each one right after you make the change, then again on the monitoring cadence noted.
Canonical added to a filtered category URL
Test to run: Load a filtered URL (e.g. /running-shoes?color=blue) in my
Canonicalization Checker.
Expected result: The tool reports a rel=canonical on the filtered URL
pointing to the clean category URL (/running-shoes), with no conflicting HTTP
header canonical.
Failure interpretation: No canonical, a self-referencing canonical, or a canonical pointing somewhere else means the “Use Canonical Link Meta Tag for Categories” setting or your template/extension logic isn’t emitting it for this URL pattern.
Monitoring window: Immediate for the tag itself; 2–4 weeks in Search ConsoleA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results.’s Page indexing reportThe Google Search Console report (formerly Index Coverage) showing how many of your URLs are indexed vs. not indexed, and grouping the not-indexed ones by reason. to see Google pick up the consolidated signal.
Rollback trigger: If indexedStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed.-URL counts for the filter pattern keep climbing
after 4 weeks with the canonical confirmed present, the signal isn’t being
respected — check for a conflicting noindex or robots.txtA plain-text file at the root of a host that tells crawlers which URLs they may and may not request. It controls crawling, not indexing — a blocked URL can still be indexed if it's linked from elsewhere. block on the same URL.
noindex applied to a low-value filter combination
Test to run: Fetch the filtered URL’s rendered HTML <head> (view-source or
curl) and check for <meta name="robots" content="noindex,follow">. Then check
robots.txtA plain-text file at the root of a host that tells crawlers which URLs they may and may not request. It controls crawling, not indexing — a blocked URL can still be indexed if it's linked from elsewhere. for that URL pattern with my
Google Index Checker.
Expected result: The noindex tag is present AND the URL is not disallowed
in robots.txt — Google can only read the tag on a crawlable page.
Failure interpretation: If robots.txt also disallows the pattern, GooglebotGooglebot is Google's web crawler — the software that fetches pages so Google can index and rank them. It comes in two variants, Googlebot Smartphone (primary, under mobile-first indexing) and Googlebot Desktop, and runs an evergreen Chromium renderer.
never fetches the page to see the noindex tag, and the URL can stay indexed
indefinitely from historical signals alone.
Monitoring window: Days for the crawl to pick up the tag; 2–8 weeks for the URL to actually drop out of the index (longer for previously well-linked filter pages).
Rollback trigger: URL still indexed after 8 weeks with noindex confirmed
crawlable — check for a canonical fighting the noindex on the same URL (they’re
contradictory signals; Google may ignore one).
Simple product canonical points to its configurable parent
Test to run: Load a simple-product variant URL (a specific size/color combination) in my Canonicalization Checker.
Expected result: The tool reports a rel=canonical on the simple product URL
pointing to the parent configurable product’s URL, with no conflicting HTTP
header canonical.
Failure interpretation: A self-referencing or missing canonical means “Use Canonical Link Meta Tag for Products” isn’t enabled, or the variant is being treated as visible/indexable independent of the parent relationship.
Monitoring window: Immediate for the tag itself; 2–4 weeks in Search Console’s Page indexing reportThe Google Search Console report (formerly Index Coverage) showing how many of your URLs are indexed vs. not indexed, and grouping the not-indexed ones by reason. to confirm the variant URLs consolidate under the parent rather than accumulating as separate indexed pages.
Rollback trigger: If indexed-URL counts for simple-product URLs keep climbing after 4 weeks with the canonical confirmed present, check whether “Not Visible Individually” is being relied on instead of the canonical tagA rel=\"canonical\" annotation — in the HTML <head> or an HTTP Link header — that tells search engines which URL is the preferred version of duplicate or near-duplicate content. — catalog visibility doesn’t block direct-URL, sitemapA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing., or internal-link crawlingCrawling is how search engines use automated bots (like Googlebot and Bingbot) to discover URLs and download pages. A page has to be crawlable to be indexed, but crawling on its own isn't a ranking factor..
Redirect-on-URL-change is protecting old URLs
Test to run: After changing a product or category URL key, request the old URL
directly: curl -I https://yourstore.com/old-url-key.
Expected result: A single 301 to the new URL (no redirect chainsA → B → C instead of A → C. Each hop loses link equity and adds latency.).
Failure interpretation: A 404 means “Create Permanent RedirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't. for old URL”
was off when the key changed, or the url_rewrite entry didn’t generate — the old
URL and any inbound links/rankings it held are now stranded.
Monitoring window: Immediate — this is a status-code check, no waiting needed.
Rollback trigger: Any 404/chain on a URL that previously ranked — restore the
url_rewrite entry or add a manual redirect before it drops from the index.
JSON-LD Product schema is valid and not duplicated
Test to run: Run the product page through my PDP SEO Checker to audit the raw JSON-LDJSON-LD (JavaScript Object Notation for Linked Data) is a script-based structured data format, typically paired with the schema.org vocabulary to describe page content for search engines and AI systems. Google recommends it over Microdata and RDFa because it's the easiest format to implement and maintain at scale — but all three work, and structured data isn't a ranking signal. for required fields and duplicate blocks, then confirm rich-result eligibility with Google’s Rich ResultsRich results (formerly 'rich snippets') are enhanced search listings — stars, images, prices, breadcrumbs, video thumbnails, and more — that Google and Bing build from structured data. They're a display feature, not a ranking factor, and eligibility never guarantees they'll show. Test.
Expected result: One valid Product block with name, image, description,
offers (price, priceCurrency, availability), and — if you’re claiming star
ratings — aggregateRating/review sourced from real reviews. No second,
conflicting block from leftover theme microdata.
Failure interpretation: Two Product blocks (theme microdata + extension
JSON-LD) usually means Google picks one arbitrarily or discards both as
inconsistent; missing offers fields mean the page won’t qualify for price
snippets at all.
Monitoring window: Immediate for validity; 2–4 weeks in the Search ConsoleGoogle's free tool for monitoring crawling, indexing, and search performance. Enhancements report to confirm rich results actually start appearing.
Rollback trigger: Enhancements report shows rising “Invalid items” after a theme or extension update — disable the newer source until the duplicate is resolved.
Resources worth your time
On the topics that dominate Magento SEOMagento SEO is optimizing a store built on Magento — now Adobe Commerce (paid) or Magento Open Source (free), both running the Magento 2 codebase — to rank in organic search. The defining challenge is layered navigation (faceted filtering), which can spawn huge numbers of duplicate parameter URLs. (on this site)
- Faceted navigationFaceted navigation (faceted search, product filtering) lets visitors refine a list of products or content by attribute — price, color, size, brand, rating. The SEO problem: each filter combination can spawn a distinct crawlable URL, turning a small catalog into millions of near-duplicate pages that waste crawl budget and dilute ranking signals. — the canonical home for the layered-navigation problem and the indexStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed.-or-suppress decision framework.
- CanonicalizationHow search engines pick one canonical URL among duplicates and consolidate signals onto it. and the canonical tagA rel=\"canonical\" annotation — in the HTML <head> or an HTTP Link header — that tells search engines which URL is the preferred version of duplicate or near-duplicate content. — the primary fix for Magento’s parameter duplication.
- Duplicate contentThe same or very similar primary content reachable at more than one URL. There's no general duplicate content penalty — the real costs are possible signal dilution, the wrong URL getting chosen, and less-efficient crawling. — why filter and store-view URLs split signals.
- URL parametersThe `?key=value` data tacked onto the end of a URL after a question mark — used for tracking, sessions, filtering, sorting, and search — and one of the biggest sources of duplicate URLs and wasted crawling in SEO. and crawl budgetThe number of URLs an engine will crawl in a timeframe. — the crawl-side mechanics of parameter sprawl.
My related writing (Ahrefs)
- The Beginner’s Guide to Technical SEO — where these controls fit in the bigger picture.
- Faceted Navigation: Definition, Examples & SEO Best Practices — the full decision framework (I’m a reviewer on this one).
- URL Parameters: A Complete Guide for SEOs.
Official
- Adobe Commerce SEO best practices — the platform’s own guidance.
- Google’s Managing crawling of faceted navigation URLs.
From others
- r/TechSEO and the Magento Stack Exchange — where Magento-specific crawl/index quirks get debugged.
- The Technical Guide to Common Magento SEO Issues (Search Engine Journal, Dan Taylor) — comprehensive practitioner guide covering URL rewrites, configurable/simple product canonicalizationHow search engines pick one canonical URL among duplicates and consolidate signals onto it., and faceted navigationFaceted navigation (faceted search, product filtering) lets visitors refine a list of products or content by attribute — price, color, size, brand, rating. The SEO problem: each filter combination can spawn a distinct crawlable URL, turning a small catalog into millions of near-duplicate pages that waste crawl budget and dilute ranking signals. controls.
- The Ultimate Guide to Duplicate Content in Magento (Vervaunt, Paul Rogers) — the most-cited source for the full duplicate-content source map and the configurable/simple product canonical strategy.
- SEO Considerations for Configurable and Simple Products in Magento (Paul Rogers) — deep dive on canonicalizing simple SKUs to their configurable parent at scale.
- Layered Navigation Causing Problems? Deal With It (Scandiweb) — current Google-aligned guidance on robots.txtA plain-text file at the root of a host that tells crawlers which URLs they may and may not request. It controls crawling, not indexing — a blocked URL can still be indexed if it's linked from elsewhere. disallow as primary faceted-navigation crawl control.
- Magento 2 Layered Navigation SEO: The Ultimate Guide (Mageworx) — detailed walkthrough of parameter URL proliferation with concrete URL examples.
- Product Schema for Adobe Commerce (Lumio) — explains why Luma ships almost no JSON-LDJSON-LD (JavaScript Object Notation for Linked Data) is a script-based structured data format, typically paired with the schema.org vocabulary to describe page content for search engines and AI systems. Google recommends it over Microdata and RDFa because it's the easiest format to implement and maintain at scale — but all three work, and structured data isn't a ranking signal. and walks through building a custom JSON-LDJSON-LD (JavaScript Object Notation for Linked Data) is a script-based structured data format, typically paired with the schema.org vocabulary to describe page content for search engines and AI systems. Google recommends it over Microdata and RDFa because it's the easiest format to implement and maintain at scale — but all three work, and structured data isn't a ranking signal. module against the EAV model.
Magento SEO
Magento SEO is optimizing a store built on Magento — now Adobe Commerce (paid) or Magento Open Source (free), both running the Magento 2 codebase — to rank in organic search. The defining challenge is layered navigation (faceted filtering), which can spawn huge numbers of duplicate parameter URLs.
Parent concept: Ecommerce SEO · Related: Ecommerce SEO, Faceted Navigation, Duplicate Content
Magento SEO
Magento SEO is the practice of optimizing a Magento-powered online store so its product and category pages rank in organic search. The first thing to get straight is which Magento you mean. Magento 1 reached end-of-life in June 2020 and stopped receiving security patches — if you are still on it, migration is the SEO project. The current codebase is Magento 2, which ships in two editions: Adobe Commerce, the paid enterprise version, and Magento Open Source, the free community version. Same underlying platform, different feature sets and support — and the same SEO fundamentals. A separate SaaS product, Adobe Commerce as a Cloud Service (ACCS), launched June 2025 on different infrastructure and drops the Luma theme entirely, so treat it as a third option rather than a variant of the other two.
The single biggest technical SEOTechnical SEO is the practice of making a site easy for search engines to crawl, render, index, and (now) be eligible for AI answers. It's the foundation that lets your content and links rank — not a ranking trick of its own. challenge on Magento is layered navigation — Magento’s name for faceted filtering on category pages (distinct from Adobe Commerce’s paid Live Search facets, which Adobe documents as a different implementation). By default it appends filter selections as URL parametersThe `?key=value` data tacked onto the end of a URL after a question mark — used for tracking, sessions, filtering, sorting, and search — and one of the biggest sources of duplicate URLs and wasted crawling in SEO. (?color=blue&size=medium), and the number of possible combinations grows multiplicatively. Left unmanaged, a few thousand products can generate tens of thousands of near-duplicateThe same or very similar primary content reachable at more than one URL. There's no general duplicate content penalty — the real costs are possible signal dilution, the wrong URL getting chosen, and less-efficient crawling., crawlable URLs that waste crawl budgetThe number of URLs an engine will crawl in a timeframe. and split ranking signals. The standard fixes are canonical tagsA rel=\"canonical\" annotation — in the HTML <head> or an HTTP Link header — that tells search engines which URL is the preferred version of duplicate or near-duplicate content. pointing filtered pages back to the clean category URL, noindex on low-value filter combinations, and robots-level controls — the same toolkit you’d reach for on any faceted ecommerce site. Configurable/simple product variants create a similar duplicate-content problem at a smaller scale — simple SKUs should canonical to their parent configurable product.
Beyond layered navigation, Magento manages SEO-friendly URLsURL structure is how the parts of a web address — scheme, domain, path, query string, and fragment — are organized and formatted. It mostly affects crawling, usability, and how engines understand a page, not rankings directly. through URL rewrites, stored in the url_rewrite database table and editable in the Admin under Marketing → SEO & Search → URL Rewrites. And worth knowing before you assume the platform handles it: Magento 2 does not output JSON-LD structured dataJSON-LD (JavaScript Object Notation for Linked Data) is a script-based structured data format, typically paired with the schema.org vocabulary to describe page content for search engines and AI systems. Google recommends it over Microdata and RDFa because it's the easiest format to implement and maintain at scale — but all three work, and structured data isn't a ranking signal. out of the box. Some themes emit microdata, but proper Product JSON-LDJSON-LD (JavaScript Object Notation for Linked Data) is a script-based structured data format, typically paired with the schema.org vocabulary to describe page content for search engines and AI systems. Google recommends it over Microdata and RDFa because it's the easiest format to implement and maintain at scale — but all three work, and structured data isn't a ranking signal. for rich resultsRich results (formerly 'rich snippets') are enhanced search listings — stars, images, prices, breadcrumbs, video thumbnails, and more — that Google and Bing build from structured data. They're a display feature, not a ranking factor, and eligibility never guarantees they'll show. requires an extension or custom development.
Parent concept: Ecommerce SEO · Related: Ecommerce SEO, Faceted Navigation, Duplicate Content
Build-time retrieval analysis plus live signals for this exact article. The automatic chunk report includes a deterministic readiness score and is ready without a model download.
Search Console
sampleGA4 traffic (28d)
sampleCloudflare traffic (7d)
sampledCrUX field data (28d, phone)
sampleGoogle NLP entities
localChangelog
Revision history
Compare the published article with an archived editorial snapshot. Added and removed words are shown only after you open a comparison.
Updated Jul 19, 2026.
Editorial summary and recorded change details.Summary
Dead-link fix: replaced three 404'd Adobe Experience League citations with their current live URLs after Adobe restructured the commerce-admin doc paths.
Change details
-
Replaced the dead https://experienceleague.adobe.com/en/docs/commerce-admin/catalog/catalog/navigation/search-engine-optimization link (both occurrences) with the current live SEO overview page at .../marketing/seo/seo-overview.
-
Replaced the dead https://experienceleague.adobe.com/en/docs/commerce-admin/catalog/catalog/navigation/url-rewrite link with the current live URL rewrites page at .../marketing/seo/url-rewrites/url-rewrite.
-
Replaced the dead https://experienceleague.adobe.com/en/docs/commerce-operations/release/lifecycle-policy link with the current live software lifecycle policy page at .../release/planning/lifecycle-policy.
Full comparison unavailable — no prior snapshot was archived for this revision.
Updated Jul 18, 2026.
Editorial summary and recorded change details.Summary
Added the configurable/simple-product canonicalization problem (a duplicate-content driver the article didn't previously cover), distinguished Adobe Commerce as a Cloud Service (ACCS) from self-hosted Adobe Commerce/Magento Open Source and from PWA Studio, and distinguished standard layered navigation from Adobe's paid Live Search facets and URL rewrites from HTTP redirects — all per Adobe's current documentation.
Change details
- Advanced
New section on canonicalizing simple product variants to their parent configurable product, with a matching checklist section, cheat-sheet row, validation test, and quiz question.
- Advanced
Added Adobe Commerce as a Cloud Service (ACCS) as a distinct third deployment option (separate from PWA Studio) that drops the Luma theme entirely, and flagged that standard layered navigation and Live Search facets are documented as different implementations.