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 SEO 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 redirects).
- 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-duplicate pages, get confused about which one to show, and waste time
crawling 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 tag (a pointer to the main version) and by marking low-value filter pages noindex (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 description — fill them in instead of leaving Magento’s defaults.
- Structured data (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 indexed as separate near-duplicate pages — point them back to the parent product with a canonical tag 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 SEO 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 URLs run through theurl_rewritetable — distinct from HTTP redirects, 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 redirect 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/index 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-duplicate URLs. This is the canonical faceted-navigation failure mode, and Gary Illyes has put numbers on how much grief it causes Google — faceted navigation is the largest single source of crawl-waste complaints they receive (see the Quotes tab). The damage on your side: duplicate/near-duplicate content, index bloat, crawl budget burned on junk, and internal PageRank 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.txtDisallowon the same URL, or Googlebot can’t read the tag.- Consider robots.txt disallow for purely combinatorial parameter spaces if crawl budget is the acute problem — but know it controls crawling, not indexing, 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 links, sitemap inclusion. That’s where Magento faceted nav turns from liability into long-tail asset. (Full treatment in the faceted navigation hub, the canonical home for this topic on the Ecommerce side; the crawl-side mechanics live with URL parameters and crawl budget.)
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 tag 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-LD structured data 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 results 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.
The rest of the technical surface
- Canonical tags. Beyond categories/products, watch the homepage
(
/vs?___store=and similar store-view params), pagination, and the store-view/locale parameters Magento appends. See canonicalization and the canonical tag 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 hreflang. 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 Vitals. 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 rendering 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 + noindex strategy for parameter URLs. This is the biggest share of the technical SEO value.
- Configurable/simple product canonicalization — 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 SEO 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/index rules.
- Configurable/simple products: canonical simple SKUs to their parent configurable product; catalog-visibility settings alone don’t stop Google from finding and indexing them via sitemap or direct URL.
- URLs: SEO-friendly URLs run through the
url_rewritetable (Admin → Marketing → SEO & Search → URL Rewrites) — distinct from HTTP redirects, which Magento can auto-create as 301s. Enable web-server rewrites and redirect-on-URL-change; inventory affected URL patterns before changing category-path or suffix settings. - Schema gap: Magento 2 emits no JSON-LD by default (microdata in some
themes only). Google recommends JSON-LD, so rich-result schema is an extension/
custom-dev task — and watch for duplicate
Productblocks. - Also handle: pagination (unique self-referencing canonicals, never noindex the series), store-view duplication + hreflang for multi-locale stores, out-of-stock policy, and Core Web Vitals — noting PWA Studio and ACCS are two different headless paths, not interchangeable.
- Priority order: layered navigation → configurable/simple product canonicalization → 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, sitemaps, robots.txt).
- 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 SEO.
- 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-LD recommended. - Structured data for ecommerce sites — the ecommerce schema types Google supports.
- Pagination & incremental page loading — unique URLs, self-canonical pages, noindex for filters not pagination.
- 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 SEO that actually move the needle — faceted navigation, structured data, and pagination. 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 data. Jump to quote
- “Providing both structured data on web pages and a Merchant Center feed maximizes your eligibility to experiences and helps Google correctly understand and verify your data.” Jump to quote
Google — pagination (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 tags 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 navigation 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 crawlers 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 canonicalization
- “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 tag 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 GSC indexed-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.txtDisallowtogether). - 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, sitemap, or internal-link indexing.
URLs & redirects
- “Use Web Server Rewrites” enabled (no
index.phpin URLs). - SEO-friendly URL keys set on products and categories.
- “Create Permanent Redirect for old URL” enabled before any URL-key edits.
- Decide on category-path-in-product-URL (off avoids multi-URL duplication).
Structured data
- Add
ProductJSON-LD (Magento 2 ships none) via extension or dev. - Confirm no duplicate schema (theme microdata + extension JSON-LD).
-
aggregateRating/reviewonly from real reviews.
On-page & indexing
- Unique titles + meta descriptions on products and categories.
- Category description copy filled in (blank by default).
- Pagination: unique self-referencing canonicals; series not noindexed.
- Out-of-stock / discontinued product policy decided (don’t strand 404s).
International & performance
- Store-view duplication controlled; hreflang complete & bidirectional if multi-locale.
- Full-page cache (Varnish), CDN, and WebP images for Core Web Vitals.
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 | Index? | 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”) |
Pagination (?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 description; enable Create Permanent Redirect for old URL.
Hard facts
- Magento 2 emits no JSON-LD by default (microdata in some themes only).
- Google recommends JSON-LD over microdata/RDFa.
noindexneeds a crawlable page — don’t combine with robots.txtDisallow.- 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.txtDisallowon the same URL → tag never read.noindex+ canonical on the same URL → contradictory signals.- canonical alone for crawl budget → source pages still get crawled.
4. Control the URL space, then the index.
Magento’s url_rewrite system and web-server rewrites govern what URLs exist and
where they redirect. 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-LD 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 redirects. - Crawlers / 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 chains. This is how you size the faceted-navigation problem.
- Google Search Console — the Page indexing report (Discovered/Crawled — currently not indexed often balloons on parameter sprawl) and Crawl stats to see budget burned on filter URLs.
- Rich Results Test / Schema Markup Validator — confirm your added JSON-LD is valid and that you don’t have a competing microdata block.
- Magento SEO extensions — Mageworx, Mirasvit, Amasty, and similar add JSON-LD, finer canonical control, and layered-navigation indexation rules that Magento core leaves to you. (Evaluate for duplicate-schema behavior.)
- Log file analysis — 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, indexing, 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 Console → Page indexing report, specifically the “Discovered — currently not indexed” and “Crawled — currently not indexed” buckets. Segment by URL pattern (filter query strings) using the report’s URL inspection 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/noindex 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 Googlebot is wasting crawl capacity on near-duplicate parameter combinations instead of your real product and category pages.
How to pull it: Search Console → 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 frequency — 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 pagination 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-LD you added (Magento ships none by default) is actually valid and complete enough to earn price/rating rich results, 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 Console’s Page indexing report to see Google pick up the consolidated signal.
Rollback trigger: If indexed-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.txt 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.txt 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, Googlebot
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 report 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 tag — catalog visibility doesn’t block direct-URL, sitemap, or internal-link crawling.
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 chains).
Failure interpretation: A 404 means “Create Permanent Redirect 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-LD for required fields and duplicate blocks, then confirm rich-result eligibility with Google’s Rich Results 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 Console 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 SEO (on this site)
- Faceted navigation — the canonical home for the layered-navigation problem and the index-or-suppress decision framework.
- Canonicalization and the canonical tag — the primary fix for Magento’s parameter duplication.
- Duplicate content — why filter and store-view URLs split signals.
- URL parameters and crawl budget — 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 canonicalization, and faceted navigation 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.txt 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-LD and walks through building a custom JSON-LD 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 SEO 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 parameters (?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-duplicate, crawlable URLs that waste crawl budget and split ranking signals. The standard fixes are canonical tags 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 URLs 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 data out of the box. Some themes emit microdata, but proper Product JSON-LD for rich results 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.