An ecommerce SEO audit is a technical SEO audit adapted to an online shop: besides the usual checks, it tests the things only shops have, such as filter and sort URLs, products listed under several categories, variants, out-of-stock and discontinued products, and product structured data. Shops fail differently from other sites because their templates multiply: one category with five filters can produce thousands of URLs, and one bug in the product template repeats on every product. This guide is the shop-specific layer on top of the general SEO audit checklist, in the order that matters. For the background on crawling and indexing, start with the technical SEO guide.
Quick answer
- Compare what Google indexed with what you sell. Search Console's Pages report against your number of products and categories shows at once whether the shop is under- or over-indexed.
- Control the filters. Sort, view and most filter combinations should not be indexed; a few filters people search for can be real landing pages.
- One URL per product, whatever category path the visitor came through, with a self-referencing canonical.
- Category pages are your main landing pages: unique titles, some real text, self-referencing canonicals on page 2 and beyond, and no
noindex. - Decide what happens to out-of-stock and discontinued products before Google decides for you.
- Product structured data must match the page: the same price, currency and availability the visitor sees.
- Audit speed on the product and category templates, where the large image and the product grid live.
Why a shop needs its own audit
A brochure site has a few dozen pages that people wrote by hand. A shop has a handful of templates that generate hundreds or thousands of pages, plus URL parameters that generate many more. That changes where problems come from:
- URL multiplication. Filters, sorting, pagination, tracking parameters and internal search each create new URLs showing overlapping content. Google's documentation on faceted navigation says crawling these URLs can cost sites large amounts of computing resources and slow down the discovery of new pages.
- Duplicate products. The same product reached through
/shoes/runner-xand/sale/runner-x, or a manufacturer's description copied word for word across hundreds of shops. - Lifecycle. Products sell out, come back and are discontinued, and each state needs a different answer.
- Rich results. Price, availability and review stars in search depend on structured data that must stay in sync with the page.
The audit below follows the path a searcher takes: category, filter, product.
1. Indexation: what Google has against what you sell
Start with numbers. Count your live products and categories, then open Search Console → Indexing → Pages.
- Far fewer indexed pages than products: products are blocked, canonicalised elsewhere,
noindex, or not linked well enough to be crawled. Check a few product URLs with URL Inspection. - Far more indexed pages than products and categories: parameter, filter or internal search URLs are being indexed.
- Read the "Why pages aren't indexed" table. Large numbers under "Duplicate without user-selected canonical" or "Alternate page with proper canonical tag" point at variants and parameters; "Crawled – currently not indexed" on products often means thin or duplicate descriptions.
Then check that the XML sitemap lists every product and category URL you want indexed, and nothing else: no filtered URLs, no redirected or deleted products.
2. Filters, sorting and parameters
Open a category and use every filter and sort option. Note the URLs they create.
- Sort and view parameters (
?sort=price,?view=grid) show the same products in another order. Their canonical should point at the unsorted category. - Filter combinations (
?colour=red&size=42&brand=x) usually have no search demand. Google's faceted navigation documentation recommends preventing crawling of these URLs with robots.txt when you do not need them indexed, and returning a 404 for filter combinations with no results rather than an empty page. - Filters people search for ("red trekking shoes", "women's trail shoes") deserve a real landing page: a clean, static URL, its own title and H1, a line of text, a self-referencing canonical and a link from the category.
- Filter order. If
?colour=red&size=42and?size=42&colour=redboth work, the same page has two URLs. Always build parameters in one order.
The full per-parameter table, with what to canonicalise, what to noindex and what to block, is in faceted navigation and parameter URLs. Do not combine a robots.txt block with a canonical or noindex on the same URLs: Google cannot read tags on a page it may not crawl.
3. Category pages
Category pages usually rank for the broad, high-volume searches, so audit them as landing pages.
- Unique title and H1 that name the category in searchers' words: "Women's waterproof trekking shoes", not "Category 14".
- Some real text: a short intro that helps choose, placed where it does not push products out of view. A category with 40 products and 30 words is normal and fine; one with 2 products and no text may be thin.
- Pagination: page 2 and beyond have their own URL, a self-referencing canonical, "Page 2" in the title and normal
<a href>links. Pointing every page's canonical at page 1 hides the products that only appear deeper. See pagination after rel=prev/next. - Empty categories: either fill them,
noindexthem temporarily, or remove them and redirect. - Breadcrumbs on every category and product, with BreadcrumbList markup.
4. Product pages
Audit one product from each product type, and one that is out of stock.
- One canonical URL. A product in three categories has one address, usually
/products/runner-xor/shoes/runner-x. Category paths either redirect to it or carry a canonical pointing at it, and internal links use it. - Unique content. A manufacturer's description appears on every shop that sells the product. Add what only you have: sizing notes, your own photos, use cases, real questions from customers.
- Titles with the product name and a key attribute: "Alpina Pro trekking shoe, waterproof · Outdoor Shop".
- Images with descriptive alt text and file sizes that do not delay the page; the main product image is usually the Largest Contentful Paint element.
- Reviews in the HTML, not only in a widget that loads after the page.
Variants
Colours and sizes can live on one product URL with a selector, or on separate URLs per variant. Both work in Google Search; what matters is that you choose one pattern and apply it consistently. With separate URLs, each variant URL either has its own title and a self-referencing canonical, or canonicalises to the main product. Google's product variant structured data (ProductGroup with hasVariant and variesBy) describes the relationship in either case.
5. Out-of-stock and discontinued products
This is where shops lose rankings quietly. Check what your platform does today, then set a rule.
| Situation | What to do |
|---|---|
| Temporarily out of stock | Keep the page live and indexable, show when it returns and offer alternatives; set availability to OutOfStock in the schema |
| Discontinued, with a successor | 301 redirect to the successor |
| Discontinued, no replacement | 301 to the closest category, or return 404 or 410 |
| Seasonal, returns every year | Keep the URL; update the page when it is back |
Do not redirect every removed product to the home page: Google often treats that as a soft 404. 404 vs 410 vs redirect covers the choice, and the out-of-stock fix page has the WooCommerce steps.
6. Product structured data
Product markup makes a product eligible for price, availability and review stars in results. Check one product of each type with a schema validator:
- Required properties present for Product and its Offer, such as the name, image and price, per Google's product structured data documentation, plus availability, which Google recommends.
- Values match the visible page: the same price, the same currency, the same stock state. Stale prices in the schema are a common result of caching.
- One Product block per product. A theme, an SEO plugin and a reviews app each printing their own gives Google two or three conflicting products.
- Ratings only from reviews shown on the page.
Product schema: price, availability and reviews shows the complete markup, including shipping, returns and variants.
7. Speed on product and category templates
Shops carry the heaviest pages on the web: large images, product grids, reviews, chat, tracking and recommendation scripts. Audit speed per template, not on the home page:
- Product page: the main image is usually the LCP element. It should be in the HTML, correctly sized and not lazy-loaded.
- Category page: a grid of 24 to 48 images. Only the first row should load eagerly; the rest lazy-load with width and height set to avoid layout shift.
- Third-party scripts: reviews, chat, personalisation and several analytics tags often cost more than the shop itself.
Google's Core Web Vitals thresholds are the target: LCP of 2.5 s or less, INP of 200 ms or less and CLS of 0.1 or less, at the 75th percentile of real visits. Core Web Vitals for e-commerce product and category pages goes template by template.
8. Cart, checkout, account and internal search
These pages have no value in search results. Keep them out:
- Cart, checkout and account pages:
noindex, not in the sitemap. On WooCommerce they must also never be cached, or visitors see each other's carts. - Internal search results (
/search?q=…):noindex, and consider blocking the path in robots.txt if Googlebot spends many requests there. Spam searches linked from other sites can otherwise create indexed pages with your brand next to unwanted text. - Login and wishlist links: fine to mark
rel="nofollow".
How getReport checks it
Run the report on a category page, a product page, an out-of-stock product and the home page. Each report checks indexability, the canonical, pagination links, breadcrumbs, image alt text and broken links, plus the structured data module (required properties and rich result eligibility) and the speed module with Core Web Vitals. On WooCommerce stores, the WooCommerce checker adds the Product schema fields, out-of-stock handling, cart fragments and whether the cart and checkout are cached. The schema validator shows every structured data block on a product page.
To check many URLs at once, export the product URLs from your sitemap and paste up to 1,000 of them into the bulk URL checker: it shows the status, redirect chain, canonical and noindex of each, which finds deleted products still in the sitemap and category paths that do not canonicalise. A full crawl of the shop is a funded unlock.
Platform notes
WooCommerce. Check that out-of-stock products are handled on purpose (WooCommerce → Settings → Products → Inventory), that only one plugin prints Product schema, and that cart and checkout are excluded from the page cache. The WooCommerce store checklist covers the speed side.
Shopify. Shopify generates canonicals, the sitemap and robots.txt. Products linked through collections (/collections/shoes/products/runner-x) canonicalise to /products/runner-x; check your theme links to the canonical URL directly. Filter URLs from Shopify's storefront filtering carry parameters, and robots.txt can be edited through the robots.txt.liquid template. See Shopify: what you can fix and what you cannot.
Magento and Adobe Commerce. Layered navigation creates the most parameter URLs of any platform; check the "Use Categories Path for Product URLs" and canonical settings under Stores → Configuration → Catalog → Catalog → Search Engine Optimization.
Common mistakes
- Auditing the home page of a shop. Categories and products bring the search traffic; audit their templates.
- Indexing every filter combination. Thousands of thin, near-duplicate pages compete with your categories.
- Canonical from every paginated page to page 1. Products deeper in the list stop being found.
- Deleting sold-out products without a redirect, or redirecting them all to the home page.
- Schema prices that lag behind the page after a sale starts or ends.
- Manufacturer descriptions on every product. The same text on hundreds of other shops gives Google little reason to pick yours.
Questions people ask
What is an ecommerce SEO audit?
An ecommerce SEO audit is a technical SEO audit of an online shop that adds the checks shops need: how filter, sort and parameter URLs are handled, whether each product has one canonical URL, how category pages and pagination are set up, what happens to out-of-stock products, and whether product structured data matches the visible price and availability. It ends in a prioritised list of template fixes.
Should filter pages be indexed on an online shop?
Most should not. Sort orders and multi-filter combinations duplicate your categories and waste crawling, so canonicalise or block them. The exception is a filter people actually search for, such as a colour or a brand within a category. Give those a clean URL, their own title, H1 and short text, a self-referencing canonical and a link from the category.
Should product variants have their own URLs?
They can, but they do not have to. One URL with a colour and size selector is simplest. Separate URLs per variant help when people search for a specific variant, such as a colour. Either way, be consistent: each variant URL needs its own title and canonical, or a canonical to the main product, and product variant structured data can describe the group.
How do I audit SEO for a Shopify store?
Check the parts Shopify leaves to you: that the theme links to /products/ URLs rather than collection paths, that product and collection titles and descriptions are unique, that filter parameters are not indexed, that apps do not add duplicate Product schema or slow scripts, and that sold-out products are handled on purpose. Shopify handles the sitemap, canonicals and robots.txt by default.