Skip to main content

Ecommerce SEO Audit: A 10-Step Checklist for Online Stores

Run an ecommerce SEO audit in 10 steps: indexing, duplicate and filter URLs, out-of-stock pages, product data, schema, speed and internal links.

Ecommerce SEO Audit: A 10-Step Checklist for Online Stores

An ecommerce SEO audit is a structured check of whether search engines can crawl, index and understand your category and product pages, and whether those pages deserve to rank. It differs from a general site audit in scale and in source: most problems on a store come from templates and product data, so one fix in a template or a field can repair thousands of URLs at once.

The short version, in the order that saves the most time: set a baseline, check indexing, find duplicate URLs, control faceted navigation, decide what happens to out-of-stock products, audit titles and meta descriptions by template, audit product content and product data, validate structured data, check Core Web Vitals, then fix internal links. The rest of this post turns each step into concrete checks, ends with a condensed ecommerce SEO checklist, and lists the audit mistakes that waste the most hours.

Exports and access to line up before the crawl

  • Google Search Console access for the domain property, so you see every subdomain and protocol.
  • Analytics (GA4 or your platform's reports) with organic revenue per landing page, so you can prioritize by money instead of by URL count.
  • A crawler such as Screaming Frog or Sitebulb, set to crawl as a smartphone user agent.
  • A full product export (CSV from Shopify, WooCommerce, Magento or your PIM) with title, description, brand, GTIN, category, variant options, price, availability and image fields.
  • Merchant Center access, if you run Shopping ads or free listings, because feed errors often point to the same data problems as SEO issues.

For a store with 2,000 to 20,000 SKUs, plan one to two days for the audit and keep the fix list separate. Mixing auditing and fixing is how audits never finish.

Step 1: set a baseline and group URLs by page type

Export clicks, impressions and average position per page from Search Console, and organic revenue per landing page from analytics. Then label every URL by type using its pattern: home, category (/collections/, /category/), product (/products/, /p/), brand, filter or parameter URLs, blog and static pages.

This grouping is the most useful thing in the whole audit. It shows which template earns the money (usually category pages for broad queries, product pages for model and SKU queries) and it lets you count problems per template instead of per URL. "412 product pages have a missing meta description" is one template fix, not 412 tasks.

Step 2: check what Google has actually indexed

Open the Page indexing report in Search Console and compare three numbers: the products and categories you sell, the URLs in your XML sitemap and the URLs Google reports as indexed. If you sell 4,000 products and Google indexes 2,600 product URLs, the gap is your first finding.

Then read the reasons for pages that are not indexed. Google's report uses these labels, and each one has a typical ecommerce cause:

Page indexing reasons and their usual cause on a store

Crawled - currently not indexedThin product pages, often with a copied supplier description and no attributes
Discovered - currently not indexedGoogle knows the URL but has not crawled it yet, common when filter URLs eat crawl capacity
Duplicate without user-selected canonicalVariant URLs, collection paths or parameter URLs without a canonical tag
Duplicate, Google chose different canonical than userYour canonical points one way, your internal links and sitemap point another
Not found (404)Deleted products still linked from menus or the sitemap
Server error (5xx)Category pages that time out under load
Soft 404Pages that look empty to Google, such as sold-out products with no content or categories with zero items
Page with redirectFine when intended, a problem when the sitemap still lists them
URL marked 'noindex'Fine when intended, a problem when the sitemap still lists them
Showing 9 of 9 rows
Most of these labels trace back to a template or a sitemap, not to one broken page.

Use the URL Inspection tool on two or three examples per reason to confirm the pattern before you write it down as a template issue.

Step 3: find duplicate URLs from variants, collections and parameters

Stores create duplicates by design. The same pair of running shoes can live at /products/trail-runner, /products/trail-runner?variant=4417, /collections/sale/products/trail-runner and /products/trail-runner?utm_source=newsletter. Crawl the site and group URLs that return the same main content.

Google's URL structure guidance for ecommerce sites recommends that each variant can be identified by its own URL, that optional variant parameters are dropped from the canonical URL, and that you avoid internal links to temporary parameters such as session IDs and tracking codes. It also notes that Google ignores URL fragments, so content shown only through #black or #white will not be seen as separate pages.

On Shopify, canonical tags are generated automatically, so the usual problem is not a missing canonical but conflicting signals: a theme that links to products through collection paths, an app that adds a second canonical tag, or a sitemap that lists URLs the canonical points away from. Check the rendered HTML of a product page reached through a collection, not only the direct URL.

Step 4: control faceted navigation

Filters for size, color, brand and price can turn 300 category pages into millions of crawlable URL combinations. Google's faceted navigation documentation is direct about it: often there is no good reason to let filtered URLs be crawled, and you can block them in robots.txt or implement filters with URL fragments.

If some filter pages do deserve to rank ("women's waterproof hiking boots" can be a real query that a filtered category answers best), Google recommends using the standard & separator for parameters, keeping filters in a consistent order so the same combination never exists under two URLs, and returning a 404 status when a combination has no results.

The audit check: crawl one large category with filters enabled, count the URLs it produces, and compare that with the number of filter pages you actually want indexed. Make a short allowlist of indexable combinations with search demand, and treat everything else as crawl waste. The category pages checklist covers what an indexable filter page then needs on the page itself.

Step 5: give sold-out and discontinued products one rule set

Every store has products that run out, and most handle them inconsistently: some return a 404, some redirect to the home page, some stay live with an empty buy box. Audit a sample of 20 unavailable products and write down what each one does. Then apply one rule set. A decision path that works for most stores is below. When a product is coming back, also show a restock date or a back-in-stock signup, set availability to OutOfStock or BackOrder in structured data and the feed, and link to in-stock alternatives. An archive page keeps the specifications and links to the closest alternatives.

What to do with a sold-out or discontinued product

Loading diagram
Only a product with no successor, no backlinks and no traffic should end in a 404 or 410.

Avoid redirecting everything to the home page. Google's help page on 404 errors describes sending visitors from a page that no longer exists to the home page as a soft 404, and recommends a 404 or 410 when deleted content has no replacement. Shoppers who wanted a specific product get nothing useful from the redirect either.

Step 6: audit titles, meta descriptions and H1s by template

Export the crawl and check per page type: missing title, duplicate title, title too long, missing meta description, duplicate meta description, missing or duplicate H1. Shopify's SEO best practices give practical targets: title tags under 60 characters, meta descriptions under 160.

Duplicates on a store almost always come from a template pattern such as "{Product name} | Store" combined with product names that are not unique ("Classic Tee" in 14 colors). Fix the pattern, not the pages. A product title template that holds up across most catalogs:

  • Product pages: Brand + product type + key attribute + variant, for example "Merrell Moab 3 Waterproof Hiking Boot, Women's, Brown".
  • Category pages: the category name shoppers search for + a qualifier, for example "Women's Hiking Boots: Waterproof and Leather".
  • Meta descriptions: one concrete fact per product (material, fit, compatibility) plus a service fact you can back up, such as free returns.

Preview a handful of results in the SERP snippet preview before you roll a template out, and use the title optimization guide to decide which attributes belong in a product title.

Step 7: audit product content and product data

This is the step most audit checklists skip, and on a store it is often where rankings are lost. A product page ranks for the words on it. If the page is a photo, a price and a two-line supplier description shared with 40 other retailers, there is little for Google to index and little for a shopper to decide on.

Run these checks on the product export rather than on the crawl, because the export holds the fields that templates render:

  • Short descriptions: count products with fewer than 50 words of description. These are your thin-content candidates.
  • Copied descriptions: find descriptions that are identical across two or more of your products, and spot-check bestsellers against the manufacturer's site for verbatim supplier copy.
  • Missing attributes shoppers search for: material, size, dimensions, compatibility ("fits iPhone 15"), pack size. A missing attribute is a missing long-tail query and usually a missing filter value as well.
  • Missing identifiers: brand and GTIN, which both feed structured data and Shopping listings.
  • Images: products with one image or none, and images without alt text. The image alt text generator is useful for small batches.
  • Category assignment: products in no category, or only in a catch-all such as "New" or "Sale", get few internal links and little context.

Record the counts per category, then compare them with the organic revenue from step 1. A category with high revenue and a high share of thin products is where enrichment pays back first. This is the kind of work an AI-first PIM such as WISEPIM handles in bulk: it fills missing attributes and rewrites descriptions with AI, and its quality rules can flag a meta title outside 30 to 60 characters or a missing material before the product is pushed to the store.

Step 8: validate product structured data

Product markup tells Google what the page sells and makes it eligible for richer results. For merchant listings, Google's structured data documentation requires a Product with name, image and offers, and an Offer with price and priceCurrency. Recommended properties include gtin, brand, color, size and availability, where availability takes values such as InStock, OutOfStock, BackOrder and PreOrder. Variants can be grouped with ProductGroup.

Check a sample per template with the Rich Results Test, then look at the Merchant listings and Product snippets reports in Search Console for errors across the site. The most common ecommerce failures are not syntax errors but data mismatches:

  • The markup price differs from the visible price, often after a sale ends or when the theme reads the compare-at price.
  • The markup says InStock while the page says sold out.
  • gtin is filled with an internal SKU instead of a real GTIN.
  • Every variant reports the same color and size, because the theme reads the parent product.

To test a fix before it goes into the theme, build an example with the product schema generator and compare it with what your template outputs.

Step 9: check speed and Core Web Vitals per template

Google's Core Web Vitals guidance sets these targets for a good experience: Largest Contentful Paint within 2.5 seconds, Interaction to Next Paint under 200 milliseconds and Cumulative Layout Shift under 0.1. Search Console's Core Web Vitals report groups URLs with similar issues, which on a store maps neatly to templates.

Ecommerce pages share the same culprits: oversized hero and product images, review and chat widgets that load before the content, app scripts left behind after an app was removed, and image galleries that shift the layout while loading. Test one product page and one category page on a mid-range phone, and list each script by the app or feature that loads it.

Step 10: fix internal links and orphan products

A product that no category page or menu links to is hard for Google to find and often treated as unimportant. Compare the URLs in your product export with the URLs your crawler reached from the home page: products in the export but not in the crawl are orphans. Also check click depth (key categories within three clicks of the home page), breadcrumbs on every product page and pagination that crawlers can follow.

Then look for keyword cannibalization: two pages competing for the same query, such as a category and a filter page, or a blog post and a category. In Search Console, filter the Performance report by a query and look at the Pages tab. If several URLs share the impressions and none ranks well, pick one target page and point the others at it with links or redirects. The keyword research guide helps decide which page should own which query.

WISEPIM's Keyword Cannibalization report groups the queries where several of your own pages compete, sorted by severity.

Finally, check the links that point in from other sites. Open the Links report in Search Console, sort the top linked pages and make sure none of them return a 404 or redirect to the home page. A discontinued product with backlinks is exactly the case from step 5 where a redirect to a successor or the closest category is worth the effort.

Ranking findings by indexing impact, fix type and revenue

An audit produces more issues than any team can fix in a quarter. Sort them with three questions:

  1. Does it stop pages from being indexed? Robots blocks, wrong canonicals, noindex on money pages and soft 404s on live products come first, because nothing else matters for a page Google does not show.
  2. Is it a template or a data fix? One theme change or one bulk field update that fixes 2,000 URLs beats 50 manual page edits.
  3. How much organic revenue sits on the affected pages? Use the baseline from step 1. Fix the categories that already earn before the ones that might.

The one-screen ecommerce SEO audit for every quarter

A one-screen version of the audit to reuse every quarter:

Quarterly ecommerce SEO audit checklist

0 of 18 done0%
Tick each item off per template, and re-run the whole list after every migration.

Audit habits that waste the most time

  • Auditing URLs instead of templates. A crawler report with 18,000 warnings looks alarming. Grouped by template, it is often six fixes.
  • Treating every crawler warning as urgent. A missing meta description on a sorted filter URL that is blocked anyway does not matter.
  • Ignoring the product export. The crawl shows symptoms; the export shows the empty fields that cause them.
  • Skipping the revenue column. Without it, teams fix the easiest pages instead of the most valuable ones.
  • Auditing once. Imports, new apps and theme updates reintroduce the same problems. Re-run the condensed checklist every quarter and after every migration.

Keep the audit running between audits

Most findings in an ecommerce SEO audit come back because the catalog keeps changing. WISEPIM connects to Google Search Console and reports on sitemap coverage, so you see which products are missing from your sitemap or not indexed, and flags pages that compete for the same query in its keyword cannibalization report. Combined with quality rules on the product data itself, that turns the quarterly audit into a shorter check of what changed.

WISEPIM's Sitemap Coverage matches each sitemap URL to a product in your catalog, so URLs without a matching product stand out.
Diego Nijboer

CTO and Co-Founder at WISEPIM, building AI-powered solutions that transform product data management for e-commerce businesses. Over 10 years of experience solving complex technical challenges in e-commerce and PIM systems.

Frequently asked questions

Still have questions?

Can't find the answer you're looking for? Please get in touch with our team.

Contact Support

Run a full audit once or twice a year and a condensed checklist every quarter. Also audit after any event that changes URLs or templates at scale: a platform migration, a new theme, a large catalog import or a change to filters. Stores change faster than most websites, so problems such as duplicate URLs and thin product pages tend to return between audits.

For a store with a few thousand products, expect one to two days for the audit itself if you have Search Console, analytics, a crawler and a product export ready. Large catalogs take longer mainly because of crawl time and filter URLs. Fixing the findings is a separate project, usually spread over several weeks and prioritized by organic revenue.

The essentials are Google Search Console for indexing, performance and Core Web Vitals data, an analytics tool for organic revenue per page, a crawler such as Screaming Frog or Sitebulb, Google's Rich Results Test for structured data and a full product export from your store or PIM. Merchant Center is useful if you sell through Google Shopping.

A technical SEO audit covers crawling, indexing, speed and site structure on any website. An ecommerce SEO audit includes those checks and adds store-specific ones: variant and filter URLs, out-of-stock handling, product structured data, product titles and descriptions, and the completeness of attributes such as brand, GTIN, size and material that product pages depend on.

Not if the product is coming back. Keep temporarily unavailable products live, mark them out of stock in the page and structured data, and link to alternatives. For permanently discontinued products, redirect to a direct successor or the closest category when the page has links or traffic, and return a 404 or 410 when it has neither.

Keep exploring

Hand-picked next steps to go deeper.

Better product data, better results.Get more sales.