E-commerce SEO for a small store: the pages, the data, the structure

You want products to show for buyers, not bots. This guide gives you the pages to build, the data to send, and the order to do it for a small store.

By , founder of Porteur · Updated 14 September 2026 · Markdown

Where your products can appear

Your products can show in Search, Images and the Shopping tab. Your store can also show on your Business Profile. You can earn free listings in Merchant Center if you send a feed that matches your pages.

  • Search: titles, descriptions and rich results from Product data.
  • Images: product images with alt text and structured data image properties.
  • Shopping tab: free listings from a Merchant Center feed that matches on-page data.
  • Business Profile: opening hours, phone and links. Useful if you also sell in person.

Aim to match product data across all channels. A price on the feed must match the price on the page. The same for availability and variant details.

The three page kinds a store needs

You need category pages, product pages and utility pages. Each plays a role in crawling, ranking and conversion.

Page typePurposeWhat good looks like
Category, for example /collections/mens-trainersCollect demand and pass users to productsA clear h1, a short intro that sets scope, links to subcategories, links to top products, filters that do not create duplicate indexable URLs, breadcrumbs
Product, for example /products/blue-suede-trainerRank for product-intent queries and convertUnique copy, key specs, price, availability, images per variant, reviews, Product structured data with offers and aggregateRating, related products
Utility, for example /pages/shipping-returnsBuild trust and answer concernsPlain policies, shipping prices, timings, returns. Linked sitewide in header or footer

Build each category as a real page, not only a filter. Put it in the nav and link to it from the homepage and relevant pages. Add breadcrumbs across the site.

Product pages: data, content and rich results

Product pages win when a buyer gets enough detail to decide. Google also needs structured data to qualify for rich results. Keep both in sync.

  • Write a unique description. Do not paste the manufacturer blurb alone. Explain fit, materials, sizing, use and care in your own words.
  • Show price, currency, availability and shipping costs or timelines near the add to cart. Keep this consistent across variants.
  • Add one image per variant. Name files clearly and set alt text, for example alt="Blue suede trainer, size 9".
  • Collect reviews and show an honest average. Use aggregateRating on the product. Do not add self-serving reviews markup on your own organisation page.
  • Mark up with Product structured data. Include offers, availability, price, review and aggregateRating when you have them. Use JSON-LD.

Check your markup in Rich Results Test. Fix all errors. Warnings are optional but often worth addressing, for example missing brand or size attributes if relevant.

On Shopify, most modern themes include Product structured data. Inspect the HTML to confirm. You can override or extend with a template snippet if needed. Titles and descriptions live in the product editor. Redirects are in Settings, URL redirects. Add alt text per image in the media panel. The sitemap.xml is automatic. You can edit robots.txt via robots.txt.liquid if you must block noisy tag or vendor URLs.

Merchant Center feed and free listings

Free listings on the Shopping tab come from a Merchant Center feed. Send the same data you show on the page. Mismatches can disqualify items.

  1. Prepare identifiers

    Use GTINs where you have them, or MPN plus brand. Set correct condition and availability for each SKU.

  2. Map variants

    Each purchasable variant needs its own item in the feed with the same URL and variant attributes. Include colour, size or material where relevant.

  3. Align price and availability

    Make stock status and price match the product page and structured data. Update the feed as stock changes.

  4. Submit and monitor

    Set up Merchant Center and submit the feed. Fix item-level errors. Keep shipping and returns policies accurate and visible on-site.

If you use a platform app, review the mapping. Check a sample item in Merchant Center against /products/handle to confirm parity on price, sale_price, availability and image_link.

URL structure and variants

Keep one primary URL per product. Handle variants with care. Only give a variant its own indexable URL when people search for it by name or attribute.

  • One product URL, for example /products/blue-suede-trainer. Variants, for example size or colour, can share the product URL with a selected state.
  • If a variant has demand, for example “blue suede trainer size 9”, you can give it a stable URL and index it. If not, keep it non-indexable and canonical to the parent.
  • Keep parameters minimal and consistent. If you use ?size=9, use that one form everywhere. Avoid multiple parameter names for the same thing.
  • Set the canonical to the parent product URL from each variant when variants are not meant to rank alone.

On Shopify, product URLs live at /products/handle. Collection variant URLs like /collections/mens-trainers/products/blue-suede-trainer canonical to /products/blue-suede-trainer by default. Leave that in place. It avoids duplicate content between collection and product paths. Tags and vendor pages can create thin lists, usually better kept out of the index.

Facets and pagination without index bloat

Filters create many URLs. Let only useful combinations get indexed. Keep the rest crawlable only if needed for users, not for discovery. Avoid infinite combinations.

  • Keep the canonical on the unfiltered category page, for example /collections/mens-trainers.
  • Allow indexing of a small set of facet URLs that map to real demand, for example /collections/mens-trainers?brand=acme if you see searches for “mens acme trainers”.
  • Block the rest from crawling with robots.txt disallow rules that target parameter patterns, or add noindex. Use fragments, for example #size=9, only for facets that must not be crawled at all.
  • Rel next and prev are not used by Google since 2019. Give each paginated page its own canonical, or offer a view-all page if it loads fast enough. Link pages clearly with numbered pagination.

A fixed category looks like /collections/mens-trainers with an h1, a short intro, links to top subcategories, and a grid of bestsellers. Filters exist, but only the few with demand are indexable and linked.

Out of stock, discontinued and seasonal

Do not 404 a product that will return. Keep the page live. Mark availability in structured data. Offer alternatives on the page. Let shoppers sign up for stock alerts if you support that.

  • Temporary out of stock: keep the URL, show the status and expected return window if you know it. Keep internal links.
  • Gone for good: 301 redirect to the closest alternative product or to the parent category. If there is no close match, 410 is valid.
  • Seasonal: keep the page live year round if it earns links or has history. Clarify next availability. Hide from nav when not in season but keep it crawlable.

This protects any rankings and links the product earned. It also avoids soft 404s from weak replacements that do not match intent.

Images, reviews and snippets that help buyers

Images sell. Reviews reassure. Both can make your result stand out if you implement them cleanly and avoid spammy patterns.

  • Upload large, sharp images. Provide one per variant. Use descriptive alt text.
  • Use the image field in Product structured data. Point to the main product images that match the page content.
  • Show real reviews. Mark up aggregateRating on the product, not on list pages or your organisation page. Do not invent ratings.

Speed that meets Core Web Vitals

A slow store bleeds clicks and revenue. Aim for LCP under 2.5 seconds, CLS under 0.1 and INP under 200 ms. Test on mobile first, as Google does.

  • Optimise the hero image on /products/handle and /collections/handle. Compress and serve modern formats.
  • Lazy load below-the-fold images. Preload the main product image and key font files.
  • Trim third-party scripts. Remove unused apps. Defer non-critical JS and CSS. Keep the cart and analytics, but question every widget.
  • Use the Search Console Core Web Vitals report to see which templates fail. Fix shared issues at the theme level so every product benefits.

The order of work for a 200 product store

Ship the highest gain changes first. Work template by template so fixes scale across products and categories. Keep a weekly loop with Search Console.

  1. Fix discoverability and structure

    Check your sitemap.xml exists and is linked in robots.txt. Ensure categories are linked from the homepage and each has a unique h1 and intro. Add breadcrumbs.

  2. Stabilise URLs and canonicals

    Confirm one URL per product. Keep Shopify’s canonical from collection-product to product. Set canonicals from non-indexable variants to the parent.

  3. Implement Product structured data

    Add offers, price, availability, reviews and aggregateRating. Test with Rich Results Test. Roll out in the theme so all products get it.

  4. Submit a clean feed

    Set up Merchant Center. Map variants correctly. Align price and availability with the page and markup. Fix disapprovals.

  5. Tighten facets and pagination

    List the few facet combinations with demand and allow them to be indexed. Disallow noisy parameters in robots.txt. Set pagination without rel next or prev.

  6. Write or improve 50 product pages

    Start with top sellers. Replace manufacturer text with unique copy. Add variant images and alt text. Add FAQs if buyers ask the same things.

  7. Tune category pages

    Add a short intro. Link to top subcategories and top products. Remove indexable duplicates created by filters.

  8. Improve speed

    Compress images. Lazy load below-the-fold. Remove slow apps. Measure LCP, CLS and INP by template and iterate.

  9. Add internal links

    From blog guides to categories and products, for example from /guides/getting-started to /collections/mens-trainers and /products/blue-suede-trainer.

  10. Monitor and expand

    Use the Search Console Performance report. Find queries where you are close to page one. Improve those pages and consider variant URLs where demand exists.

Questions

Sources

Check my site, free

Want a fast read on your store’s pages, searches and rivals from a URL in about thirty seconds, free, with three findings shown whole? Try Porteur’s check.

  • Free check, no card
  • Read-only, your own accounts
  • Readable by your agent

Read next