The Reach Bureau

Technical SEO for Ecommerce: Structured Data and the Layer Beneath It

Technical SEO for ecommerce stores

Technical SEO on an ecommerce site is not a checklist of two hundred items. It is four decisions that everything else depends on, and structured data is the one with the clearest rules and the widest gap between stores that get it right and stores that do not.

The reason it matters more here than on other site types is scale. A blog has fifty pages and a person who reviews them. A store has five thousand URLs generated by a template, filters that multiply them, and products that appear and disappear on their own. Every mistake is systematic, and every fix is a multiplier.

This is the working order: markup, crawl control, indexation, speed. Do them in that order and the rest of technical SEO becomes maintenance.

1. Structured data: what your listing is allowed to show

Structured data is not a ranking factor. It decides eligibility — whether your result can display price, availability and rating, or whether it appears as a plain blue link next to a competitor's rich one.

Per Google's Product structured data documentation, three constraints matter most:

  • Only pages where a shopper can actually buy are eligible for merchant listing experiences. Pages linking out to other sellers do not qualify.
  • Product rich results support pages focused on a single product or multiple variants of the same product — so a category page is not eligible, and marking one up as a product is a misuse.
  • Put the markup in the initial HTML. Google's merchant listing guidance states that dynamically generated markup makes shopping crawls less frequent and less reliable — which matters most for the fields that change, price and availability.

That last point is the one that catches headless and JavaScript-heavy builds. Verify what the crawler receives, not what the browser renders.

The ecommerce structured data stack: what each type carries and which of them stores usually skip

The stack worth implementing:

MarkupWhat it enablesCommonly skipped?
Product + OfferPrice, currency, availabilityNo — usually present
AggregateRating / ReviewStar ratings on the listingSometimes
ProductGroup + variantCorrect handling of size and colourYes
MerchantReturnPolicyReturn terms in shopping surfacesYes
ShippingServiceShipping cost and delivery estimateYes
BreadcrumbListPath shown instead of a raw URLOften broken

Return and shipping markup are the most underused and the most valuable, because they answer the two objections that stop a purchase. Google documents both — return policy and shipping policy — as separate types.

On WooCommerce, most SEO plugins emit a basic Product block and nothing else. Check the output rather than trusting the checkbox.

2. Crawl control: filters, parameters and the URL explosion

A store with five filters can generate tens of thousands of URLs. Left alone they consume crawl budget, compete with each other, and bury the pages you care about.

The approach is deliberate selection, not blanket rules:

  • Index the filtered views with real search demand — "waterproof", "wide fit". Give each a unique title and a line of unique copy. It is a subcategory in everything but name.
  • Canonicalise everything else to the parent: colour, size, price band, sort order, and any multi-filter combination.
  • Keep non-indexed combinations out of the sitemap — and, critically, out of navigation. If crawlers can reach them through links they will, whatever the canonical says.
  • Paginated pages stay indexable and self-canonical. Canonicalising page 2 to page 1 hides everything past the first screen.

3. Indexation: what is in the index that should not be

Most stores have never audited this, and it is where the quick wins hide.

Common junk that ends up indexed: staging URLs, sample-page, auto-generated author and date archives, thank-you and cart pages, /collections/all-style catch-alls, and old campaign URLs nobody retired.

The check: compare your sitemap against what is actually indexed. Anything indexed that is not in the sitemap deserves a decision — index it deliberately, noindex it, or redirect it.

Out-of-stock and discontinued products belong in this section because deleting them is the most expensive routine mistake in ecommerce:

SituationHandling
Temporarily out of stockKeep live and indexed, mark OutOfStock, offer alternatives
Discontinued, replacement exists301 to the replacement product
Discontinued, no replacement301 to the parent category, never the homepage
SeasonalKeep live year-round; it accumulates authority between seasons

4. Speed: where ecommerce sites lose it

Ecommerce pages are image-heavy and template-driven, so they fail Core Web Vitals in predictable ways.

  • Never lazy-load the main product image or the first row of a category grid. That element is usually the Largest Contentful Paint, and lazy-loading it directly damages the metric it is measured by.
  • Serve modern formats (WebP or AVIF) at correctly sized variants. A full-size hero scaled down in CSS wastes bandwidth on the connection least able to spare it.
  • Set explicit image dimensions so the layout does not shift as images load.
  • Watch the plugin tax. Every plugin adds queries and assets. On a page-generation profile, plugins are frequently a larger cost than the theme.
  • Check uncached page generation, not just cached response time. Page caching hides a slow backend from most visitors, but not from the first visitor after a purge, and not from crawlers hitting new URLs.
Where to look when an ecommerce site is slow: cached response time hides the real generation cost

The audit sequence

Run in this order. Each step makes the next one easier to interpret.

1. Fetch a product page as a crawler and confirm the structured data is in the returned HTML. 2. Validate the markup and note which of the six types are missing. 3. Compare sitemap against indexed URLs and list anything indexed that should not be. 4. Crawl the site and count URLs generated by filters and parameters. 5. Check the out-of-stock policy on a handful of discontinued products. 6. Measure cached and uncached response time separately on the same URL. 7. Run Core Web Vitals on a product page and a category page, on mobile.

The checklist

  • Product + Offer markup present with price and availability
  • Markup in the initial HTML, verified as the crawler receives it
  • Variant markup implemented where variants exist
  • Return and shipping markup implemented
  • Rating markup only where real reviews exist
  • BreadcrumbList present and valid
  • No product markup on category pages
  • Demand-backed filtered views indexed with unique titles
  • Colour, size, price and sort parameters canonicalised to the parent
  • Non-indexed combinations absent from sitemap and navigation
  • Paginated pages indexable and self-canonical
  • Indexed-but-not-in-sitemap URLs reviewed and decided
  • Out-of-stock and discontinued policy defined and applied
  • Main product image and first grid row not lazy-loaded
  • Modern image formats with explicit dimensions
  • Uncached generation time measured, not just cached response

Sources

Frequently Asked Questions

The infrastructure layer that decides whether your pages can be crawled, indexed, and displayed properly: structured data, crawl control over filters and parameters, indexation hygiene, and speed. It matters more on a store than a blog because every mistake is generated by a template and repeated across thousands of URLs.
Not directly. It determines eligibility for merchant listing experiences — price, availability and ratings shown in the result. That changes click-through rate substantially, which is the mechanism by which it affects performance.
Variant markup, return policy and shipping policy — and `BreadcrumbList` is frequently present but invalid. Return and shipping are the most valuable of those, because they answer the two objections that most often stop a purchase.
Index only the filtered views with genuine search demand, each with a unique title and a line of unique copy. Canonicalise colour, size, price band, sort order and multi-filter combinations to the parent, keep them out of the sitemap, and do not link to them from navigation.
Redirect them — to the closest replacement product, or to the parent category if none exists. Never let them 404. If the product is only temporarily unavailable, keep the page live and indexed with availability marked as out of stock.
Because page caching hides backend generation time. A cached page can return in half a second while the underlying generation takes several seconds — which is what the first visitor after a cache purge, and any crawler hitting a new URL, actually experiences. Measure both separately.

Want this run against your store? Book a call with The Reach Bureau.

Share with AI

One-minute takeaway Summarize Explain like I'm a kid

Share this article

LinkedIn X Facebook Pinterest Email

Related articles

View all articles

Ready to scale your e-commerce?

Let's discuss your project and how we can help you achieve your growth goals.

Book a discovery call
Book a call with me, here is my schedule →