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 indexed | Thin product pages, often with a copied supplier description and no attributes |
|---|---|
| Discovered - currently not indexed | Google knows the URL but has not crawled it yet, common when filter URLs eat crawl capacity |
| Duplicate without user-selected canonical | Variant URLs, collection paths or parameter URLs without a canonical tag |
| Duplicate, Google chose different canonical than user | Your 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 404 | Pages that look empty to Google, such as sold-out products with no content or categories with zero items |
| Page with redirect | Fine when intended, a problem when the sitemap still lists them |
| URL marked 'noindex' | Fine when intended, a problem when the sitemap still lists them |
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
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.
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:
- 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.
- 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.
- 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
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.

