E-commerce site structure: categories, products, and the links between
This guide shows how to structure a small to mid sized store so Google can crawl it, pick the right page for each query, and send buyers. You will map categories and products, set URLs, and link them so clicks flow to money pages.
By Théophile Louvart, founder of Porteur · Updated 14 September 2026 · Markdown
The pyramid that decides which page ranks
Your structure is a pyramid: home, categories, subcategories, products. The home links to top categories. Categories link to subcategories and top products. Products link back up with breadcrumbs.
This decides which page ranks for which query. Short, broad searches should match higher nodes. Specific searches should match deeper nodes.
- “trainers” should match /footwear/trainers
- “men’s blue running trainers” should match /footwear/trainers/running, or a filter view if you keep that indexable
- “nike pegasus 40 blue size 10” should match /products/nike-pegasus-40-blue
Plan the tree first. Write the category set on a page. If a node does not help a buyer pick, fold it into the parent. Keep click depth shallow: aim for products at two or three clicks from the home.
URL patterns that scale and stay consistent
Use clean, predictable paths. One URL per product. One canonical category per product. Keep parameters minimal and consistent. As of 2026, this matches Google’s guidance for ecommerce sites.
| Thing | Good | Avoid |
|---|---|---|
| Home | / | /home, /index |
| Category | /footwear/trainers | /c?id=12, /shop?cat=1 |
| Subcategory | /footwear/trainers/running | /footwear?type=running |
| Product | /products/nike-pegasus-40-blue | /p?sku=ABC, /products/sku |
| Product variant with demand | /products/nike-pegasus-40-blue-size-10 | Variant with no page, or many near-duplicates |
| Parameters for sort and filters | ?sort=price-asc used consistently | Multiple aliases: ?s=1, ?order=price, ?sortby=price |
If variants have distinct demand, give them their own URLs. Example: “iphone 14 case clear” can live at /products/iphone-14-case-clear. If not, keep variants on the parent and use a canonical to the parent.
Keep UTM and tracking parameters out of index. They are for analytics, not content. Use the canonical to the clean URL. In Google Search Console, watch for parameter sprawl in the Indexed and Excluded lists.
Categories that earn clicks, not just hold links
Categories are real pages. They target broad and mid tail terms, and help buyers narrow down. Google expects indexable category pages with internal links and breadcrumbs to show site organisation.
- One H1 that names the category: “Men’s running trainers”
- A short intro that says what is in the category and who it suits
- Links to subcategories where they exist
- A list or grid of top products that stay in stock
- Filters for attributes like size, colour, brand
Write a unique intro. Two to three sentences beat a block of filler. Example for /footwear/trainers: “Neutral and stability running trainers for road and trail. Sizes for men and women. Free returns on first fit.”
Keep the product grid evergreen. Do not sort by newest if that buries bestsellers. Consider a Top picks module fed by sales or click data. Link these products by name, not “View”.
Product pages that match specific searches
Each product page should answer the search that names it. Write for the buyer. Manufacturer text alone is duplicate across many stores, which weakens your chance to rank. Add your own copy, images and policies.
- Title tag under about 60 characters, with the model and key attribute
- Unique description that covers fit, use, materials, and care
- Clear price and availability
- Images that show angles and, if relevant, a variant image per colour
- Reviews, marked up as an aggregateRating on the Product
- Shipping, returns, and warranty details
Add structured data Product with offers, price, availability, and reviews. This helps eligibility for rich results across Search, Images, and the Shopping tab. Check theme output and validate with Google’s Rich Results Test and schema.org definitions.
If you run Merchant Center, send a feed for free listings. Keep feed values aligned with the page. Google expects price, availability, and identifiers to match the visible page content.
Pagination that keeps lists crawlable
Large categories need pagination. Each page should have a self-referencing canonical, with links to next and previous pages for users. Do not hide deep pages behind endless scroll without proper links. If you have a stable view-all page that loads quickly, you can canonical to it.
- Keep page size sensible so LCP stays under about 2.5 seconds
- Expose crawlable links to page 2, 3, 4, not just a Load more button
- Carry the same H1 on each page, and vary the title tag with “Page 2” etc
A fixed example: /footwear/trainers shows 24 items. /footwear/trainers?page=2 is linked at the bottom and crawlable. Both pages have “Men’s running trainers” as the H1. Titles are “Men’s running trainers | Page 1” and “Men’s running trainers | Page 2”.
Out of stock, discontinued, and seasonal
Do not 404 a product that will return. Keep the page live, show the status, and mark availability in structured data. Offer alternatives on the page. This keeps rankings and helps buyers.
- Back soon: keep URL, show expected date if you have it, allow email me when back
- Gone for good: 301 to the nearest relevant product, or to the parent category
- Unknown return: keep live for a while, surface close alternatives, then decide
If a line is retired and has no close match, a 410 Gone is valid. Update internal links so you do not send buyers to dead pages. In Search Console, watch for 404 spikes after catalogue changes and fix or redirect them promptly.
How structure ties queries to pages, and avoids cannibalisation
Your structure should make it clear which page owns each intent. Category pages own broad and mid tail. Product pages own exact model searches. A small set of filter views may own brand plus attribute combinations. The home is for brand searches and a few flagship links.
Map queries to URLs
List your top search terms from Search Console. Next to each, write the one page that should rank. If two pages compete, merge or change anchors so one wins.
Fix overlapping content
If /guides/best-running-trainers and /footwear/trainers say the same thing, choose one primary and link the other as a helper, or merge them.
Use anchors that match intent
From /footwear, link to /footwear/trainers with “running trainers”, not “shop now”. From the product page, link to /footwear/trainers/running with “running trainers category”.
Check the Search Console Performance report. If a category URL and several product URLs all get impressions for “men’s running trainers”, your structure blurs intent. Strengthen the category: add more internal links, tighten titles on products to focus on model names, and reduce indexable filter views that muddy the target.
Platform notes: Shopify specifics you can use
Shopify fixes some structure for you. Product URLs are /products/handle. Collections are /collections/handle. You can also see /collections/handle/products/handle, which has a canonical to /products/handle by default. Blogs live at /blogs/name/handle. Static pages are /pages/handle.
- Shopify builds sitemap.xml for you
- You can edit robots.txt since 2021 with robots.txt.liquid
- Set title and description per product and collection in admin
- Set alt text per image
- Most themes ship Product and Breadcrumb structured data, but check it in the code and validate
- Manage redirects in admin under URL redirects
Tag and vendor listing pages often create thin URLs. If they do not help buyers, keep them out of navigation, consider noindex, and block crawl of their parameter forms if needed. Point internal links to collections that you want to rank.
Keep collection pages as the SEO target for broad terms. On product pages, ensure the breadcrumb shows the primary collection you want to rank. Use the built-in canonical unless you split variants into their own pages for demand reasons.
Questions
As few as you can while still helping a buyer choose. Start with a small set of top categories and only add a subcategory when you have stock depth and clear demand. If a category holds only a handful of evergreen products, fold it into the parent.
No. Only a small set of facet combinations with proven search demand should be indexable. Keep the rest out with robots.txt patterns, noindex, or fragments. Canonical filtered pages to the unfiltered category unless a filtered view is a true target page.
Keep variants on one URL when the intent is the same and demand is not distinct. Split into separate URLs when buyers search for the variant explicitly, like colour or device model. When you split, make each page unique with images, stock, and copy, not just a swapped token.
Keep the URL live if the item will return. Show availability, mark it in structured data, and link alternatives. If it is gone for good, 301 to the closest relevant product or the category. Use 410 only when there is no replacement and you have removed links.
Only if it loads quickly and helps users. Google does not use rel next or prev, so each paginated page can be indexable with its own canonical. A view-all can be the canonical target if it performs well and is complete.
Google does not penalise AI assisted writing by itself. The risk is scaled content abuse: producing many near-empty pages at scale to manipulate rankings. Each product page needs useful, unique content that helps buyers decide.
Sources
Check my site, free
Give me one URL and I will check, in about thirty seconds, how your current structure maps to searches and rivals, and show you three findings free.
- Free check, no card
- Read-only, your own accounts
- Readable by your agent
Read next
- GuideE-commerce SEO for a small store: the pages, the data, the structure
- GuideCategory page SEO: the page that ranks for the product type
- GuideProduct page SEO: what a buyer and a crawler need on the page
- GuideFaceted navigation SEO: which filters to index and how to hide the rest
- GuideKeyword cannibalization: two pages, one search, and how to fix it
- GuideInternal linking for a small site: which pages link to which
- GuideSEO for a marketplace: two sides, category pages, and the listings
- GuideHow to build a glossary that earns traffic and links