Magento ecommerce seo is mostly a configuration problem before it’s a content problem. Adobe Commerce and Magento Open Source ship with settings that are reasonable for a store of 200 products and actively harmful on a catalog of 20,000 — layered navigation generating unbounded URLs, product URLs duplicated under every category path, canonicals switched off by default.
Fix those first. A well-configured Magento store is a genuinely strong SEO platform; a default one generates its own problems faster than any content team can outrun them.
Turn on the canonical settings that ship disabled
Under Stores → Configuration → Catalog → Search Engine Optimization, two settings deserve immediate attention: “Use Canonical Link Meta Tag for Categories” and “Use Canonical Link Meta Tag for Products.” Both default to No on many installs, which means every duplicate variant of a page competes with itself.
Set both to Yes. The product canonical becomes the clean product URL regardless of which category path was used to reach it, and the category canonical resolves the sorted and filtered variants back to the base listing. That single change resolves a large share of duplicate-URL findings on a typical Magento crawl.
Related setting: “Use Categories Path for Product URLs.” Set it to No. With it on, the same product exists at /shoes/running/acme-trail-400.html, /sale/acme-trail-400.html, and every other category it belongs to. Serving products from a single flat path removes the duplication rather than canonicalizing around it, and it survives category restructures without breaking URLs.
Layered navigation is the biggest risk on the platform
Magento’s layered navigation is faceted navigation, and it generates URLs from attribute combinations without limit. Five filterable attributes with six values each produces roughly 46,000 combinations per category; across 200 categories that’s millions of crawlable URLs from one feature, plus sort order and pagination parameters on top.
Handle it deliberately rather than looking for one switch:
- Restrict which attributes are filterable at all. In the attribute settings, “Use in Layered Navigation” should be enabled only for attributes shoppers genuinely filter on. Every extra one multiplies the URL space.
- Block parameter paths in robots.txt for parameters that should never be crawled —
?product_list_order=,?product_list_mode=,?product_list_limit=, and price ranges, which generate an effectively infinite space. - Canonicalize filtered views back to the clean category URL where the facet carries no independent search demand, such as color or size.
- Use noindex, follow where a filtered page must stay crawlable for link discovery but shouldn’t be indexed. Remember that robots.txt disallow and noindex are mutually exclusive: a blocked URL is never fetched, so its noindex is never read.
- Promote high-demand facets to static category URLs. If “waterproof hiking boots” has real search volume, build it as a proper category with its own title, H1, and intro copy rather than leaving it as a filter state.
That last point is where the upside lives. Magento’s attribute system makes it straightforward to spin up attribute-driven categories, and those pages capture demand the parent category never will.
Pagination and the rel=next myth
Several Magento SEO extensions still advertise rel=”next” and rel=”prev” support as a feature. Google stopped using those signals for indexing years ago and announced it publicly. They’re harmless and useless.
What matters on Magento listings: paginated pages should self-canonicalize to themselves rather than to page one, stay crawlable, and be linked with real anchor tags. Watch out for the default behavior where ?p=1 resolves separately from the clean category URL — canonicalize or redirect one to the other. And keep the category description on page one only; if your template prints it on every page, you’ve generated duplication across the whole series.
If a category runs to 40 pages, the answer is more subcategories, not better pagination markup. Deep pages simply don’t get crawled often enough to matter.
Templates, meta, and the scale of the fix
Magento’s meta templates let you set title and description patterns per store view, and that leverage is worth using properly. A pattern like {{name}} — {{attribute}} | {{store}} beats hand-writing thousands of titles, but check the output length: templates that append a long store name push titles past the point where they’re truncated in the SERP.
The default product H1 is the product name, which is usually correct. Verify it isn’t rendering the SKU string on your theme. Also check that your theme outputs one H1 per page — several popular Magento themes put the store logo in an H1, which competes with the actual page heading across the entire site.
Magento generates Product structured data natively in recent versions, but coverage varies by theme. Confirm that name, image, description, brand, SKU or GTIN, and offers with price, priceCurrency, and availability all appear. Availability must reflect reality — schema claiming InStock on a sold-out page puts your rich results at risk. Review markup must not be self-serving: genuine customer ratings are fine, ratings about your own products written by you are not.
URL rewrites, redirects, and migration debris
Magento maintains a URL rewrite table, and on a mature store it accumulates. Renaming a category regenerates rewrites for every product beneath it, and after a couple of restructures you’ll find four-hop redirect chains that waste crawl and leak equity.
Audit the rewrite table periodically and flatten chains to a single hop. Also check “Create Permanent Redirect for URLs if URL Key Changed” is enabled, since without it a URL key change silently 404s the old address. Migrations from Magento 1 are a particular source of debris; verify old URLs still resolve in one hop to their current equivalents.
Speed on a heavy platform
Magento is not a light framework and default installs are slow. Full-page cache with Varnish, Redis for sessions and cache, production mode with static content deployed and merged, and image optimization are the baseline — not optimizations, baseline. Without them, Core Web Vitals on category pages will be poor regardless of anything else you do.
Be realistic about the payoff. Speed is a genuine ranking input and a bigger conversion input, but it’s a tiebreaker rather than a rescue. A fast page carrying the manufacturer’s description still loses to a slower page with original content, which brings us to the part no platform configuration fixes.
Content is still the part Magento can’t solve
Every configuration above gets your pages crawled and indexed cleanly. None of it gives Google a reason to rank you above forty other retailers pasting the same manufacturer description. Original copy — sizing notes from returns data, compatibility warnings from support tickets, honest comparisons against the nearest products in your own catalog — is what breaks the tie.
Same on categories: a short intro above the grid and a real buying guide below it, because category pages usually carry more commercial search volume than product pages and deserve the investment. And set a stock lifecycle policy so discontinued products get 301’d to their nearest equivalent or 410’d cleanly, rather than silently deleted by a catalog sync.
SEO Rocket covers the research and writing side of that: keyword research with volume, difficulty, and country-specific indexes to decide which categories and products deserve pages, content gap analysis against up to five competing retailers, an AI writer for category and product copy that isn’t recycled boilerplate, and full-site crawls verified at 900+ pages that surface duplicate titles, thin pages, and crawl issues with the actual URLs attached. It does not manage product feeds, Merchant Center, or inventory — those stay in Magento.
Expect configuration changes to need four to twelve weeks of recrawling before rankings respond, and expect your indexed URL count to drop during layered-navigation cleanup, which is the fix working. Daily movement of two or three positions is normal noise; judge on four-week trends and use Search Console as ground truth over third-party estimates.